语句表编程SET的用法求教

A     DBX    0.1
      A     DBX    0.7
      JCN   M001
      L     #IN2
      T     DBD   20
      SET   
      R     DBX    0.1
M001: NOP   0
上面的程序,为什么在SET后面加一个复位R,看不懂请大侠指教。

问题补充:
看了几位的回答还是有点迷糊,能运算到这一步DBX0.1必定为1,感觉没有必要再加SET.另外,抛开这段程序,如果要复位的位为1则R运算,如果不为1,则R不运算,为吗非要先置位再复位?

最佳答案

我和20120817的观点一样,西门子帮助文件中是这样说的:
R (reset bit) places a "0" in the addressed bit if RLO = 1 and master control relay MCR = 1
也就是说只有当RLO和MCR位同时为1时才将目标地址置为0,所以加SET的目的是为了让RLO位为1.。
单就从这段程序上讲,加不加都不影响最终的执行效果,因为在执行JCN   M001这条语句时已经对RLO进行了判断,RLO=1则继续往下执行, L #IN2和T   DBD   20不影响RLO位的状态,即便没有SET语句一样可以实现复位。
楼主可以用这样一段程序理解下SET SAVE CLR这样三条指令(可以转换成LAD):  
      L     #temp1
      T     DBD   20
      SET   
      SAVE  
      CLR   
      A     BR
      R     DBX    0.1
仅仅是个例子,是用LAD编写后转换成STL的,这样就能很好的理解SET的作用了。

提问者对于答案的评价:
谢谢!其它几位写的都对我理解有帮助,最后你做了下总结。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午9:58
下一篇 2018年12月1日 下午9:59

相关推荐