主程序:NET 1 LD SM0.0
TON T37,30
NET2 LD SM0.0
CALL SBR_0:SBR
NET3 LD T37
R M0.0 , 1
NET4 LD M0.0
= Q0.0
子程序:NET1 LD T37
MOV_B 1 , MB0
此程序Q0.0没有输出。
如果把主程序中的 NET3 LD T37
R M0.0 , 1
放在NET4后面,Q0.0就有输出?
最佳答案
还是程序执行的顺序的问题!
当程序这样执行时:
主程序:
NET 1 LD SM0.0
TON T37,30
NET2 LD SM0.0
CALL SBR_0:SBR
(调转执行子程序,结果:MB0=1,也就是 M0.0 =ON。执行完子程序,在执行下面的程序)
NET3 LD T37
R M0.0 , 1 (此处把M0.0 复位,也就是 M0.0=OFF)
NET4 LD M0.0 (M0.0= OFF, Q0.0 =OFF)
= Q0.0
子程序:
NET1 LD T37
MOV_B 1 , MB0
如果这样执行:
主程序:
NET 1 LD SM0.0
TON T37,30
NET2 LD SM0.0
CALL SBR_0:SBR
(调转执行子程序,结果:MB0=1,也就是 M0.0 =ON。执行完子程序,在执行下面的程序)
NET3 LD M0.0 (M0.0= ON, Q0.0 =ON)
= Q0.0
NET4 LD T37
R M0.0 , 1 (此处把M0.0 复位,也就是 M0.0=OFF)
子程序:
NET1 LD T37
MOV_B 1 , MB0
提问者对于答案的评价:
您的解释非常好,谢谢!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc358707.html