如图,本意是每随着M0.0接通一次,工作状态M0.3到M0.6依次循环(M0.3在其他地方赋初值置1).
但实际运行中M0.0接通后,所有语句都运行了一遍,所以一个周期后还是M0.3为1保持着.
我不明白为什么其他语句在一个周期能运行呢?比如说第一次M0.0接通后,程序扫描第19程序段,但M0.4不是应该等本周期结束的刷新阶段才会接通吗?那还在扫描第20程序段时候,M0.4还不是1,程序怎么可能把M0.5去置1呢?以下语句也是同样的怎么会成立呢?
我现在进了牛角尖了,求高手把我拉出来,谢谢!!!
图片说明:
最佳答案
执行程序是从左至右,从上到下扫描的。一个扫描周期把所有的程序都执行一遍,条件满足的就会有输出,条件不满足的输出不受控制。
你的M0.0接通后,网络18至网络22都被执行了一次。按照上面的扫描顺序,最终是M0.3为1,其他的仍然为0,因为都被复位了,只有M0.3在最后置位了。但M0.4至M0.6有接通的瞬时。
提问者对于答案的评价:
我是把M点错当成输出刷新阶段才会刷新了,才写出这段错误程序。 其实大家都回答了在一个周期所有语句都执行了,但估计大家都没想到我会把立刻刷新的M点理解成需要在周期末尾才刷新,因为我的问题中问了M0.4不是本周期结束的刷新阶段才刷新吗,所以所有答案并没有完美指出我为什么会理解不了一个周期内程序都能执行。 但所有答案里面您最接近真相,分给您了.
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc226960.html