加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

西门子PLC的寻址方式总结

(2019-06-23 09:15:11)
分类: 工业自动化

西门子PLC的寻址方式总结

一、概述    

西门子PLC有两种寻址方式,直接寻址和间接寻址,间接寻址就是所谓的指针寻址,有4种情况,存储器间接寻址、寄存器间接寻址、any指针间接寻址、P指针间接寻址,所以可以认为PLC5种寻址方式:直接寻址、存储器间接寻址(指针式寻址)、寄存器间接寻址(指针式寻址)、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  25  24位没有意义,交叉26  25  24位有意义

P#指针

最高字节的0-18位与32位存储器指针定义一致,23-19位是031-24位是数据区,最低2个字节是DB块号或者是0

ANY指针

最高字6个字节与P#指针定义一致,接下来的第N-7  n-8两个字节表示数据长度,第N-9个字节表示数据类型,第N-10个字节(最低字节)为10H(属于保留字节)

注意:

存储器间接寻址、寄存器间接寻址也是一种指针寻址方式,但通常很少有人直接明确提到是指针式寻址,给人造成误解,认为指针寻址只有ANY指针和P指针

这里只讨论4种指针式寻址。

二、PLC两种寻址方式:间接寻址与直接寻址

1直接寻址
直接的指出指令的确切操作地址。

例如A Q10.0,对于指令A来说,Q10.0就是其直接操作的地址。

2、间接寻址

即间接的指出指令的确切操作地址。

例如A Q[MD10],这里的地址不是直接给出的,而是通过MD10这个存储地址间接给出的。

三、间接寻址的类型
间接寻址可分为两大类型:存储器间接寻址和寄存器间接寻址。如图1所示。

西门子PLC的寻址方式总结

 



 

1、间接寻址——存储器间接寻址

概述:

存储器间接寻址有两种寻址方式:16位指针寻址    32位指针寻址

16位指针寻址    32位指针寻址的寻址类型是不一样的

16位指针寻址的寻址范围是:定时器、计数器、数据块(DBDI)程序块(FCFB)的号的寻址
32位指针寻址的寻址范围是:I   Q    M    L   DB等存储器中位、字节、字及双字的寻址

11存储器间接寻址的地址给定格式:

地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数
值单元。
12 存储器间接寻址16 位指针:
     16 位地址指针用于定时器、计数器、程序块(DBFCFB)的寻址,16 位指针被看作 一个无符号整数
(0-65535),它表示定时器(T)、计数器(C)、数据块(DBDI)或程序块 (FBFC)的号,16 位指针的格式如下:

西门子PLC的寻址方式总结西门子PLC的寻址方式总结西门子PLC的寻址方式总结西门子PLC的寻址方式总结

 

 

13 存储器间接寻址32 位指针:

32 位地址指针用于 IQML、数据块等存储器中位、字节、字及双字的寻址,32 的地址指针可以使用一个双字表示。

0 ~ 2 位作为寻址操作的位地址,第 3 ~18 位作为 寻址操作的字节地址,第 19 ~31 位没有定义,32 位指针的格式如下:

 

14

 

 

13 存储器间接寻址32 位指针:

32 位地址指针用于 IQML、数据块等存储器中位、字节、字及双字的寻址,32 的地址指针可以使用一个双字表示。

0 ~ 2 位作为寻址操作的位地址,第 3 ~18 位作为 寻址操作的字节地址,第 19 ~31 位没有定义,32 位指针的格式如下:

 

西门子PLC的寻址方式总结

2、间接寻址——寄存器间接寻址

21概述:

寄存器间接寻址为通过 CPU的地址寄存器AR1,AR2进行寻址。AR1AR2 均为 32 位寄存器,寄存器间接寻址只使用 32 位指针。
寄存器间接寻址分为:内部区域间接寻址(同一寻址区域)和交叉区域寻址(不同寻址区域)。

22内部区域寄存器间接寻址:

指针格式与存储器间接寻址的 32 位指针相同。

0 ~ 2 位作为寻址操作的位地址,第 3 ~18 位作为寻址操作的字节地址,第 19 ~31 位没有定义,32 位指针的格式如下:

西门子PLC的寻址方式总结

 

 

 

 

 

 

 

 

 

 

 

 

23交叉区域寄存器间接寻址

    包含有存储器区域信息的指针,称为交叉区域指针。
交叉区域指针为 32 位,寄存器间接寻址要使用地址寄存器 AR1 AR2

    32 位交叉区域指针,左起 0~18 位格式与 32 位内部区域指针相同,19~23 位,27~20 位未定义,

交叉区域指针格式如下:
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;
西门子PLC的寻址方式总结

 

 

3、间接寻址——P# 指针间接寻址

31概述

P#指针  POINTER 是一种用于传递指针的 形参数据类型,长度为 6 个字节。用于向被调用的函数 FC 及函数块 FB 传递复合数据类型(ARRAYSTRUCT DT )的实参。在被调用的函数 FC 及函数块 FB 内部可以间接访问实参的存储器。

西门子PLC的寻址方式总结

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、间接寻址——P# 指针间接寻址

41概述:

ANY指针 是一种用于传递指针的形参数据类型,可视为 POINTER 类型的扩展,较 POINTER 类型为 复杂,长度为10 个字节,增加的 2 字节,最高字节 (Byte 0) 固定为 B#16#10,第二字节 (Byte 1) ANY 指针所指向区域的数据类型,而接下来的 2 字节 (BYTE 3, 4) 组合为一个 INT,为 ANY 指针所指 定区域的长度,称为重复系数 Repetition  factor) 。其余 6 字节作用与 POINTER 类型相同。 格式如下:

 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有