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 中,定位变量通常采用的格式为:

  1. 格式一: [存储区] + [偏移量]
  2. 格式二: [存储区] + [偏移量] + [数据单位]
  3. 格式三:[存储区] + [数据单位] + [偏移量]
  • 存储区:表示变量所在的内存区域(如 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位分组):

  1. 高字节(前8位一个字节):0x12
  2. 低字节(后8位一个字节):0x34
类型 DB0.DBB0 DB0.DBB1
Little Endian 0x12 0x34
Big Endian 0x34 0x12

注意:西门子 PLC(如 S7-200 SMART、S7-1200/1500)默认采用小端序存储。

字节序注意场景

  1. 正确解析多字节数据(避免数值错误)
    当你在 PLC 中处理字(Word,16 位)、双字(DWord,32 位)等多字节数据时,必须遵循小端序规则才能正确拆分或组合字节。
  2. 确保跨设备通信的数据一致性
    PLC 常需与上位机(如 HMI、SCADA)、传感器、仪表等外部设备交换数据(如温度、流量等数值),而不同设备可能采用不同的字节序(如部分仪表默认大端序)。
  3. 正确处理数据块(DB)的结构化数据
    在数据块中定义数组、结构体等复杂数据类型时,字节序决定了各成员的存储位置。
  4. 避免程序调试中的 "隐蔽错误"
    字节序错误属于 "逻辑正确但结果错误" 的隐蔽问题,不影响程序运行,但会导致数据异常(如显示值错误、控制逻辑失效)。

六、扩展: 数据类型(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
相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习