在线Modbus-TCP报文解析器
编程开发
在线解析Modbus TCP通信协议报文,支持MBAP头部解析,主站→从站、从站→主站双向解析,详细解读事务标识、协议标识、单元标识、功能码、数据域
Modbus TCP 协议解析 支持 8 种功能码 MBAP 头部解析
快捷样例
报文输入
支持空格、0x前缀,自动过滤非法字符
常用功能码参考
0x01
读线圈寄存器
取得一组逻辑线圈的当前状态(ON/OFF)
数据类型:位
0x02
读离散输入寄存器
取得一组开关输入的当前状态(ON/OFF)
数据类型:位
0x03
读保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
数据类型:整型、浮点型、字符型
0x04
读输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
数据类型:整型、浮点型
0x05
写单个线圈寄存器
强置一个逻辑线圈的通断状态
数据类型:位
0x06
写单个保持寄存器
把具体二进制值装入一个保持寄存器
数据类型:整型、浮点型、字符型
0x15
写多个线圈寄存器
强置一串连续逻辑线圈的通断
数据类型:位
0x16
写多个保持寄存器
把具体的二进制值装入一串连续的保持寄存器
数据类型:整型、浮点型、字符型
工具说明
📖 Modbus TCP 报文结构
| 字段 | 长度 | 描述 |
|---|---|---|
| 事务标识 | 2 字节 | Modbus请求/响应事务处理的标识 |
| 协议标识符 | 2 字节 | 0 = Modbus协议 |
| 长度 | 2 字节 | 长度之后的字节总数 |
| 单元标识 | 1 字节 | 串行链路或其它总线的从站识别 |
| 功能码 | 1 字节 | 主机要求从机执行的操作类型 |
| 数据 | 可变(N字节) | 命令的具体参数,格式取决于功能码 |
📝 使用说明
输入报文
在输入框中粘贴或输入Modbus TCP十六进制报文
选择方向
选择报文方向:主站→从站(请求)或从站→主站(响应)
自动解析
系统自动解析MBAP头部和PDU数据单元
查看详情
查看事务标识、协议标识、单元标识、功能码和数据域详情
⚠️ 注意事项
所有解析在浏览器本地完成,不会上传任何数据
Modbus TCP使用7字节MBAP头部,与RTU的串口格式不同
TCP协议本身提供错误检测,Modbus TCP不需要额外的CRC校验
协议标识符必须为0x0000,否则不是有效的Modbus TCP报文
❓ 常见问题
Q1: Modbus TCP和Modbus RTU有什么区别?
Modbus TCP基于以太网(TCP/IP),使用MBAP头部(7字节),无CRC校验;Modbus RTU基于串口通信,无MBAP头部,有CRC校验。TCP版本更适合现代工业以太网环境。
Q2: 什么是MBAP头部?
MBAP(Modbus Application Protocol)头部是Modbus TCP特有的7字节头部,包括:事务标识符(2字节)、协议标识符(2字节,固定为0)、长度(2字节)、单元标识符(1字节)。
Q3: 事务标识符有什么作用?
事务标识符用于标识一次Modbus事务,主站发送请求时设置一个唯一值,从站响应时回传相同的值,用于匹配请求和响应,特别是在并发通信场景。
Q4: 单元标识符和RTU的地址有什么区别?
单元标识符(1字节)相当于RTU中的从站地址,范围0-255。0表示广播地址,1-247为正常从站地址,248-255保留。
Q5: 为什么没有CRC校验?
Modbus TCP基于TCP协议,TCP本身已经提供了可靠的错误检测机制(校验和、确认、重传等),因此Modbus TCP不需要额外的CRC校验。
💡 使用场景
| 场景 | 说明 |
|---|---|
| 工业以太网调试 | 解析基于TCP/IP的Modbus通信报文,排查网络通信故障 |
| PLC编程开发 | 开发和调试支持Modbus TCP的PLC程序 |
| SCADA系统集成 | 调试SCADA系统与现场设备的Modbus TCP通信 |
| 物联网网关开发 | 开发Modbus TCP到MQTT/HTTP等协议的转换网关 |
| 教学培训 | 学习Modbus TCP协议结构和MBAP头部格式 |