西门子stl指令表?(西门子STL指令)
西门子STL指令
set 将rlo置1
save 将rlo的值保存到br中。
目的:stl编写必须对br位进行管理。
西门子stl编程手册上明确说明,请仔细阅读。
西门子PLC中的STL和SCL指令
STL有点类似汇编语言,和机器码对应,无论哪种语言写的PLC程序都可以转换成STL查看,所以掌握基本的STL指令和语法是很有帮助的。另外STL直接操作寄存器,实现同样功能时可以减少运算量和寄存器调用次数,并且只关心数据类型的长度(例如不区分int和word),减少了数据类型转换,总的来说执行效率高,但实现复杂运算和逻辑时编程繁琐。
SCL类似于高级语言Pascal、C之类,可以通过简单的语句实现复杂的功能,逻辑清晰,在复杂数据类型的处理上也非常方便,虽然理论上执行效率比STL低,但实际一般不会有明显的影响。
另外,在同一个FC或FB中,STL可以和梯形图混合使用,而SCL编写的FC或FB不能混合其他语言
西门子STL指令
举例说明
A M0.0
=Q0.0
如果M0.0=OFF 则 ROL=OFF 那么 Q0.0=ROL=OFF
如果M0.0=ON 则 ROL=ON 那么Q0.0=ROL=ON
西门子plc 的STL语言求解
读取:DB1.DBD4
赋值给:#TEMP3(这个是临时变量,只在该块有效,且无法跳转)
调用:"TIME_TCK"
RET_VAL:=DB1.DBD4 (意思就是"TIME_TCK" 块有个引脚是RET_VAL,把DB1.DBD4赋值给这个引脚,这个块可以使系统块,也可以是自己写的)
读取:DB1.DBD 4
读取: #TEMP3
执行双整数相减指令(就是DB1.DBD 4减去 #TEMP3 )
读取:T#0MS
<D (执行双整数小于比较指令)
JC M003(如果上一步的结果是1,执行跳转指令跳转到标签M003处,如果不是1,继续往下走)
TAK (前边两个读取结果分别赋值给了两个寄存器,执行数据互换)
T DB1.DBW 8(赋值给DB1.DBW8)
DTR (双整转换为实数,也叫浮点数)
L 1.000000e+003(读取常量1000.0)
/R (执行实数相除指令)
T DB1.DBD 10(赋值给DB1.DBD 10)
M003: NOP 0(JC M003那一步如果执行了的话就跳到这里,然后这一步的命令是啥也不执行)