乐于分享
好东西不私藏

自制小软件 - ModbusTCP报文分析(重写版)

自制小软件 - ModbusTCP报文分析(重写版)
    一、软件介绍:ModbusTCP 协议分析工具是一款用于工业通信协议抓包、解析和诊断的软件。软件作为透明代理部署在 Modbus 客户端和服务端之间,实时捕获并深度解析双向通信数据,帮助工程师快速定位通信问题、分析协议行为和优化系统性能。
    二、核心功能:
1. 透明代理抓包

- 非侵入式部署:作为透明代理位于客户端与服务端之间,不影响正常通信

- 双向数据捕获:同时捕获请求和响应报文,自动标记方向

- 多并发连接:支持多个客户端同时连接,每个连接独立处理

- 灵活配置:监听地址、端口和服务端地址均可自定义

- 配置持久化:所有配置自动保存,重启后恢复

- 安全停止:优雅关闭机制,确保数据不丢失   

2. 智能协议解析

 a、完整协议栈解析

- MBAP 头部:事务ID、协议ID、长度、单元ID 逐字段解析

- 功能码识别:支持 0x01-0x10 全部标准功能码

- 异常响应检测:自动识别异常码(0x81-0x90)并提供异常描述

- PDU 深度解析:按功能码分类解析数据内容

  b、支持的功能码

 0x01  读线圈 : 读取线圈状态 

 0x02  读离散输入 : 读取离散输入状态 

 0x03  读保持寄存器 : 读取保持寄存器数据 

 0x04  读输入寄存器 : 读取输入寄存器数据 

 0x05  写单线圈 : 写入单个线圈状态 

 0x06  写单寄存器 : 写入单个寄存器 

 0x0F  写多线圈 : 写入多个线圈 

 0x10  写多寄存器 : 写入多个寄存器 

    c、8 种数据格式

 UINT16 : 无符号16位整数(2字节) 

 INT16:  有符号16位整数(2字节)

 UINT32:  无符号32位整数(4字节)

 INT32 : 有符号32位整数(4字节)

 FLOAT32 : IEEE 754 单精度浮点数(4字节)

 FLOAT64  IEEE 754 双精度浮点数(8字节)

 RAW : 原始字节显示(1字节)

 Bits : 位状态显示(开关量)(每字节8位)

     d、4 种字节序模式

 大端 (ABCD) : 标准 Modbus 格式(大多数设备)

 小端 (DCBA) : 完全反转(部分变频器)

 大端交换 (BADC) : 寄存器内高低字节交换(部分PLC)

 小端交换 (CDAB) : 寄存器顺序交换(特殊设备)  

 3. 报文详情面板

    四个标签页展示报文信息:

- 概览:基本信息汇总(方向、地址、功能码、异常标记)

- MBAP 头部:事务ID、协议ID、长度、单元ID 详细字段

- PDU 数据:解析结果 + 多格式/字节序切换 + 位状态可视化

- 十六进制:标准 hex dump 格式(偏移量 + 十六进制 + ASCII)

    位状态可视化特色:

- 按字节分组,每字节 8 位独立显示

- 置位位绿色高亮,清零位灰色显示

- 鼠标悬停显示详细位信息

- 自动提示位操作报文切换到 Bits 格式    

4. 报文过滤搜索

- 排除模式:输入关键词,匹配的报文被隐藏

- 多关键词:逗号分隔,支持同时排除多种报文

- 智能匹配:自动识别功能码、地址、数据内容

- 实时过滤:输入即过滤,快速定位目标报文

    以下为免费版限制的功能:

    5、请求-响应配对分析

- 基于事务ID自动匹配请求与响应

- 配对统计(成功数、未匹配数)

- 响应时间分析(平均、最大响应时间)

- 配对详情列表

    6、手动报文输入与解析

- 支持手动输入或粘贴 ModbusTCP 报文十六进制数据

- 内置示例报文(读寄存器请求、写单寄存器请求、异常响应)

- 解析后支持所有查看功能(概览/MBAP/PDU/Hex)

- 解析结果可添加到报文列表

    7、数据导出

    三种格式导出:

- TXT 格式:含统计摘要和十六进制转储

- JSON 格式:结构化数据,完整序列化

- CSV 格式:表格格式,方便导入 Excel 分析

    8、报文显示无限制

    软件测试截图: