STL寄存器间接寻址指令

初学STL指令,对程序指令有些不了解,我想请教的问题是:
AR1的存放的地址为870000a8,执行的第四条L W[AR1 P#0.0]仿真的时候,AR1加上偏移地址0.0得到Pointer指针的DB数据块号是怎么运算得到2的;
另外,_001编号处的L D[AR1 P#2.0]的运算结果为什么就是87000020?还有BACK标签下面的那条指令,结果为什么是1?
还有W、D什么意思,怎么没用MW,MD
在寻址的时候,比如P#5.0和P#M5.0是森么关系?
那位给详细解释下,不胜感激涕零……

问题补充:
另外,AR1列的DB4.0和DB6.0是什么意思?

图片说明:

STL寄存器间接寻址指令    STL寄存器间接寻址指令   

最佳答案

1、AR1的存放的地址为870000a8,执行的第四条L W[AR1 P#0.0]仿真的时候?
按照规定,当是对L区域寻址时,AR=870*xx,其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。0a8=0000 1010 1000为16H,即十进制的22,L W[AR1 P#0.0]实际为L W22.。
2、AR1加上偏移地址0.0得到Pointer指针的DB数据块号是怎么运算得到2的?_001编号处的L D[AR1 P#2.0]的运算结果为什么就是87000020?
L D[AR1 P#2.0]不是DB数据块号。按照规定,当是对DB区域寻址时,AR=840*xx。L D[AR1 P#2.0]即为84000020。
3、还有BACK标签下面的那条指令,结果为什么是1?
L W[AR1 P#0.0]指令寻找的这个W(字)中的内容为1.
4、W、D什么意思,怎么没用MW,MD?
W表示字(16位),D表示双字(32位)..。怎么没用MW,MD?因为不是专指MW,MD,可以指DBW,DBD.。
5、在寻址的时候,比如P#5.0和P#M5.0是森么关系?
P#5.0为泛指的偏移量,P#M5.0是专指M区的偏移量。
5、问题补充:另外,AR1列的DB4.0和DB6.0是什么意思?
DB2.DBX4.0:数据块DB2中的第4字节的第0位。
DBX6.0:第6字节的第0位。
6、楼主的问题真不少,分给又这么少。即使如此,还是建议你看看下述文档,看后必有收获:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://www.plc365.com/jishu/57.html

提问者对于答案的评价:
谢谢哈,正在努力学习……

专家置评

已阅,最佳答案正确。

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

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

相关推荐