程序执行顺序

主程序: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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午10:36
下一篇 2021年7月5日 上午10:36

相关推荐

发表回复

登录后才能评论