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
相关推荐
醉卧红尘的鱼2 小时前
随机向量正交投影定理(Orthogonal Projection Theorem, OPT)_学习笔记
学习·算法
老虎06273 小时前
JavaWeb(苍穹外卖)--学习笔记18(Apache POI)
笔记·学习·apache
我们从未走散5 小时前
Redis学习笔记-----Redis内存回收
java·redis·笔记·学习
qq_386322695 小时前
华为网路设备学习-28(BGP协议 三)路由策略
学习
驱动探索者5 小时前
瑞芯微 RK3588 平台驱动开发 学习计划
驱动开发·学习
写点什么呢7 小时前
Stlink识别不到-安装驱动
stm32·单片机·嵌入式硬件·学习
曼波の小曲9 小时前
运维学习Day20——MariaDB数据库管理
运维·数据库·学习
慕y27413 小时前
Java学习第一百一十七部分——ClickHouse
java·学习·clickhouse
港港胡说18 小时前
机器学习(西瓜书)学习——绪论
人工智能·学习·机器学习