一文看懂 Modbus RTU 协议:核心架构、报文解析与现场调试避坑指

一文看懂 Modbus RTU 协议:核心架构、报文解析与现场调试避坑指

目录

一、 核心架构:主从式结构 (Client/Server)

二、 常见传输模式:RTU 与 TCP

三、 数据模型:四类存储寄存器

四、 常用功能码 (Function Codes)

五、 报文结构示例 (Modbus RTU)

六、 常见问题与排查思路


一、 核心架构:主从式结构 (Client/Server)

Modbus 采用典型的主从式通信模型

主站 (Master/Client):唯一的指令发起方,同一网络内同一时刻仅存在一台主站,负责主动查询从站数据 / 下发控制指令;

从站 (Slave/Server):指令被动响应方,每台从站配备唯一站号(ID),仅在被主站点名调用时反馈数据 / 执行指令,无主动发送数据的权限;

  • 注意: 从站不会主动发送数据,只有在被主站“点名”后才会做出应答。

二、 常见传输模式:RTU 与 TCP

虽然 Modbus 的应用层逻辑一致,但物理层传输方式主要分为以下两种:

对比维度

Modbus RTU

Modbus TCP

通信架构

主从式半双工(一主多从,同一时间仅一台设备发数据)

客户端 / 服务器式全双工(支持多客户端并发访问)

传输速率

600~115200 bps

10/100/1000 Mbps

地址标识

(1~247)区分设备

IP 地址 + 端口号(默认 502)区分设备

传输距离

RS-485 总线最长 1200 米(可加中继延长)

以太网有线传输最长 100 米(交换机 / 光纤可拓展)

抗干扰性

RS-485 差分传输,抗电磁干扰能力强

需做好以太网防雷、防静电措施

三、 数据模型:四类存储寄存器

Modbus 将数据抽象为四个基本的表。理解这四张表,就理解了数据该如何读写:


四、 常用功能码 (Function Codes)

主站通过“功能码”告诉从站要做什么。最常用的功能码如下:

01 (Read Coils): 读线圈状态

02 (Read Discrete Inputs): 读线圈状态输入

03 Read Holding Registers): 读保持寄存器

04 Read Input Registers): 读输入寄存器

05 (Write Single Coil): 写单个线圈

06 (Write Single Register): 预置单个寄存器

15 (Write Multiple Coils): 写多个线圈

16 (Write Multiple Registers):预置多个寄存器

五、 报文结构示例 (Modbus RTU)

请求帧结构

站号

命令号

起始地址

寄存器数量

校验位

一个字节

一个字节

个字节

个字节(N)

个字节

响应帧结构

站号

命令号

字节数

数据

校验位

一个字节

一个字节

个字节(2N)

N*2个字节

两个字节

我们以一个称重仪表的数据点表来举例

根据该点表显示皮重数据的寄存器地址为40001、40002,两个寄存器

假设台秤站号为10号,则主站发送的请求帧为

站号

命令号

起始地址

寄存器数量

校验位

0A

03

00 00

00 02

70 C5

台秤响应帧应为

站号

命令号

字节数

数据

校验位

0A

03

04

00 00 00 00

F3 40

六、 常见问题与排查思路

在现场调试 Modbus 时,如果通信不通,请按以下顺序排查:

  1. 物理连接:
    1. 通信异常时,需逐一校验 RS-485 D+/D- 接线极性、RS-232 TX/RX 收发交叉关系;若使用网关其串口指示灯状态是判断链路通断的核心依据,可通过灯态来快速定位问题;
    2. 核查总线拓扑是否合规:从站需采用手拉手串联方式,终端电阻仅在总线两端设备并联启用;
  2. 参数匹配:波特率(Baud rate)、数据位、停止位和校验位(N,8,1 或 E,8,1)两端必须完全一致
  3. 设备 ID:确认从站站号是否冲突或设置错误
  4. 偏置地址:注意“0-based”与“1-based”地址的区别。有些说明书写地址 1,但在报文中需要发 0。例如Modbus 40001在报文中是00 00;注意读取的寄存器数量不要超出从站的上限

本期 Modbus RTU 技术分享就到这里。

下期我们将对 MODBUS RTU 其他功能码进行详解,以及相对应的错误报文解析。

从功能码的场景化落地应用,到错误报文的快速定位排障,全是工业现场可直接复用的实操干货。

点击关注本企业号,第一时间获取更新,技术成长不迷路!

Read more

Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构

Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构 前言 在鸿蒙(OpenHarmony)生态迈向多端协同、涉及大量轻量级 IOT 设备(如智能穿戴、工业传感器)及微服务透传的背景下,如何实现快速、低开销的 HTTP 通讯,已成为决定应用“响应敏捷度”的关键工程要素。在鸿蒙设备这类强调内存精简与极速启动的环境下,如果应用依然无差别地引入像 Dio 这种包含复杂拦截器、适配器及多重缓存逻辑的“重型网络航母”,由于由于框架初始化开销大、内存足迹(Memory Footprint)偏深,极易由于由于“过度封装”导致边缘设备主线程的瞬间负载过高。 我们需要一种能够剥离样板代码、支持一键 JSON

By Ne0inhk
MySQL查看命令速查表

MySQL查看命令速查表

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 1 ~> MySQL 查看类命令大全 * 1.1 查看数据库 * 1.2 查看表 * 1.3 查看数 * 1.4 查看用户 / 权限 * 1.5 最常用组合(截图里就是这套) * 2 ~> MySQL常用核心命令速查表 * 2.1 MySQL 常用核心命令速查表 * 2.

By Ne0inhk
山东大学《Web数据管理》期末复习宝典【万字解析!】

山东大学《Web数据管理》期末复习宝典【万字解析!】

🌈 个人主页:十二月的猫-ZEEKLOG博客 🔥 系列专栏:🏀山东大学期末速通专用_十二月的猫的博客-ZEEKLOG博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光  目录 1. 第二章 网络爬虫 1.1 爬虫基础知识 1.2 爬虫分类 1.3 开源工具 Nutch 2. 第三章 网页分析 2.1 正则表达式 2.2 DOM模型 2.3 Beautiful Soup工具 2.4 Scrapy框架 2.5 不同爬虫工具比较 2.6 元搜索引擎 3. 第四章 爬虫与网站的博弈 3.1 Robot协议 3.

By Ne0inhk
Flask工厂模式与蓝图设计:构建可扩展大型应用的架构之道

Flask工厂模式与蓝图设计:构建可扩展大型应用的架构之道

目录 📖 摘要 🏗️ 第一章:为什么需要工厂模式? 1.1 从单体应用到模块化架构 1.2 工厂模式的诞生 1.3 性能提升数据 🔧 第二章:Flask应用工厂深度解析 2.1 基础工厂实现 2.2 配置管理 2.3 扩展初始化顺序 🧩 第三章:蓝图模块化架构 3.1 蓝图基础 3.2 企业级蓝图结构 3.3 蓝图间通信 🚀 第四章:完整电商平台实战 4.1 项目结构 4.2 应用工厂完整实现 4.3 数据模型设计 4.4 测试策略 🚀 第五章:

By Ne0inhk