目录
- 一、前言
- [二、Modbus 传感器设计核心:两类关键信息](#二、Modbus 传感器设计核心:两类关键信息)
- 三、实战案例:多模块寄存器规划示范
- [四、点表设计:Modbus 寄存器的标准化表达](#四、点表设计:Modbus 寄存器的标准化表达)
- 五、总结
- 六、结尾
一、前言
经过前期的 libmodbus 移植、STM32 硬件串口调试、Modbus 主从通信验证等一系列学习与实践,我们已具备基于 Modbus 协议和现有硬件设计实用传感器的能力。传感器设计的核心在于明确 Modbus 通信的寄存器规则 ------ 通过合理规划寄存器的地址、数量与功能,实现主设备与各类从设备(传感器模块)的稳定通信,这也是本次笔记的核心内容。
二、Modbus 传感器设计核心:两类关键信息
在 libmodbus 传输数据的过程中,会为 Modbus 的四类核心寄存器(离散输入状态、线圈状态、输入寄存器、保持寄存器)分别分配缓冲区(buf),每个缓冲区包含寄存器的起始地址与数量两个核心属性。想要实现主设备与各从设备的有效通信,必须先明确两类关键信息:
- 设备地址:每个 Modbus 从设备(传感器)需分配唯一的地址,主设备通过该地址精准定位通信对象;
- 四类寄存器的核心属性:包含起始地址、个数、功能 ------ 其中 "功能" 又细分为:值的含义、R(值的来源,如硬件采集)、W(值如何操作硬件,如控制 LED / 继电器)。
资料来源韦东山
需要注意的是:寄存器的 "个数" 由硬件本身的功能决定(如 3 个 LED 对应 3 个线圈寄存器),而 "起始地址" 可由设计者自定义(通常从 0 开始);"值的含义" 则是设计者赋予寄存器的核心意义 ------ 例如将某寄存器的值与按键状态绑定,值为 1 代表按键被按下,值为 0 代表按键未按下,本质是为寄存器赋予业务逻辑层面的意义。
三、实战案例:多模块寄存器规划示范
1. 开关量模块(3 个 LED、3 个按键、2 个继电器)
以包含 3 个 LED、3 个按键、2 个继电器的开关量模块为例,其寄存器规划逻辑如下:
- 可读可写的位寄存器(DO,对应线圈状态):5 个(3 个 LED+2 个继电器),起始地址设为 0;
- 只读的位寄存器(DI,对应离散输入状态):3 个(3 个按键),起始地址设为 0。
模块示意图如下:

2. 温湿度变送器模块
温湿度变送器模块包含 3 个 LED、2 个蜂鸣器,同时具备温湿度采集功能,寄存器规划如下:
- 可读可写的位寄存器(DO):5 个(3 个 LED+2 个蜂鸣器);
- 只读的 16 位寄存器(AI,对应输入寄存器):2 个(分别存储温度、湿度值),需通过单位转换赋予数值意义 ------ 例如约定读取的温度数值 ×0.1 为实际温度(数值 101 对应 10.1℃),湿度数值同理。
模块示意图如下:

3. 环境检测模块
环境检测模块的寄存器规划逻辑与上述模块一致:
- 可读可写的 DO 寄存器:5 个;
- 只读的 16bit AI 寄存器:2 个。
模块示意图如下:

四、点表设计:Modbus 寄存器的标准化表达
1. 点表的定义
所谓 "点表",是对 Modbus 设备通信规则的标准化梳理 ------ 明确设备地址、四类寄存器的地址范围与功能,是主设备与传感器通信的 "说明书"。
2. 点表中的核心概念
在查看点表时,常遇到电力系统衍生的 "遥测、遥信、遥控、遥调" 概念,其本质对应 Modbus 的四类寄存器:
- 遥测 → AI(输入寄存器)、遥信 → DI(离散输入状态);
- 遥控 → DO(线圈状态)、遥调 → AO(保持寄存器)。
同时,点表中还会出现 "PLC / 组态地址" 或 "0x、1x、4x、3x" 等简称,用于区分四类寄存器,具体对应关系如下:
表格
| 寄存器种类 | PLC / 组态地址 | Modbus 寄存器地址范围 | 简称 | 读写状态 |
|---|---|---|---|---|
| 线圈状态 | 00001~09999 | 0000H~FFFFH | 0x | 可读可写 |
| 离散输入状态 | 10001~19999 | 0000H~FFFFH | 1x | 只读 |
| 保持寄存器 | 40001~49999 | 0000H~FFFFH | 2x | 可读可写 |
| 输入寄存器 | 30001~39999 | 0000H~FFFFH | 4x | 只读 |
3. 地址编号注意事项
- 提及 "0 号寄存器" 时,必须先指定寄存器种类(如 AI 寄存器的 0 号);
- PLC / 组态地址的编号规则:开头的 0/1/2/3 代表寄存器种类,后续数字为起始地址(从 1 开始);
- Modbus 寄存器地址规则:起始地址从 0 开始,与 PLC / 组态地址需做减 1 转换。
完成点表设计后,需将其准确传达给用户,确保用户能基于点表实现主设备与传感器的正常通信。
五、总结
- Modbus 传感器设计的核心是确定两类信息:设备地址、四类寄存器的起始地址 / 个数 / 功能;
- 寄存器个数由硬件决定,起始地址通常从 0 开始,值的含义需结合业务逻辑自定义;
- 点表是寄存器规划的标准化表达,需明确地址规则并传达给用户,保障通信适配性。
六、结尾
本次梳理了 Modbus 传感器设计的核心逻辑 ------ 从寄存器规划到点表设计,这是传感器从硬件实现到实际可用的关键环节。掌握这套规划方法,可适配各类工业传感器、控制模块的 Modbus 通信设计,大幅提升嵌入式硬件的实用性与通用性。感谢各位的阅读,持续关注本系列笔记,一起完成更多工业级 Modbus 传感器的设计与落地!