求大侠帮忙解释几段程序,希望详细点

SET   
      SAVE  
      =     L      4.1
      L     #STATUS
      L     W#16#0
      <>I   
      L     #STATUS
      L     W#16#8180
      =     L      4.2
      <>I   
      A     L      4.2
      L     #STATUS
      L     W#16#8181
      =     L      4.2
      <>I   
      A     L      4.2
      O     #ERROR
      JCN   A7d0
      CLR   
      =     #ERGEBNISS
      JU    A7d1
A7d0: SET   
      =     #ERGEBNISS
A7d1: CLR   
      A     L      4.1
      SAVE  
      BE    
以上是第一个程序

尤其是其中的L 4.1  4.2 是什么意思呢

最佳答案

1、楼主的程序是从梯形图转变而来的。如果熟悉梯形图可以转回到梯形图。
2、其中的L 4.1  4.2 是什么意思呢?
L是临时(局部)变量区,L变量只在本程序段中有效。有关局部变量:见
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=70354&cid=1029

http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=66166&cid=1029
3、所帖的程序是一个比较程序:
SET  // 将RLO 置位(=1)
      SAVE  //把 RLO 存入 BR 寄存器中
      =     L      4.1//通过上述指令,将临时(局部)变量L 4.1置位
      L     #STATUS
      L     W#16#0
      <>I   
      L     #STATUS
      L     W#16#8180
      =     L      4.2//如果#STATUS不等于0,则L 4.2置位
      <>I   
      A     L      4.2
      L     #STATUS
      L     W#16#8181
      =     L      4.2//如果#STATUS不等于十六进制的8180,则L 4.2置位
      <>I   
      A     L      4.2
      O     #ERROR
      JCN   A7d0//如果#STATUS不等于十六进制的8181,并L 4.2置位或#ERROR置位,则继续执行下面的指令,否则跳转到A7d0处。
      CLR  // 将RLO 清零(=0)
      =     #ERGEBNISS// 通过RLO指令,将 #ERGEBNISS清零(=0)
      JU    A7d1//无条件跳转到A7d1
A7d0: SET // 将RLO 置位(=1)  
      =     #ERGEBNISS/// 通过SET指令,将 #ERGEBNISS置位(=1)
A7d1: CLR  // 将RLO 清零(=0)  
      A     L      4.1//如果L 4.1为1,则RLO 置位;如果L 4.1为0,则RLO 清零。
      SAVE  ///把 RLO 存入 BR 寄存器中
      BE  //程序段结束

提问者对于答案的评价:
非常感谢!不过不是梯形图转过来的

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午5:08
下一篇 2018年12月2日 下午5:08

相关推荐