7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
一、数据单位(数据长度类型)
术语 | 名称 | 位数 | 所占字节 | 说明 |
---|---|---|---|---|
Bit | 位 | 1 bit | 1/8 Byte | 最小数据单位(0或1) |
B | Byte 字节 | 8 bit | 1 Byte | 字节单位 |
W | Word 字 | 16 bit | 2 Byte | 通常用于整数、状态字等 |
DW | Double Word 双字 | 32 bit | 4 Byte | 常用于浮点、双整数 |
1双字 = 2字 1双字 = 4字节 1双字 = 32位
1字 = 2字节 1字 = 16位
1字节 = 8位
三、存储区域(Memory Area)
区域 | 名称 | 说明 | 大小(S7-200 SMART) | 举例 |
---|---|---|---|---|
I区 | 输入映射区 | 外部信号输入 | 1KB | I[字节号].[位号]: (如 I0.0、I2.7) |
Q区 | 输出映射区 | 外部信号输出 | 1KB | Q[字节号].[位号] (如 Q0.1、Q5.3) |
M区 | Merker 标志寄存器 | 程序内部临时变量、 中间状态存储 | 4KB | M[字节号].[位号] (如 M0.2、M10.5) |
DB区 | 数据块 | 用户自定义数据结构的存储区 | 128 个 DB 块, 单个4096 字节(4KB) | DB1.DBX04 (X = Bit)DB1.DBB4 (B = 字节)DB1.DBW4 (W = 字)DB1.DBD4 (D = 双字) |
T区 | 定时器 | 用于时间控制(接通延时、断开延时等) | 最多 256 个定时器(T0~T255),支持 1ms、10ms、100ms 分辨率 | |
C区 | 计数器 | 用于计数控制(增计数、减计数、增减计数) | 最多 256 个计数器(C0~C255),计数范围 0~32767 | |
L区 | 局部变量 | 仅在函数(FC)或功能块(FB)内部使用,调用时临时分配 | 每个块最多 64 字节(512 位) |
四、寻址(读写)
在 PLC 中,定位变量通常采用的格式为:
- 格式一:
[存储区] + [偏移量]
- 格式二:
[存储区] + [偏移量] + [数据单位]
- 格式三:
[存储区] + [数据单位] + [偏移量]
- 存储区:表示变量所在的内存区域(如 I 输入区、Q 输出区、M 内存区等)
- 偏移量:变量在该存储区中的起始地址
- 数据单位:变量的存储粒度(如 bit、byte、word、dword 等)
例 1:位(bit)寻址 [存储区] + [偏移量]
数据单位隐含了
I0.3
- I:表示输入区
- 0:字节偏移量(第 0 个字节)
.
:作用是区分字节地址和位地址- 3:位偏移量(第 3 位)
含义:读取(或写入)输入区第 0 字节的第 3 位的值,例如某个按钮的开关状态。
例 2:字节(byte)寻址 [存储区] + [数据单位] + [偏移量]
QB2
- Q:表示输出区
- B:数据单位,表字节
- 2:字节偏移量:2(第 2 个字节)
含义:读取(或写入)输出区第 2 个字节的内容,1字节=8个位 即可表示8个输出继电器。
例 3:字(word)寻址 [存储区] + [数据单位] + [偏移量]
MW20
- M:程序内部临时变量、中间状态存储
- W:数据单位,表字
- 20:字节偏移量(从字节 20 开始)
含义:读取(或写入)从字节 20 开始的 2 个字节,例如一个整数计数值。
例 4:数据块(DB)寻址 [存储区] . [数据单位] + [偏移量 ]
DB1.DBX0.4
(X = Bit)
DB1.DBB4
(B = 字节)
DB1.DBW4
(W = 字)
DB1.DBD4
(D = 双字)
DB1
:表示数据块 1(Data Block 1),这本身就是一个存储区,但它是用户定义的存储区。.
:第1个.
相当于“进入”这个数据块的意思。.
:第2个.
作用是区分字节地址和位地址。
五、扩展:底层内存存储方式
当多个字节组成一个Word(16位)、Double Word(32位)或更大数据时,低字节和高字节的存放顺序是怎样的???
什么是字节序(Endian)
当多个字节表示一个数据时,存在两种存储顺序:
类型 | 名称 | 说明 |
---|---|---|
Little Endian | 小端序 | 最低有效字节存放在低地址,最高有效字节存放在高地址 |
Big Endian | 大端序 | 最高有效字节存放在低地址,最低有效字节存放在高地址 |
例如,假设有一个 字
类型(1字=2字节)数值为 0x1234
,组成字的两个字节是(按8位分组):
- 高字节(前8位一个字节):
0x12
- 低字节(后8位一个字节):
0x34
类型 | DB0.DBB0 | DB0.DBB1 |
---|---|---|
Little Endian | 0x12 | 0x34 |
Big Endian | 0x34 | 0x12 |
注意:西门子 PLC(如 S7-200 SMART、S7-1200/1500)默认采用小端序存储。
字节序注意场景
- 正确解析多字节数据(避免数值错误)
当你在 PLC 中处理字(Word,16 位)、双字(DWord,32 位)等多字节数据时,必须遵循小端序规则才能正确拆分或组合字节。 - 确保跨设备通信的数据一致性
PLC 常需与上位机(如 HMI、SCADA)、传感器、仪表等外部设备交换数据(如温度、流量等数值),而不同设备可能采用不同的字节序(如部分仪表默认大端序)。 - 正确处理数据块(DB)的结构化数据
在数据块中定义数组、结构体等复杂数据类型时,字节序决定了各成员的存储位置。 - 避免程序调试中的 “隐蔽错误”
字节序错误属于 “逻辑正确但结果错误” 的隐蔽问题,不影响程序运行,但会导致数据异常(如显示值错误、控制逻辑失效)。
六、扩展: 数据类型(Data Type)
类型 | 名称 | 位数 | 示例值 |
---|---|---|---|
BOOL | 布尔型 | 1 bit | TRUE / FALSE |
BYTE | 字节 | 8 bit | 16#FF |
WORD | 字(整型) | 16 bit | 16#FFFF |
DWORD | 双字 | 32 bit | 16#FFFFFFFF |
INT | 有符号整数 | 16 bit | -32768 ~ 32767 |
DINT | 双字整数 | 32 bit | -21亿 ~ 21亿 |
REAL | 浮点型 | 32 bit | 3.14, -1.5 |