STL程序分析LAR2 #TMP_AR2,LAR1 #TMP_AR1

NET WORK 1:
   TAR1  #TMP_AR1
    TAR2  #TMP_AR2
NET WORK 2:
  CLR   
      =     #Wartungsschalter_aktiv
      =     #Sammelfehler_Gateway

      L     #Adr_Gate_PD
      SLD   3
      LAR1  
      L     IW [AR1,P#0.0]
      T     #Zustand_Gateway
      L     0
      ==I   
      JC    OK

      L     IW [AR1,P#0.0]
      L     1
      ==I   
      =     #Wartungsschalter_aktiv
      >I    
      AN    #ABAG
      =     #Sammelfehler_Gateway

OK:   NOP   0
NET WORK 3:
      LAR1  #TMP_AR1
      LAR2  #TMP_AR2

请问 NET WORK 1 和 NET WORK 3 这两个段 是什么作用?有点困惑,希望高手讲解一下,谢谢

最佳答案

请问 NET WORK 1 和 NET WORK 3 这两个段 是什么作用?
1、· NET WORK 1 和 NET WORK 3 这两个段作用很简单,分别是:
NET WORK 1:保存当前的地址寄存器AR1与AR2的内容到 #TMP_AR1与TAR1  #TMP_AR2两个单元中。
NET WORK 3 :恢复所保存的地址寄存器AR1与AR2的内容。即将#TMP_AR1与TAR1  #TMP_AR2两个单元中的内容装进地址寄存器AR1与AR2中。
2、这种编程是非常常用的,例如,在主程序中(OB1)已应用了地址寄存器AR1与AR2,这时要调用子程序(FB或FC),而子程序中也应用地址寄存器AR1与AR2。所以,在进入子程序时必须首先要将保存当前的地址寄存器AR1与AR2的内容,待子程序执行结束时再恢复原地址寄存器AR1与AR2的内容。
3、重要一点!在调用FB时需要背景数据块,这时需要特别注意:
FB中为了方便背景数据块参数的寻址,自动使用AR2寄存器,AR2寄存器指向背景数据块的首地址P#DBX0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在FB里使用AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值。
所以在调用FB时就要用到类似 NET WORK 1 和 NET WORK 3 这两个段的程序了!当然必须要保存AR2寄存器。

提问者对于答案的评价:
谢谢,讲解非常详细,受用

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月3日
下一篇 2017年6月3日

相关推荐