我接触S7-400PLC有几年了,一些基本的寄存器间接寻址或者简单的指针运用还能理解,但是基本上没有用到过地址寄存器2,也就是说LAR1出现比较多,而LAR2基本没见过,最近在看程序时经常看到如下指令段:
TAR2 注释:Make it work in case of multiple instance FB
L DW#16#FFFFFF
AD
L P##STEP
+D
LAR1
我不能理解的是第一句,将AR2的内容传送到ACCU1,前面都没出现过类似于LAR2这样的指令,那么地址寄存器2的内容从何而来呢?在上面的程序段中和DW#16#FFFFFF求与运算的到底是什么内容呢??
希望清楚的老师们帮忙解释一下啊。谢谢
最佳答案
1.FB里使用AR2来访问接口参数,如果当前FB是在多重背景FB里被调用,那么AR2就是当前FB的背景数据在多重背景数据块里的起始地址
2.程序段中和DW#16#FFFFFF求与运算是去掉从AR2获得的起始地址里的区域代码,因为如果不去除区域代码,会把这个地址当成一个负数了,执行+D就不能得到正确的地址了
这段代码就是获取当前FB里变量#STEP在多重背景数据块里的地址
提问者对于答案的评价:
非常感谢大家的回答,虽然其他也有兄弟回答得很专业,但是你的答案比较直观的告诉了我AR2也许就代表了数据块的地址。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc247370.html