Modbus 传感器开发:从寄存器规划到点表设计

目录

一、前言

经过前期的 libmodbus 移植、STM32 硬件串口调试、Modbus 主从通信验证等一系列学习与实践,我们已具备基于 Modbus 协议和现有硬件设计实用传感器的能力。传感器设计的核心在于明确 Modbus 通信的寄存器规则 ------ 通过合理规划寄存器的地址、数量与功能,实现主设备与各类从设备(传感器模块)的稳定通信,这也是本次笔记的核心内容。

二、Modbus 传感器设计核心:两类关键信息

在 libmodbus 传输数据的过程中,会为 Modbus 的四类核心寄存器(离散输入状态、线圈状态、输入寄存器、保持寄存器)分别分配缓冲区(buf),每个缓冲区包含寄存器的起始地址与数量两个核心属性。想要实现主设备与各从设备的有效通信,必须先明确两类关键信息:

  1. 设备地址:每个 Modbus 从设备(传感器)需分配唯一的地址,主设备通过该地址精准定位通信对象;
  2. 四类寄存器的核心属性:包含起始地址、个数、功能 ------ 其中 "功能" 又细分为:值的含义、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 转换。

完成点表设计后,需将其准确传达给用户,确保用户能基于点表实现主设备与传感器的正常通信。

五、总结

  1. Modbus 传感器设计的核心是确定两类信息:设备地址、四类寄存器的起始地址 / 个数 / 功能;
  2. 寄存器个数由硬件决定,起始地址通常从 0 开始,值的含义需结合业务逻辑自定义;
  3. 点表是寄存器规划的标准化表达,需明确地址规则并传达给用户,保障通信适配性。

六、结尾

本次梳理了 Modbus 传感器设计的核心逻辑 ------ 从寄存器规划到点表设计,这是传感器从硬件实现到实际可用的关键环节。掌握这套规划方法,可适配各类工业传感器、控制模块的 Modbus 通信设计,大幅提升嵌入式硬件的实用性与通用性。感谢各位的阅读,持续关注本系列笔记,一起完成更多工业级 Modbus 传感器的设计与落地!

相关推荐
今儿敲了吗1 小时前
24| 字符串
数据结构·c++·笔记·学习·算法
日更嵌入式的打工仔1 小时前
ARM-中断管理
笔记
小龙报2 小时前
【51单片机】不止是调光!51 单片机 PWM 实战:呼吸灯 + 直流电机正反转 + 转速控制
数据结构·c++·stm32·单片机·嵌入式硬件·物联网·51单片机
送外卖的工程师2 小时前
STM32 驱动五线四相步进电机(28BYJ-48+ULN2003)教程
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·proteus
优信电子2 小时前
STM32软件SPI驱动BMP280(OLED显示)
stm32·oled·spi·传感器·bmp280
拉咯比哩2 小时前
江科大老学长 STM32 + FREERTOS 项目实践 教程资源汇总
stm32·单片机·嵌入式硬件
niuTaylor2 小时前
STM32内存管理深度解析:裸机与FreeRTOS的堆栈配置实战指南
stm32·单片机·嵌入式硬件
烤麻辣烫2 小时前
正则表达式快速掌握
前端·javascript·学习·正则表达式·html
czhaii2 小时前
STC15W1K16S 定时器T0
单片机