最近在读一个程序,它在一个独立功能块里,具体语句如下:
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