恭喜,你发布的帖子
发布于 2017-05-09 09:05:44
10楼
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干不了别的事。而梯形图是每个扫描周期只花“一点点”时间来完成同样的任务。
这个LAD和while完全没有关系好不好。
高级语言如果陷入死循环同样会有问题。只不过人家是多线程的话,其中一个死了,别的可能还会有响应。
请填写推广理由:
分享
只看
楼主