S7-300/400偏移量

P#8.6
L AR1
A I[AR1,P#0.0]
请问AR1加偏移量后的值是否为2# 0000 0000 0000 0000 0000 0000 1000 0110,
想要了解2# 0000 0000 0000 0000 0000 0000 0100 0110 为何加偏移量P#0.0后就变为2# 0000 0000 0000 0000 0000 0000 1000 0110,这是怎么样定义的?

最佳答案

1、有关AR1和AR2寻址:
地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。 当使用在区域内寄存器间接寻址中时,我们知道这时的AR中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是:  
  其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  AR:  
  0000 0000 0000 0BBB BBBB BBBB BBBB BXXX  
  这样规定,就意味着AR的取值只能是:0.0 ——65535.7  
  例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。 
2、为何加偏移量P#0.0后就变为2# 0000 0000 0000 0000 0000 0000 1000 0110,这是怎么样定义的?
因为
L P#8.6  //取地址常数 P#8.6
L AR1   //将地址常数 P#8.6存入 AR1中。
A I[AR1,P#0.0]  //方括号中, AR1中为P#8.6,加上偏移量P#0.0]后,还是P#8.6。
3、建议看看下述资料,就明白了指针寻址的功能了:
、《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
、《step7编程之地址概念详解》连接:
http://ishare.iask.sina.com.cn/f/22746895.html
http://www.gongkong365.com/bbs/job.php?action=download&aid=96
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=

提问者对于答案的评价:
谢谢,同时也感谢其他给予回答的人!

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年3月6日 下午1:31
下一篇 2018年3月6日

相关推荐