关于STL语句中SLD3的问题

请教个问题, 在STL语句中对某个数值SLD3,然后传送到AR1中,接下来进行寄存器间接寻址了。 这个SLD3不同于别的一个双字左移3位,是step7的一个固定用法么,只是为了把一个数值变成指针形势么

最佳答案

1、.....只是为了把一个数值变成指针......是为了把一个数值变成指针形式?
是的,是为了把一个数值变成指针形式。
这个问题归结为什么要SLD3(双字左移3位)?
、首先看看双字指针是一个32bit的结构:从0-2bit,共三位,按照8进制表示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。即:
其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 0000(b),实际上就是等于26.0。 
、为什么要SLD3(双字左移3位)?
如果我们先有一32bit数据,例如,0000 0000 0000 0000 0000 0000  0001 1010(b)即26(十进制)。如果要形成指针形式的地址26.0,必须双字左移3位变为上述的双字指针格式,即0000 0000 0000 0000 0000 0000 1101 0000(b),这样就变为26.0了。
2、相关资料:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
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=

提问者对于答案的评价:
感谢两位的回答,阿鸣老师解答的很详细,终于明白这个的意思了。
另外有点笔误,当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。

专家置评

已阅,最佳答案正确。

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

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

相关推荐