工业产品线

Modbus RTU 通信入门:从接线到第一次数据读取


Modbus RTU 是工业串口通信领域应用范围广泛的协议。PLC、传感器、仪表、变频器——几乎所有支持串口通信的工业设备都支持 Modbus RTU。

这篇文章带你从零开始:接线 → 配置 → 发送第一条命令 → 读到数据。不需要提前掌握任何 Modbus 知识,一步一步跟着做就行。

Modbus RTU 是什么

一句话:Modbus RTU 是跑在 RS485 总线上的通信协议。

主从架构: 一个主站发起请求,从站响应。主站问”你的温度是多少”,从站答”25.6°C”。从站不会主动说话,永远是主站先问。

为什么是工业通信的通用语言: Modbus 协议完全开放、规范简洁、容易实现。发布四十多年来,全球范围内积累了庞大的设备生态。不管你买哪家的温度传感器、电力仪表、变频器,说明书里几乎都会有一章叫”Modbus 通信”。

好消息: 你不需要学完整个 Modbus 规范。掌握两个功能码——03(读保持寄存器)06(写单个寄存器)——就能覆盖 90% 的实际场景。

Modbus RTU 主从架构 主站(Master) 电脑 + USB转485 请求:读寄存器 40001 响应:值 = 256(25.6°C) 从站 #1 温度传感器 从站 #2 电力仪表 RS485 总线(A+ / B- / GND) 主站发起请求 → 指定从站响应 → 其他从站保持沉默 从站不会主动发送数据,永远是主站先问

准备工作

硬件

三样东西:

1. 电脑(Windows 10/11) 2. USB 转 RS485 转接线——推荐摩可灵 CH368(CH343 芯片,免驱)或 CH348A(FT231 芯片,低延迟)。免驱产品插上就能用,不需要额外安装驱动 3. 一台 Modbus RTU 从站设备——温度传感器、电力仪表、变频器等,任何支持 Modbus RTU 的设备都可以

软件

Modbus 调试工具,推荐以下两款:

工具 费用 特点
Modbus Poll 付费(有试用) 功能全面,界面直观,工程师常用
ModbusMaster 免费 轻量够用,适合入门

确认从站信息

在发送任何命令之前,你需要从设备手册中获取四个参数:

参数 说明 示例
站地址 从站的 Modbus 地址(1~247) 1
波特率 通信速率 9600
数据格式 数据位 / 停止位 / 校验 8-N-1(8 数据位、无校验、1 停止位)
寄存器地址 你想读的数据在哪个寄存器 40001(保持寄存器起始地址)

这四个参数缺一不可。翻不到手册就找设备厂家要。参数不对,通信一定不上——不是你的线有问题,是参数没配对。

接线

USB 转 RS485 到 Modbus 从站设备,只需要三根线:A+、B-、GND。

Modbus RTU 接线示意 电脑 USB 口 Modbus 调试工具 USB USB 转 RS485 摩可灵 CH368 (CH343 免驱) A+ B- GND Modbus 从站 温度传感器 / 仪表 / 变频器 等 三根线:A+ 对 A+,B- 对 B-,GND 对 GND 入门阶段短距离接一台设备,终端电阻可先不接

接线规范的完整说明(A/B 辨别、终端电阻、线缆选型)详见《RS485 接线规范与常见错误:A+/B-/GND/终端电阻全解》。入门阶段只接一台设备、距离很短的话,接对 A/B/GND 三根线就够了,终端电阻可以先不管。

第一次读取数据

步骤一:插上转接线,确认 COM 口

把 USB 转 RS485 转接线插入电脑 USB 口。打开设备管理器(Win+X → 设备管理器),在”端口(COM 和 LPT)”下找到新出现的 COM 口,记住编号(比如 COM3)。

如果用的是免驱产品(CH343 或 FT231 芯片),插上就会出现。如果用的是 CH340 芯片产品,需要先安装驱动,详见《CH340 芯片 USB转串口驱动安装指南(Windows 10/11)》。

步骤二:配置串口参数

打开 Modbus 调试工具,配置连接参数:

参数 填什么 对应手册中的
COM 口 步骤一记下的编号(如 COM3)
波特率 设备手册中的值(如 9600) Baud Rate
数据位 通常 8 Data Bits
停止位 通常 1 Stop Bits
校验 通常 None Parity

[图片占位:Modbus 调试工具串口配置界面截图——标注每个参数填写位置]

步骤三:发送读取命令(功能码 03)

功能码 03 = 读取保持寄存器(Read Holding Registers)。这是用得多的一个命令。

在 Modbus 工具中设置:

参数 含义
Slave ID 1 从站地址(看设备手册)
Function 03 读保持寄存器
Start Address 0 起始寄存器地址(注意:有的工具从 0 开始,有的从 1 开始)
Quantity 10 读取 10 个寄存器

