西门子PLC的寻址方式总结

分类: 工业自动化 |
西门子PLC的寻址方式总结
西门子PLC有两种寻址方式,直接寻址和间接寻址,间接寻址就是所谓的指针寻址,有4种情况,存储器间接寻址、寄存器间接寻址、any指针间接寻址、P指针间接寻址,所以可以认为PLC有5种寻址方式:直接寻址、存储器间接寻址(指针式寻址)、寄存器间接寻址(指针式寻址)、any指针间接寻址、P指针间接寻址。
存储器间接寻址:
16位指针,只是表示存储地址的起始字节(0-16位)
32位指针,表示存储地址的起始字节(3-18位)和位地址(0-2位),19-31位没有定义
寄存器间接寻址(AR1,AR2):
寄存器间接寻址的区域内32位指针,与存储器32位指针定义完全一致
寄存器间接寻址的区域交叉32位指针,第31位=1,第26 25 24位组合是地址标识符,其余位与存储器32位指针定义一致
所以,判断是内部还是交叉指针,看第31位,0内部,1交叉,内部26
P#指针
最高字节的0-18位与32位存储器指针定义一致,23-19位是0,31-24位是数据区,最低2个字节是DB块号或者是0
ANY指针
最高字6个字节与P#指针定义一致,接下来的第N-7
注意:
存储器间接寻址、寄存器间接寻址也是一种指针寻址方式,但通常很少有人直接明确提到是指针式寻址,给人造成误解,认为指针寻址只有ANY指针和P指针
这里只讨论4种指针式寻址。
二、PLC两种寻址方式:间接寻址与直接寻址
1、直接寻址
直接的指出指令的确切操作地址。
例如A Q10.0,对于指令A来说,Q10.0就是其直接操作的地址。
2、间接寻址
即间接的指出指令的确切操作地址。
例如A Q[MD10],这里的地址不是直接给出的,而是通过MD10这个存储地址间接给出的。
三、间接寻址的类型
间接寻址可分为两大类型:存储器间接寻址和寄存器间接寻址。如图1所示。
1、间接寻址——存储器间接寻址
概述:
存储器间接寻址有两种寻址方式:16位指针寻址
16位指针寻址
16位指针寻址的寻址范围是:定时器、计数器、数据块(DB、DI)和程序块(FC、FB)的号的寻址
32位指针寻址的寻址范围是:I
1、1存储器间接寻址的地址给定格式:
地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数
值单元。
1、2 存储器间接寻址16 位指针:
(0-65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块
(FB、FC)的号,16 位指针的格式如下:
1、3 存储器间接寻址32 位指针:
32 位地址指针用于 I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32 位的地址指针可以使用一个双字表示。
第 0 位~ 第2 位作为寻址操作的位地址,第 3 位~第18 位作为 寻址操作的字节地址,第 19 位~第31 位没有定义,32 位指针的格式如下:
1、4
1、3 存储器间接寻址32 位指针:
32 位地址指针用于 I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址,32 位的地址指针可以使用一个双字表示。
第 0 位~ 第2 位作为寻址操作的位地址,第 3 位~第18 位作为 寻址操作的字节地址,第 19 位~第31 位没有定义,32 位指针的格式如下:
2、间接寻址——寄存器间接寻址
2、1概述:
寄存器间接寻址为通过
CPU的地址寄存器AR1,AR2进行寻址。AR1,AR2 均为
32
位寄存器,寄存器间接寻址只使用
32
位指针。
寄存器间接寻址分为:内部区域间接寻址(同一寻址区域)和交叉区域寻址(不同寻址区域)。
2、2内部区域寄存器间接寻址:
指针格式与存储器间接寻址的 32 位指针相同。
第0 位~ 第 2 位作为寻址操作的位地址,第 3 位~第18 位作为寻址操作的字节地址,第 19 位 ~第31 位没有定义,32 位指针的格式如下:
2、3交叉区域寄存器间接寻址
交叉区域指针为
32
位,寄存器间接寻址要使用地址寄存器
AR1
或
AR2。
交叉区域指针格式如下:
31
位为交叉区域指针标识位。
24~26 位是存储区域地址标识,8 中组合表示
8
种存储器区域:
000
表示没有地址区,例如
P#12.0;
001
表示输入地址区
I,例如
P#I12.0;
010
表示输出地址区
Q,例如
P#Q12.0;
011
表示标志位地址区
M,例如
P#M12.0;
100
表示数据块(DB)中的数据,例如
P#DB1.DBX12.0
101
表示数据块(DI)中的数据,例如
P#DI1.DIX12.0
110
表示区域地址区
L,例如
P#L12.0;
111
表示调用程序块的区域地址区
V,例如
P#V12.0;
3、间接寻址——P# 指针间接寻址
3、1概述
P#指针
4、间接寻址——P# 指针间接寻址
4、1概述:
ANY指针
是一种用于传递指针的形参数据类型,可视为
POINTER 类型的扩展,较
POINTER 类型为
复杂,长度为10 个字节,增加的
2
字节,最高字节
(Byte
0) 固定为
B#16#10,第二字节
(Byte
1) 为
ANY
指针所指向区域的数据类型,而接下来的
2
字节
(BYTE 3,
4) 组合为一个
INT,为
ANY
指针所指
定区域的长度,称为重复系数
Repetition