LOOP循环的应用

如何控制LOOP循环的节拍?比如能否在循环间设置条件,让指针移动只有在某个位为true的时候才执行?为此想起另外一个问题,如果可以设置条件,那是否相当于程序一直停在LOOP间,不去扫描其他程序了,会不会有问题?
我刚入门写的这一段简单的程序,为什么LOOP次数只回减到1,而不是0,因此导致循环出不来。。。

问题补充:
我是新建项目,单独学习使用LOOP和地址寄存器,M50.0只有在这里被应用。另外那两个位也是只有在此应用。所以,我的循环次数一直是1,而且M50.0一直没有被置位过,很不理解。

图片说明:

LOOP循环的应用    LOOP循环的应用   

最佳答案

看你的描述,感觉你要实现的功能该是用一个定时中断程序,而非是LOOP循环。LOOP循环是在一个扫描周期内完成的,若循环出现问题可能导致超时故障,也就是你担心的问题。你的程序监控LOOP次数只减到1,而不是0,累加数值一直增大,其实并非循环出不来的问题,而是整个PLC程序是一直在循环执行,每次扫描一遍,你这段循环程序就执行10次,监控LOOP次数看是只减到1,其实是PLC程序执行扫描远快于监控刷新,导致看不到数值的实际变化。
关于m50.0未置位的问题:
使用“置位”指令将指定操作数的信号状态置位为“1”。只有在当前的逻辑运算结果 (RLO) 为“1”时,才执行该指令。 执行该指令后,将指定操作数将置位为“1”。 如果当前 RLO 为“0”,则指定操作数的信号状态保持不变。

提问者对于答案的评价:
可以在循环期间做延时指令吗? 您能否帮忙仿真看看,我自己 仿真了是不行,延时指令没有作用。不知道是我编程问题还是LOOP指令的特点决定的。 我是想试出有什么办法可以干涉循环的进行。即便干涉了以后会出现超时报警,也想仿真出这么一段程序看看。 你的回答对我有帮助的,如果可以,也期待您帮我再仿真看看,解释我的问题。谢谢:)

最佳答案作者回复:
你想干涉循环进行,可以在L “Tag_8”、LOOP A001这两句程序前加上L 10、T “Tag_8”这两句试试,这样的结果就是循环出不来了,导致停机。延时指令与系统扫描和时钟脉冲有关,用在循环内部不合适。另外你用原来图1的程序,仿真运行,把M50.1置位,会看到M50.0的状态变化。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc196884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月24日 上午3:30
下一篇 2017年8月24日 上午3:30

相关推荐