您现在的位置是:首页 > PLC技术 > PLC技术
S7 300/400寄存器间接寻址
来源:艾特贸易2017-06-05
简介S7 中有两个地址寄存器 AR1 和 AR2 ,通过它们可以对各存储区的存储器内容作寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,后者指向数据所在的存储单元。 图 3-51 存储
S7中有两个地址寄存器AR1和AR2,通过它们可以对各存储区的存储器内容作寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,后者指向数据所在的存储单元。
图3-51 存储器间接寻址的双字指针格式
图3-52 寄存器间接寻址的双字指针格式
地址寄存器存储的双字地址指针见图3-52。其中第0~2位(xxx)为被寻址地址中位的编号(0~7),第3~18位为被寻址地址的字节的编号。第24~ 26位(rrr)为被寻址地址的区域标识号(见表3-6),第31位x为0则为区域内的间接寻址,为1则为区域间的间接寻址。
表3-6 区域间寄存器间接寻址的区域标识号
区域标识符
存储区
二进制数rrr
I
过程映像输入
001
Q
过程映像输出
010
M
位存储区
011
DB
共享数据块
100
DI
背景数据块
101
L
局部数据(L堆栈)
110
V
上一级赋值的局部数据
111
如果要用寄存器指针访问一个字节、字或双字,必须保证指针的位地址编号为0。
第一种地址指针格式包括被寻址数值所在的存储单元地址的字节编号和位编号,存储区的类型在指令中给出。这种指针格式适用于在某一存储区内寻址。第24~26位(rrr)和第31位应为0。下面是区域内间接寻址的例子:
L P#5.0 //将间接寻址的指针装入累加器1
L AR1 //将累加器l的内容送到地址寄存器1
A M[ AR1,P#2.3] //AR1中的P#5.0加偏移量P#2.3,对M7.3进行操作
= Q[ AR1,P#0.2] //逻辑运算的结果送Q5.2
L DBW[AR1,P#18.0] //将DBW23装入累加器1
指针常数#P5.0对应的二进制数为2#00000000 0000 0000 0000 0000 0010 1000。
第二种地址指针格式的第24~26位还包含了说明数值所在存储区的存储区域标识符的编号rrr,这种指针格式用于区域间寄存器间接寻址。下面是区域间间接寻址的例子:
L P#M6.0 //将存储器位M6.0的双字地址装入累加器1
LAR1 //将累加器1的内容送到地址寄存器1
L W[ AR1,P#50.0] //将存储器字MW56的内容传送到累加器l
P#M6.0对应的二进制数为2#1000 0011 0000 0000 0000 0000 0011 0000。因为地址指针P#M6.0已经包含有区域信息,使用间接寻址的指令“L W[AR1,P#50]”时没有必要再使用地址标识符M。
点击排行
