当前位置: 主页 > PLC控制

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

NETWORK1:
TAR1#TMP_AR1
TAR2#TMP_AR2
NETWORK2:
CLR
=#WaRTungsschalter_aktiv
=#Sammelfehler_Gateway

L#Adr_Gate_PD
SLD3
LAR1
LIW[AR1,P#0.0]
T#ZuSTand_Gateway
L0
==I
JCOK

LIW[AR1,P#0.0]
L1
==I
=#Wartungsschalter_aktiv
>I
AN#ABAG
=#Sammelfehler_Gateway

OK:NOP0
NETWORK3:
LAR1#TMP_AR1
LAR2#TMP_AR2

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

最佳答案

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

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

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号