L 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