Modbus-RTU 通信工具
项目简介
Modbus-RTU 通信工具是一个基于 Python Tkinter 开发的图形界面应用程序,旨在帮助用户轻松地与 Modbus 设备进行通信。该工具支持多种功能码的读写操作,可以用于工业自动化设备的调试、监控和数据分析。
软件界面截图


功能特性
核心功能
- 串口通信:支持标准串口参数配置(波特率、校验位、停止位、数据位)
- 多协议支持 :支持多种 Modbus 功能码,包括:
- 01: 读线圈寄存器
- 02: 读离散输入寄存器
- 03: 读保持寄存器
- 04: 读输入寄存器
- 05: 写单个线圈
- 06: 写单个保持寄存器
- 07: 读取异常状态
- 08: 诊断
- 11: 获取通信事件计数器
- 15: 写多个线圈
- 16: 写多个保持寄存器
高级功能
- 参数自动扫描:自动识别设备的串口通信参数
- 实时抓包:捕获并解析 Modbus 通信数据
- 批量读取:自动读取所有功能码的数据
- 数据可视化:实时绘制寄存器数值曲线图
- 报警功能:当数值超出设定范围时发出报警
- 寄存器别名:为寄存器地址设置易于理解的名称
- 数据导出:支持导出 TXT 和 Excel 格式的数据文件
数据处理
- 结构化数据存储:按时间、从站地址、功能码等分类存储
- 历史数据管理:支持数据保存和回放
- 实时监控:持续监控指定寄存器的数值变化
系统要求
- Python 3.10 或更高版本
- Windows 操作系统(支持报警蜂鸣功能)
依赖库
安装前请确保已安装以下 Python 库:
bash
pip install pyserial
pip install openpyxl
pip install matplotlib
安装说明
- 下载项目源代码
- 安装上述依赖库
- 运行
python main.py
使用指南
1. 串口连接
- 连接 Modbus 设备到计算机串口
- 点击"检测串口"按钮,选择正确的串口
- 配置串口参数(波特率、校验位、停止位、数据位)
- 点击"打开串口"建立连接
2. 参数自动扫描
如果不知道设备的串口参数,可以使用参数扫描功能:
- 确保串口已打开
- 点击"扫描参数"按钮
- 程序将自动尝试各种参数组合
- 找到有效参数后会自动应用
3. 数据读写操作
- 选择功能码(01-16)
- 设置从站地址、起始地址和数量
- 配置写入值(如果是写操作)
- 点击"执行操作"进行读写
4. 批量读取
- 在批量参数框中输入读取参数,格式为"功能码:起始地址,数量"
- 设置读取间隔时间
- 点击"批量读取"按钮开始操作
5. 数据可视化
- 在"数据可视化"标签页输入要监控的寄存器地址
- 点击"开始监控"按钮
- 实时曲线图将显示该寄存器数值的变化
6. 报警配置
- 点击"报警配置"按钮
- 输入寄存器地址和数值范围(最小值和最大值)
- 当数值超出范围时,系统将发出声音报警并显示提示
7. 寄存器别名
- 点击"寄存器别名"按钮
- 为寄存器地址设置易记的别名
- 在日志中将以别名形式显示寄存器地址
快捷键
- F5: 打开串口
- F6: 开始抓包
- F7: 停止操作
- Ctrl+S: 保存日志
- Ctrl+E: 导出 Excel
配置文件
项目包含以下配置文件:
modbus_config.json: 存储串口参数、从站地址等历史配置reg_aliases.json: 存储寄存器地址与别名的映射关系alarm_config.json: 存储报警配置信息
注意事项
- 确保正确连接 Modbus 设备,注意接线方式(A/B 线)
- 正确设置串口参数,特别是波特率和校验方式
- 从站地址必须在设备支持的范围内
- 功能码 05 和 15 操作需谨慎,避免意外修改设备状态
- 批量读取时注意设置合适的间隔时间,避免通信过载
故障排除
无法连接设备
- 检查串口线是否正确连接
- 确认串口号是否选择正确
- 验证串口参数设置(波特率、校验位等)
读取数据异常
- 检查从站地址是否正确
- 确认功能码与寄存器类型匹配
- 验证起始地址和数量设置
数据解析错误
- 检查 CRC 校验是否正确
- 确认数据格式符合 Modbus 协议规范
开发维护
该项目使用模块化设计,易于扩展新功能:
- 串口通信模块
- 数据解析模块
- UI 界面模块
- 数据存储模块
- 报警处理模块