【问答】西门子S7-300的寄存器间接寻址问题第二例

作者:老电工时间:2015-09-17 15:40:47

西门子S7-300的寄存器间接寻址问题

问题:《S7-300/400 PLC应用技术》第3版书上第122页例子中L P#10.0,后面注释是将32位内部区域指针装入累加器1,而第161页中,L P#20.0,后面注释是指针常数P#20.0装入累加器1的低字。看不懂,L  P#10.0和L P#20.0看上去2个指令几乎一样,就是10.0和20.0有差别,为什么前者是32位内部区域指针,后者是指针常数,前者是32位的,后者是装入低字(那不是16位了?)

回答:

寄存器间接寻址分为区域内和区域间间接寻址。

两条L指令都是将指针常数装入累加器1。区域内间接寻址的特点是指针的高字节为0,所以P#10.0和P#20.0都是区域内间接寻址的指针常数。

至于为什么P#20.0是16位的,这与+AR1指令的要求有关,可以理解为加到AR1的是地址偏移量。下面是该指令的帮助信息:

+AR1 (加到AR1)将在语句或ACCU 1-L中指定的偏移量加到AR1的内容上。首先将整数(16位)扩展为符号正确的24位,然后将其加到AR1的最低有效的24位(AR1中的相对地址的一部分)。在AR1中,区域ID的部分(位24、25和26)保持不变。执行该指令时不考虑状态位,也不会影响状态位。

+AR1: 要加到AR1的内容中的整数(16位)由ACCU 1-L中的值指定。允许的值范围为 -32768至 +32767。

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc