西门子S7-300/400PLC中,请问:地址寄存器 AR1里的值为什么是累加器1除以8?

西门子S7 STL代码如下:
L 300 //累加器1装载整数300
SLD 3 //累加器1左移3位后,值为2400
LAR1 //此时查看AR1的值为300
////////////////////////////////////////////////////////////////////////
在STEP7帮助文件里LAR1 指令作用:将累加器1(ACCU1)中的内容装载到AR1里,请问:AR1里的值为什么是300而不是2400?

AR1是地址寄存器,里面的值如果按2进制来算应该是2400,但是实际上它显示的是一个地址,地址的实际值应该显示为300.0而不是你说的300,以二进制的形式来看地址的格式如下:
0-2这三位代表地址的位数值,3-18这十六位代表的是尺寸数值,比如Q10.3的地址转换成2进制就是:1010011,前面3位1010是尺寸数10,后面三位是位数值3.
如果想访问一个字节、字、双字的地址(假设你例子中要访问MW300),直接将要访问的地址号(你举得例子中的300)左移三位,或者直接乘以8,然后放到地址寄存器中,再访问这个地址就OK了。追问

非常感谢你的回答,去看明白了,谢谢!!~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-30
地址寄存器的地址格式为:
1、第0位到第2位作为寻址操作的位地址。
2、第3位到第18位作为寻址操作的字节地址。
3、内部区域寻址时,第19位到第31位在没有定义的。
4、在区域间寻址时,第24位到第31位用来表示区域类型。
根据AR1的地址格式,300左移3位后,第0位到第2位为0,就是位地址为0;第3位到第18位为300,技师字节地址为300。所以你查看到的AR1为300。本回答被提问者采纳
相似回答