程序如下:
SET
SAVE // BIE = 1 setzen
TAR1 #d_ar1 // AR1 retten
L #DB_NO // Kanal-DB indirekt 鰂fnen
T #dbnr
OPN DB [#dbnr]
LAR1 DBD 14 // CH_ADR (Kanaladresse in AR1 laden)
L PIW [AR1,P#0.0] // keine Bytezugriffe BUS3-Bug
CAW // Bytes tauschen im gelesenen Word
T DBB 36 // checkback signals byte 0 in Kanal-DB
R DBX 1.3 // immer erstmal Auftrag bekannt
A DBX 36.5 // FMNEUSTQ_R點kmeldung = 1
AN DBX 36.6 // FMNEUST_R點kmeldung = 0
NOT
S DBX 1.2 // Statusbit Auftragsbearbeitung nicht m鰃lich
L W#16#0
JC OURV
......
从程序开头到 “ L W#16#0 ”,RLO=?越详细越好,谢谢!
最佳答案
SET //RLO置位(=1) RLO=1
SAVE //把 RLO 存入 BR 寄存器 ,RLO=1
TAR1 #d_ar1 //将地址寄存器 1 的内容传送到目标地址(32 位指针),执行此指令不 影响RLO的状态。此时RLO=1
L #DB_NO // 装载#DB_NO到累加器1,执行此指令不影响RLO的状态,此时RLO=1
T #dbnr //将累加器1传送给#dbnr , 执行此指令不 影响RLO的状态。此时RLO=1
OPN DB [#dbnr] //打开数据块DB [#dbnr],执行此指令不 影响RLO的状态。此时RLO=1
LAR1 DBD 14 // 将双整数(32 位指针)装入地址寄存器 1,执行此指令不 影响RLO的状态。此时RLO=1
L PIW [AR1,P#0.0] //装载PIW[AR1,P#0.0]数值到累加器1, 执行此指令不 影响RLO的状态。此时RLO=1
CAW // 改变累加器 1 低字中的字节顺序(16 位),执行此指令不 影响RLO的状态。此时RLO=1
T DBB 36 // 累加器1数值传送给DBB36 ,执行此指令不 影响RLO的状态。此时RLO=1
R DBX 1.3 //复位DBX1.3,如果 RLO = 1,并且主控继电器 MCR = 1,则复位指令(R)可以将寻址位复位为“0”。如果 MCR = 0,则寻址位不变。,执行此指令不 影响RLO的状态。此时RLO=1。
A DBX 36.5 // 使用“与”指令可以检查被寻址位的信号状态是否为“1”,并将测试结果与逻辑运算结果(RLO)进行“与”运算。 如果DBX36.5=0,此时RLO=0,如果DBX36.5=1,RLO=1。
AN DBX 36.6 //如果DBX36.5=1,且DBX36.6=0,则RLO=1,其他情况 下 RLO=0 ,
NOT //RLO 取反,如果DBX36.5=1且DBX36.6=0,此时RLO=0,其他情况RLO=1
S DBX 1.2 // 如果 RLO = 1,并且主控继电器 MCR = 1,则置位指令(S)可以将寻址位置位为“1”。如果 MCR = 0,则寻址位不变 。执行此指令不 影响RLO的状态。
L W#16#0 //装载16进账数0到累加器1,执行此指令不 影响RLO的状态。
JC OURV //若 RLO = 1,则跳转 到OURV处。
以上程序影响RLO状态的是SET 指令、A DBX 36.5指令 、AN DBX36.6指令及NOT指令。因为SET 指令执行后RLO=1,所以这段程序最终RLO状态是由DBX36.5和DBX36.6的RLO决定的。
提问者对于答案的评价:
谢谢详尽的解答!
最佳答案作者回复:
不是笔误。NOT 是逻辑取反指令。A DBX36.5. AN DBX36.6后逻辑是1的话取反后逻辑就是0
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc193095.html