BEC为有条件程序结束,如果RLO = 1,则BEC 中断当前块中的程序扫描,如果RLO = 0,则不执行BEC。RLO被设为1,程序扫描继续执行BEC之后的指令。
但是我看到两个实例,有点疑问。示例如下:
A M 1.1
BEC
= M 1.2
如果M1.1=0,则跳过BEC执行= M1.2,此时RLO=1,所以M1.2=1
但是我看到西门子帮助文档里的例程,发现了个小问题,然后我糊涂了。
A I 1.0 //更新RLO。
BEC //如果RLO = 1,则结束块。
L IW4 //如果未执行BEC,则从此处继续,RLO = 0。
T MW10
为什么这里未执行BEC,而RLO=0呢?不是应该RLO=1的么?应该怎么理解?真心求教。
问题补充:
weiyt大师,从例程来看,如果I1.0=0,则RLO=0,此时就不执行BEC,执行指令 L IW4。但是执行 L IW4的时候RLO的值应该是1的吧(因为跳过BEC时会将RLO置位)。这样理解就对了吧?
最佳答案
首先要看RLO原来的值是多少,再经过逻辑运算得到的RLO是0,还是1,决定是否执行BEC。
A I 1.0 //更新RLO。
BEC //如果RLO = 1,则结束块。
L IW4 //如果未执行BEC,则从此处继续,RLO = 0。
T MW10
为什么这里未执行BEC,而RLO=0呢?I1.0为0时,RLO为0
不是应该RLO=1的么?为1则I1.0肯定为1,执行BEC就结束了,不会执行下面的L IW4了呀
补充:
你的理解是对的,如果I1.0为0,则RLO=0,不执行BEC;但是无论BEC的前面指令的RLO是0还是1,BEC的RLO始终是1,所以BEC指令后面的指令,RLO自动是为1了,所以就会执行L IW4这一指令,参考一下我的附图
图片说明:
提问者对于答案的评价:
谢谢大师解答,大家都回答的很好,看文档注释的时候确实需要细细的思考。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc198249.html