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