Modbus 三种协议调试 RTU ASCII TCP
什么是 Modbus
Modbus 是工业自动化领域使用最广泛的通信协议之一。它定义了主站(Master)如何从站(Slave)请求数据和下发指令。Modbus 有三种常见变种:
| 变种 | 传输方式 | 典型场景 |
|---|---|---|
| Modbus RTU | 串口二进制 | 现场设备 RS485 通信 |
| Modbus ASCII | 串口 ASCII 文本 | 早期设备、调试用 |
| Modbus TCP | 以太网 TCP 502 端口 | 现代设备、PLC 网络通信 |
NetAssist 的内置模拟器
和 JT 808 类似,Modbus 模拟器也在左侧工具面板中。打开后可以选择要模拟的协议变种,构造标准 Modbus 指令发出。
常用功能码
| 功能码 | 含义 | 说明 |
|---|---|---|
| 01 | 读线圈(Read Coils) | 读取开关量输出状态 |
| 02 | 读离散输入(Read Discrete Inputs) | 读取开关量输入状态 |
| 03 | 读保持寄存器(Read Holding Registers) | 读取模拟量输出值 |
| 04 | 读输入寄存器(Read Input Registers) | 读取模拟量输入值 |
| 05 | 写单个线圈 | 控制开关量输出 |
| 06 | 写单个寄存器 | 设置模拟量输出 |
| 0F | 写多个线圈 | 批量控制 |
| 10 | 写多个寄存器 | 批量设置 |
使用步骤
- RTU 模式:需要串口调试助手配合,或通过网络透传串口的设备,在 NetAssist 发送端手动构造 RTU 帧(含 CRC16)。
- ASCII 模式:构造 ASCII 格式指令(冒号开头、CRLF 结尾、LRC 校验)。
- TCP 模式:以 TCP Client 连接目标设备的 502 端口,模拟器自动构造 MBAP 头 + PDU + CRC 的完整 Modbus TCP 帧。
与自动应答配合
如果你在调试 Modbus 主站(比如 PLC),需要模拟从站来响应它的请求。可以:
- NetAssist 开 TCP Server 监听 502 端口。
- 启用自动应答规则。
- 用 正则匹配 提取 Modbus 功能码和寄存器地址。
- 根据匹配到的内容自动回复正确的 Modbus 响应帧。
CRC 校验
Modbus RTU 要求 CRC16 校验。可以用 NetAssist 的 自动附加校验位 功能,自动算出并附加 CRC16——手动算容易出错。
典型实操
场景:验证 Modbus 从站响应速度
在 NetAssist 中不断发送 01 03 00 00 00 0A(读从站 01 的 10 个保持寄存器),开启日志时间戳观察从站每次响应的延迟。配合循环发送功能,可以做长时间的稳定性测试。