为什么在FB块中尽量避免使用AR2

在我的上一个问题的回答里,有老师建议在FB块中尽量不要使用AR2, 为什么呢?
我以为AR1, AR2应该是两个独立的寄存器,在应用上是平等的,难道利用二者寻址是有区别的?

最佳答案

楼主所提问题非常好。AR1, AR2应该是两个独立的寄存器,在应用上是平等的。但是,正如你所提的问题:
1、转帖:
FB中为了方便背景数据块参数的寻址,自动使用AR2寄存器,AR2寄存器指向背景数据块的首地址P#DBX0.0,如果改变了这个寄存器的值,你再访问背景数据块参数时将不会得到正确的数值.所以,在FB里使用AR2寄存器要小心,对这两个寄存器改变后不要再使用背景数据块参数,当要使用背景数据块参数时要先恢复这两个寄存器的值。
2、转帖:
在FB中如果要同时用到AR1和AR2是不是只要先保存AR1和AR2,用完后再把AR1和AR2还原就可以了?
可以这么用,不过要确保在这之间不要访问FB的接口参数,因为只要访问了FB的接口参数,那么AR2就会被系统重写。
3、看看这个例子:
http://blog.gkong.com/liaochangchu_175000.ashx
4、看看:
西门子STL间接寻址常问问题集
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=6175&loginID=&srno=&sendtime=

提问者对于答案的评价:
谢谢各位老师,长知识了。

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

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

相关推荐