恭喜,你发布的帖子
发布于 2015-08-19 13:01:58
14楼
感谢西门子终于更新了文本编辑器,这下发帖的欲望更强了 ,如果再能加入一些表情符号就更美妙了!
我想这个论题是前阶段“STL是否会被淘汰”的延续吧,在PORTAL平台下我恐怕西门子在文本编程的语言是要主推SCL了吧(PORTAL平台下的SCL 更加国际化了,况且 SCL有一个其他语言一直没有的优势---方便移植到各大自动化厂家产品中去),但是STL 个人认为不会被淘汰,但可能在文本编程这一块会被边缘化,因为不少厂家的通常的编程语言只有LAD,FBD,ST(结构文本)而西门子多了指令表(STL).
这些天看了SCL 编程方面的东西和STEP7 V5下的还是变化了不少,
1:首先最明显的就是在PORTAL平台下的FB,FC的形参不需要自己手动键入代码来实现声明和初始化了。指令比STEP7 V5下丰富了很多。输入有了智能提示。在STEP7 V5 的平台下SCL编辑器就是一个纯文本编辑器吧。还有其他很多变化,大家可以自己查看PORTAL和STP7 平台下的SCL编程手册来查看有那些区别吧,我就不多说了,当然目前 来说水平也不够。。。。。。。。
2:TIA +S7300/400 于STEP7 V5 下 并没有很大差别 但是如果TIA+S7-1500 区别就大了,首先在S7-1500 PLC 平台下多了几个新的数据类型(VARIANT,DB_ANY)这些新类型与S7-1500间接寻址密切相关,相关指令如下
VARIANT_TO_DB_ANY:变体类型转换为DB
DB_ANY_TO_VARIANT:DB转换为变体类型
和变体类型以及间接寻址相关的指令主要有
MOVE_BLK_VARIANT
PEEK/ POKE
其余和变体类型相关的指令如下(部分仅在STL 下能用)
拿 DB块里的数据间接寻址来说,如果是对一个数组 进行间接寻址那么使用方法还是和S7300/400类似的 DBx.MyArrary[idx],如果对DB块号码和DB里的某个内存进行寻址那么S7-1500中和S7-300/400 相差大了。首先原先的WORD_TO_BLOCK_DB,BLOCK_DB_TO_WORD,已经被VARIANT_TO_DB_ANY 和DB_ANY_TO_VARIANT所取代。
IF tmpMin>=DWORD_TO_REAL(WORD_TO_BLOCK_DB(tmpPointer.DBNO).DD[tmpAddr+tmpIndex*4]) THEN
tmpMin:=DWORD_TO_REAL(WORD_TO_BLOCK_DB(tmpPointer.DBNO).DD[tmpAddr+tmpIndex*4]);
END_IF;
现在只能 这样用PEEK./POKE间接寻址了(不知道是不是有其他的方法,我觉得PEEK/POKE 用起来没有STEP7V5+S7300/400 平台下来的方便)
在TIA 中间接寻址S7-300/400 与S7-1500是有所不同的,见下表。
关于间接寻址的要说的东西太多了,大家还是好好看看那12000多页的手册吧!
3:SCL有自己独特的优点,尤其在TIA 平台下越来越标准化了,更新了许多IEC 的相关指令,这样对于 不同控制器厂家的程序移植提供了便利。SCL语言在数据处理方面有着独特的优势,另外在运动控制编程方面也很不错,在S7-SCOUT 平台下的编程就是以类SCL语言为主。SCL在博涂平台下前途无限啊!
下面看西门子SCL语言下上升沿检测指令就
"R_TRIG_DB"(CLK := "TagIn",
Q => "TagOut");
再看GE PACSYSTEM 的ST语言的上升沿指令
这样我在移植的时只需要变量名称建立的一样,我就仅仅把“”去掉其余不做任何修改把西门子的程序移植到GE PLC中,
最后,我想问下S7-1500的断点调试功能哪里去了?
SCL它能让我们PLC程序员在调试PLC时能享受到和在VS中调试程序差不多的断点调试功能(STL的断点调试实在不习惯,对SCL的断点单步调试很是喜欢非常实用)
请填写推广理由:
分享
只看
楼主