此时的RLO等于多少?

程序如下:
      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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月16日 下午10:47
下一篇 2017年8月16日 下午10:48

相关推荐