请教关于BEC指令使用的小疑问

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这一指令,参考一下我的附图

图片说明:

请教关于BEC指令使用的小疑问  

提问者对于答案的评价:
谢谢大师解答,大家都回答的很好,看文档注释的时候确实需要细细的思考。

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

(2)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月26日
下一篇 2017年8月26日

相关推荐