工程师在调试过程中有时候总是觉得,明明逻辑很正确,但是程序就是不执行,比如脉冲信号收不到,后面的动作就无法执行中断了,但是脉冲明明发出去了啊!抓狂ing。。。,不得已每个脉冲信号后面都加一个延时断开的信号,来延长脉冲为1的宽度。

这个工程师也许就是没掌握怎么调整运行组,我们看下面的例子:

图片里的7号”OR“功能块,看似M20.0=1后只要一个周期OR的输出就能为状态1,但实际上。需要5个周期后,假设在OB32(1000ms扫描周期)里,也就是说5s后,7号OR才能输出1。原因仅仅是因为我在运行组调整了它的扫描顺序。第一周期内先读7号,7号OR的两个输入接口此时都为0,依次往上扫描到3号OR,3号OR输出为1,第2周4号OR为1...依次类推。
其中图中功能块绿色区域的1/1,1/2就是OB32第一运行组的第一要扫描的块,第2个要扫描的块(TEST为OB32的第一个运行组):
双击功能块的OB32处字样就进入了运行组运行组显示了扫描的顺序,7,6,5,4,3这样

运行组 “OB32/TEST”

而实际上工程师需要的顺序是34567这样才能保证M20.0=1的时候,该扫描周期内7号”OR“功能块才会输出1。
提示:在很多时候我们都需要注意扫描顺序,因为平时拖拽BLOCK时,想要大家都不会右击上图高亮绿色的地方,选择下个功能块的插入位置。(右击试试,实际操作下看看,体会下这个功能)
在做通讯如MODBUS,TCP的PUT GET等,都是脉冲的DONE和ERROR以及NDR状态位,只有一个周期,如果发生上述错误,而你不清楚什么是运行组,你就会抓狂ing...