STL 的一个程序

最近在读一个程序,它在一个独立功能块里,具体语句如下:
       AN    "g_bTimerEnd"
       NOP   0
       S     "g_bTimerSet"
       R     "g_bTimerReset"
       A     "g_bTimerSet"
       L     S5T#10MS                    //10毫秒

       SD    "Timer1"
       A     "g_bTimerReset"
       R     "Timer1"
       NOP   0
       NOP   0
       A     "Timer1"
       =     "g_bTimerEnd"

       A     "g_bTimerEnd"
       JC    Run0                        //如果定时器时间到则跳转

       R     "g_bTimerSet"
       S     "g_bTimerReset"
       SAVE                              //如果定时器时间没到则退出模块
       BEU   

 Run0: R     "g_bTimerSet"
       S     "g_bTimerReset"
 我不明白的是,这如果是个简单的延时程序,为什么时间没到它就要退出模块呢?
 还有我发现STL中好多NOP语句,这些NOP空语句具体作用是啥啊?能不能删掉呢
 这个程序是在fc块中,我看ob块中直接对其调用了,发现其他fc块也没有对其使用,那这个fc块功能是啥呢?谢谢大虾们了

最佳答案

nop是空指令,可以删。但这可能会影响STL和功能图或者梯形图之间的显示切换。
 程序在定时器时间到或者没有到的时候执行的语句都是一样的
       R     "g_bTimerSet"
       S     "g_bTimerReset"
 唯一的差别在如果定时器没有到的话,除了执行上面两句指令,还有一个SAVE,就是将RLO位状态保存到了BR位。
 从定时器的时间设定来说,也很小,只有10MS,推测这可能用于计算程序运行时间的一个FC,如果程序运行时间不超过10MS,那么BR位置1,这样让FC的ENO位置1,用于功能的级联。

提问者对于答案的评价:
不错

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午3:14
下一篇 2020年11月1日 下午3:14

相关推荐