Modbus RTU / TCP 调试
CRC16 计算、报文解析(站号、功能码、数据、CRC、异常码含义),以及主站读写:01/02/03/04 读、05/06/15/16 写。TCP 标签生成和解析 Modbus TCP 报文(MBAP),RTU 和 TCP 互转。
数据只在你的浏览器里处理,不会上传。串口收发、粘贴的报文和计算结果都不经过本站服务器。
用途
- 当 Modbus 主站,读线圈 / 离散输入 / 保持寄存器 / 输入寄存器(01/02/03/04)
- 写单个或多个线圈、寄存器(05/06/15/16),调试继电器板、传感器、变频器
- 粘贴抓到的报文,看站号、功能码、地址、数量、数据和 CRC 对不对
- 从站回异常时直接看异常码含义(非法功能、非法数据地址、非法数据值、从站忙等)
- 算 Modbus CRC16,手写报文时补校验
使用步骤
- 用 USB 转 RS-485 模块接从站的 A、B(有的板子标 D+、D-),记得共地。
- 选好波特率、校验和停止位(常见 9600 8N1 或 9600 8E1),打开串口。
- 填从站地址、功能码、起始地址和数量(写入时填值),页面实时显示带 CRC 的请求帧。
- 点「发送并等待响应」,收到的响应自动解析出寄存器值;超时时间可以调;从站返回异常时显示异常码含义。
- 手上只有抓到的报文时,贴到「报文解析」里查看各字段和 CRC。
CRC 算法:CRC-16/MODBUS,多项式 0xA001(反射 0x8005),初值 0xFFFF,结果低字节先发。例如 01 03 00 00 00 0A 的 CRC 是 C5 CD。
Modbus TCP(TCP 标签)
浏览器不能直接连 TCP 502,请用这里生成的报文配合你自己的 TCP 工具。TCP 标签只生成、解析和转换报文,不建立任何连接。
Modbus TCP 帧 = 7 字节 MBAP 头 + PDU:事务号 2 字节、协议号 2 字节(固定 00 00)、长度 2 字节(后面的字节数,含单元号)、单元号 1 字节,全部大端,没有 CRC。例如读寄存器 4 起 1 个、单元号 FF、事务号 1501:15 01 00 00 00 06 FF 03 00 04 00 01。
- 生成 TCP 请求:填事务号、单元号、功能码(01~06、15、16)、地址和数量,得到带 MBAP 头的完整帧
- TCP 报文解析:拆出事务号、协议号、长度、单元号和 PDU 各字段,协议号不是 0、长度和实际字节不一致时提示;异常响应给出异常码含义
- RTU 转 TCP:去掉末尾 CRC,站号作为单元号,加 MBAP 头(事务号可填);原帧 CRC 错或长度不对时提示
- TCP 转 RTU:去掉 MBAP 头,单元号作为站号,补 CRC;单元号是 255 这类直连值时可以改成实际站号