如图所示,蓝色区域的指令中为什么将累加器1的低字传送给地址寄存器AR1或AR2之前,都要左移5位的处理????
图片说明:
最佳答案
1、首先要熟悉32位指针的格式:
AR: 0000 0000 0000 0BBB BBBB BBBB BBBB BXXX 。
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。 例如:
AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
2、都要左移5位的处理?
例如,0000 0000 0000 0000 0000 0000 0000 0100(b)如果要形成地址常数4.0,如上所述,需要左移3位为0000 0000 0000 0000 0000 0000 0010 0000(b),即4.0。
而程序中都要左移5位的处理?因为程序中是对于双字寻址。首先要清楚:
、字节排序为DBB0,DBB1,DBB2,.......。
、字排序为DBW0,DBW2,DBW4,.......。
、双字排序为DBD0,DBD4,DBD8,.......。
程序中是对双字寻址,L DBD[AR2,P#0.0],T DBD[AR1,P#0.0]..。根据上述的双字排序直接左移5位即形成双字排序的地址,偏移量为P#0.0。
如果左移3位也可以, DBD[AR2,P#0.0],T DBD[AR1,P#0.0]与下述左移3位后,偏移量为P#4.0指令等价:
DBD[AR2,P#4.0],T DBD[AR1,P#4.0].。
3、有关指针寻址:
见《关于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
提问者对于答案的评价:
学习
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc235606.html