寄存器地址有两种表述方式:Modbus 地址 40001 = 协议地址 0x0000,两者差 40001。有些工具和文档用 Modbus 地址,有些用协议地址。混淆这两种地址是 Modbus 通信中常见的错误之一——如果读不到数据,先检查地址有没有搞混。

点击”发送”或”读取”,如果接线和参数都正确,你会看到返回的数据。

Modbus RTU 数据帧结构(功能码 03:读保持寄存器) 请求帧(主站 → 从站) 01 站地址 03 功能码 00 00 起始地址 00 02 寄存器数量 C4 0B CRC 校验 从站 #1 读寄存器 从第 0 个 读 2 个 自动计算 响应帧(从站 → 主站) 01 站地址 03 功能码 04 字节数 01 00 寄存器 1 00 64 寄存器 2 XX XX CRC 校验 2×2=4字节 = 256 = 100 数据含义由设备决定 例:温度传感器返回 256 → 实际温度 25.6°C(原始值 ÷ 10)

步骤四:解读响应

Modbus RTU 的数据帧结构很规整。以读取 2 个寄存器为例:

请求帧(主站发出):

字节 内容 含义
01 01 从站地址
02 03 功能码(读保持寄存器)
03-04 00 00 起始寄存器地址(0000 = 第 1 个)
05-06 00 02 寄存器数量(2 个)
07-08 C4 0B CRC 校验(工具自动计算)

响应帧(从站返回):

字节 内容 含义
01 01 从站地址
02 03 功能码
03 04 数据字节数(2 个寄存器 × 2 字节 = 4)
04-05 01 00 寄存器 1 的值(0x0100 = 256)
06-07 00 64 寄存器 2 的值(0x0064 = 100)
08-09 XX XX CRC 校验

数据怎么解读: 寄存器返回的是原始数值,具体含义由设备决定。比如温度传感器返回 256,可能表示 25.6°C(原始值除以 10)。这些换算关系在设备手册的寄存器表里都有说明。

写入数据

功能码 06 = 写入单个保持寄存器(Write Single Register)。

比如你要把从站地址 1 的寄存器 0x0010 写入值 100:

字节 内容 含义
01 01 从站地址
02 06 功能码(写单个寄存器)
03-04 00 10 寄存器地址
05-06 00 64 写入值(100)
07-08 XX XX CRC

写入成功后,从站会原样返回这个帧作为确认。

写入操作会实际改变设备状态。比如写变频器的频率寄存器,电机转速会立刻变化。操作前确认目标寄存器的含义和安全范围,不要盲目写入。

Modbus RTU 关键概念速查

常用功能码

功能码 名称 用途
01 读线圈状态 读开关量(ON/OFF)
02 读离散输入 读只读开关量
03 读保持寄存器 读数据(温度、电压等)
04 读输入寄存器 读只读数据(传感器实时值等)
06 写单个寄存器 写一个数据

03 和 06 覆盖绝大多数场景。04 用于读取只读的实时采集值。01 和 02 在数字量 I/O 场景下用到。

数据格式注意事项

大端序(Big-Endian): Modbus 标准规定数据高字节在前。一个 16 位的值 0x0100,传输时先发 01,再发 00。

32 位浮点数: 有些设备用两个连续的 16 位寄存器拼一个 32 位浮点数(IEEE 754)。拼接顺序(高位在前还是低位在前)因设备而异——手册会说明。

CRC 校验: Modbus RTU 帧末尾的 2 字节 CRC-16 校验。调试工具会自动计算,不需要手算。

寄存器地址约定

地址范围 功能码 类型
00001 ~ 09999 01 线圈(读写开关量)
10001 ~ 19999 02 离散输入(只读开关量)
30001 ~ 39999 04 输入寄存器(只读数据)
40001 ~ 49999 03/06 保持寄存器(读写数据)

下一步

读到了第一笔数据,Modbus 入门就完成了。后续根据你的实际需求:

单台设备通了,要接多台设备 → 需要 RS485 集线器做组网。详见《RS485 集线器组网指南:一主多从架构设计与选型》。

通信不稳定,偶尔丢数据 → 详见《RS485 通信不稳定:干扰、断连、乱码的系统排查》。

多台设备波特率不一致 → 摩可灵 CH1402-21C / CH1402-21C1 波特率修改器可以解决。详见《485 波特率修改器使用指南:小程序设置全流程》。

要连接具体品牌的 PLC → 详见各品牌 PLC 配置指南(西门子、三菱、台达等)。


← 返回文章列表
QQ 咨询
添加 QQ 1741833775 批量报价 · 专属对接
企业微信二维码 添加企业微信
批量报价·专属对接
企业微信