Modbus协议的基本操作步骤
时间: 2026-06-17      作者 : 深圳市昊华传感器技术有限公司

Modbus 是一种请求/响应式的主从协议,通信过程由主站(客户端)发起,从站(服务器)响应。无论串行链路(RTU/ASCII)还是以太网(Modbus TCP),核心操作步骤基本一致,可按以下流程理解:

1. 主站构建请求帧

image.png

l       确定目标从站地址(TCP 中对应单元标识符,RTU 中为 1 字节地址)。

l 选择功能码(如 03 读保持寄存器、06 写单个寄存器等)。

l 填入数据区(寄存器起始地址、数量、写入值等)。

l 计算差错校验(RTU 用 CRC-16,ASCII 用 LRC,TCP 由底层 TCP 负责)。

示例请求帧(RTU 模式,读保持寄存器):
[从站地址 1B][功能码 03][起始地址 2B][寄存器数量 2B][CRC 2B]

2. 主站发送请求

image.png

l       在串行线路上,主站将帧以二进制发出(RTU)或以 ASCII 字符发出(ASCII)。

l TCP 网络中,主站先建立 TCP 连接(端口 502),再发送包含 MBAP 报文头 + 请求帧的数据包。

3. 从站接收并校验

image.png

l  从站持续监听,当收到完整帧后:

a. 地址检查:只有地址匹配(或广播地址 0)的从站才处理。

b. 完整性检查:通过 CRC/LRC 或 TCP 校验判断帧是否损坏。若错误,丢弃并等待主站超时重发。

l(广播请求:功能码如写操作可广播,此时从站不回复。)

4. 从站执行操作

image.png

l       解析功能码与数据区,执行相应动作:

a. 读取线圈、离散量、保持寄存器、输入寄存器。

b. 写单个/多个寄存器或线圈。

c. 读取设备识别信息等。

l 在执行过程中,若出现非法功能码、地址越界、设备故障等,则转入异常处理。

5. 从站构建响应帧

l 正常响应:将功能码原样返回(写操作)或附上数据(读操作)。

a. 如读寄存器响应:[从站地址][功能码][数据字节数][寄存器数据…][CRC]

l 异常响应:功能码    最高位置 1(即功能码 + 0x80),后跟异常码(如 02 非法地址、03 非法数据等)。

a. 例:[从站地址][0x83][异常码 02][CRC] 代表读保持寄存器时地址非法。

6. 从站发送响应

image.png

l 将响应帧发回主站(RTU/ASCII 需在帧间保持静默间隔 ≥ 3.5 字符时间)。

l 对于 Modbus TCP,数据包通过已建立的 TCP 连接返回。

7. 主站接收与处理

image.png

l       主站等待响应(一般设置超时时间,如 1 秒)。

l 若收到有效响应:

a. 校验地址、功能码,并根据正常或异常做业务处理。

l 若超时或校验错误:

a. 主站可根据策略重试(通常 2~3 次),仍失败则报通信故障。

典型时序简图(主站视角)

image.png 

重要补充

l 半双工/全双工:串行 Modbus 多为半双工(RS-485),主站发完请求后必须立即转为接收状态;TCP 全双工,可在同一连接上连续发送多个请求,用 MBAP 头中的事务标识符匹配响应。

l 广播:主站发往地址 0,所有从站执行动作但不回送响应。

l 功能码示例01 读线圈、02 读离散输入、03 读保持寄存器、04 读输入寄存器、05 写单线圈、06 写单寄存器、15/16 写多线圈/多寄存器。

 

以上即是 Modbus 协议一次完整交互的基本步骤。理解了这个请求-应答模式,就抓住了 Modbus 的核心运作方式。