恭喜,你发布的帖子
发布于 2017-05-09 08:07:34
8楼
PLC因为是操作系统循环调用用户程序,所以有超时的问题。高级语言中的WHILE和REPEAT则不存在这个问题。用看门狗解决不了问题。
这两条指令和FOR指令不是一回事。For指令循环一万次也要不了多少时间。而WHILE和REPEAT指令可能延长任意长的时间。
下面是SCL语言使用WHILE指令的例子:
WHILE MW10<>MW14 DO
MW30 := 20;
END_WHILE;
只要MW10和MW14的值不相等,就会执行DO后面的指令。二者相等时,程序将从END_WHILE后继续执行。
其实上述要求可以用下面的梯形图程序来实现。
MW10和MW14的值不相等时执行DO后面的指令,SCL程序是在一个扫描周期内完成的,CPU干不了别的事。而梯形图是每个扫描周期只花“一点点”时间来完成同样的任务。
个人认为 上面梯形图 转换为 SCL应该是
IF %MW10<>%MW14 THEN
%MW30 := 20;
END_IF;
并不是 WHILE 循环语句。
还有个问题 想请教下 廖老师
STL中的
A M0.0
S M0.1
如果 用SCL 来编写 怎么写?
IF M0.0 THEN
M0.1:=True;
END_IF;
上面编译完成后,在CPU 里执行 是不是 以下面类似代码来执行的吗?
A M0.0
JCN _M01
S M0.1
_M01:NOP 0
请填写推广理由:
分享
只看
楼主