AR1和AR2在FB中使用应该怎么用呢?

问题有三个:
1.在FB中用到的AR2一般用到哪些地方?
2.在FB中如果要同时用到AR1和AR2是不是只要先保存AR1和AR2,用完后再把AR1和AR2还原就可以了
3.如果不是2上我说的那样使用的话,应该怎么使用呢?

问题补充:
特别是FB中使用到多重背景功能的时候

最佳答案

1.FB中为了方便背景数据块参数的寻址,自动使用AR2寄存器,AR2寄存器指向背景数据块的首地址P#DBX0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在FB里使用AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值。


2.可以这么用,不过要确保在这之间不要访问FB的接口参数,因为只要访问了FB的接口参数,那么AR2就会被系统重写。


3.有一个常用的用法是多重背景FB的接口参数的寻址用法,需要用到AR2:(因为在多重背景中,变量的地址并不是其在背景数据块中的绝对地址,而是其相对于AR2的偏移地址),所以:在多重背景FB中,如果要得到某变量variable在背景数据块中的绝对地址,可以使用以下代码:
 TAR2                 // 将地址寄存器装入累加器 AC 1 (偏移量),也就是多重背景FB中第一个变量在背景数据块中的地址。
 AD DW#16#00FFFFFF                 // 关闭区域 ID
 L P##variable                                  // 装载变量的地址
 +D                                                      // 加上偏移量和变量地址
 LAR1                                                 // 将结果保存到地址寄存器 AR1 中
仿真情况参考附图。
综上:为了避免出错,除非实在需要,否则最好不要在FB中使用AR2,使用的时候也要特别小心。

图片说明:

AR1和AR2在FB中使用应该怎么用呢?  AR1和AR2在FB中使用应该怎么用呢?  AR1和AR2在FB中使用应该怎么用呢?  

提问者对于答案的评价:
谢谢两位的热心帮助。

专家置评

回答的都很好。参考:
西门子STL间接寻址常问问题集
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=6175&loginID=&srno=&sendtime=

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