当前位置: 主页 > PLC控制

关于STL程序求解!!!

L#IN2
T#IN
A7d1:TAR2LD2
UC"TIME_TCK"
P#L6.0
LAR2LD2
LLD6
T#IN3
想问为什么要用TAR2和LAR2,还有UC"TIME_TCK"这个是调取系统时间?求详解!!!

L#IN4
LT#0MS
=L0.2
<D
OL0.2
JCNA7d5
想问这段里面=L0.2是把那个结果赋值给L0.2了?其中<D是比较IN4和T#0MS的大小吗?

STL教程!!!!

非常感谢!!!非常非常感谢!!!

最佳答案

1、想问为什么要用TAR2和LAR2,还有UC"TIME_TCK"这个是调取系统时间?
、首先要清楚在CALLfb时,为了方便背景数据块参数的寻址,系统自动使用AR2寄存器,AR2寄存器指向背景数据块的首地址P#DBX0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在FB里使用AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值
确切的说,FB里的变量调用时将根据AR2的值当作偏移量与背景数据块是一一对应。
、使用UC调用时不能分配一个数据块·,FB的输入输出参数的附值很自由,可以在程序的任何地方书写,没有条条框框的限制,而CALL就不同了,他给出了书写参数的位置。、FB的数据参数传递是通过数据块来传递的,UC和CALL的区别还有,UC可以通过AR2修改FB参数与背景数据块的对应关系。而CALL指令是不行的。通过改变AR2的值使得对应关系产生偏移。
、总之,在执行"TIME_TCK"程序中系统用到了AR2。所以,在你的程序中应用了TAR2和LAR2指令,先将AR2保存,在调用"TIME_TCK"程序后再恢复。
2、问这段里面的=L0.2是把那个结果赋值给L0.2了?其中<D是比较IN4和T#0MS的大小吗?
程序应该为:
L#IN4
LT#0MS
<D//#IN4与T#0MS进行双字长数据的比较
=L0.2//如果#IN4小于T#0MS,则L0.2置位
OL0.2
JCNA7d5

提问者对于答案的评价:
谢谢,解释很清楚!除了STL编程手册外,自学STL编程有没有好的资料推荐?

  • 关注微信

猜你喜欢

微信公众号