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 传感器的设计与落地!

相关推荐
恒森宇电子有限公司2 分钟前
芯晞微CSM4056H 单节锂离子电池充电器芯片 封装ESOP-8
单片机·嵌入式硬件
haiyangyiba8 分钟前
学习Spring Ai的摸索实践
学习·spring ai
chase。10 分钟前
【学习笔记】cuRoboV2——为高自由度机器人打造的动力学感知运动生成框架
笔记·学习·机器人
果果燕11 分钟前
ARM嵌入式学习(五)---IMX6ULL外部中断
单片机·嵌入式硬件
南境十里·墨染春水12 分钟前
C++ 笔记 多重继承 菱形继承(面向对象)
开发语言·c++·笔记
无人机90116 分钟前
Delphi网络编程实战:UDP通信与多线程网络优化详解
单片机·嵌入式硬件
泡泡鱼(敲代码中)20 分钟前
C++-string学习笔记
c语言·开发语言·c++·笔记·学习·visualstudio
ACGkaka_23 分钟前
ES 学习(六)设置账号密码(安全认证)
学习·安全·elasticsearch
知识分享小能手41 分钟前
MongoDB入门学习教程,从入门到精通,MongoDB副本集的核心机制(11)
数据库·学习·mongodb