ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

QModMaster:免费的 ModBus 主站调试工具,RTU 和 TCP 寄存器读写一次搞定

QModMaster:免费的 ModBus 主站调试工具,RTU 和 TCP 寄存器读写一次搞定 QModMaster免费的 ModBus 主站调试工具RTU 和 TCP 寄存器读写一次搞定【免费下载链接】qModbusMasterFork of QModMaster (https://sourceforge.net/p/qmodmaster/code/ci/default/tree/)项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster上周有个工程师问我手里只有一台支持 03 功能码读保持寄存器即读设备里的实时数据区的温度变送器厂商给的那套调试软件要单独授权装不上。答案其实就一行——用 QModMaster。它是一个基于 Qt 的免费开源 ModBus 主站Master主动发起读写的上位机应用同一套界面同时支持 ModBus RTU走 RS-485 串口和 ModBus TCP走网线默认端口 502两种协议Windows 和 Linux 都能跑GPLv3 许可。它替你把哪几件事干了一次连接管两种物理层RTU 填串口号、波特率常用 9600、校验位、数据位、停止位TCP 只填 IP 和端口 502两套参数互不干扰。四类数据点位全覆盖线圈、离散输入、输入寄存器、保持寄存器对应功能码 01/02/04/03读、05/15写线圈、06/16写寄存器主窗口里选功能码就能发。帧级总线监控器每一帧 Tx/Rx 都被解析成地址、功能码、数据、校验排障不用猜。周期扫描加错误计数定时器自动轮询状态栏累计 Packets 和 Errors适合长时间盯设备稳定性。网络诊断面板Tools 窗口里内置 ping、端口连通性测试和 ModBus 诊断先把网络层验证干净再谈协议层。适合谁调试变频器、电表、温控器这类带 ModBus 口设备的应用工程师以及想读源码学习 ModBus 协议实现的初学者。装完到读到第一个寄存器最短路径获取代码Windows 用户也可以直接找预编译包解压即用git clone https://gitcode.com/gh_mirrors/qm/qModbusMaster编译只需 Qt 5.2.1 及以上用 Qt Creator 打开根目录的qModMaster.pro选编译器运行。libmodbus 通信库和 QsLog 日志库已放在 3rdparty/ 里不用另外装依赖。首次连接主窗口选模式RTU 或 TCP→ 打开通信设置页填参数 → 填从站 ID设备在总线上的编号设备手册里有→ 点连接状态栏变绿即通。读一次数据起始地址填 0数量填 4功能码选 03点读取表格里立刻出值。第一次验证建议走 TCP 连本机回环地址只填 IP 和端口 502 两个参数变量最少失败时最容易定位。核心功能速览寄存器表格读回的数据按行排列显示可切十六进制/十进制、有符号/无符号、16 位/32 位双字数据不用自己拼补码。总线监控器发送帧和响应帧分开解析错误帧标记支持保存到文件是定位设备在线但数据不对的第一现场。周期扫描设一个扫描间隔毫秒级软件按节奏轮询Packets/Errors 计数实时可见。会话文件当前模式、从站 ID、功能码、起始地址、数量整套参数存成一个 INI 文件下次直接加载恢复。诊断工具ping、端口测试、ModBus 诊断三个动作覆盖从网络层到协议层。走通一条完整链路从接线到 03 功能码读回数据以一台走 RS-485 的温控器为例从站 ID 是 1波特率 9600无校验、8 数据位、1 停止位N-8-1手册标注温度值在 0x0000 起的两个保持寄存器USB 转 485 线接好A/B 两根线对设备端子顺序别反。QModMaster 选 RTU 模式设置页填入串口号、9600、N-8-1点连接。从站 ID 填 1。这个值错了整条总线都不会理你。起始地址 0数量 2功能码 03点读取。表格里出现两个原始值。对照手册做换算——多数设备是 原始值 × 0.1 或 ÷ 1000 这类比例显示格式在表格列设置里切十进制即可。打开总线监控器确认请求帧和响应帧的从站地址、功能码一致再开周期扫描间隔 5 秒观察 Errors 是否始终为 0。排障速查四个高频坑RTU 一连就报错串口明明没选错先怀疑权限——Linux 下用户不在 dialout 组就打开不了串口设备用usermod -aG dialout $USER处理后重新登录。再核对波特率、校验位与从站完全一致确认没有其他程序占着这个串口。TCP 连不上03 功能码发出去没回应大概率是端口没通不是 ModBus 的问题。打开 Tools 面板先 ping 目标 IP再做 502 端口测试端口测试通、ModBus 无响应才轮到怀疑从站 ID。读到的值全是负数或明显不对不是设备坏了是显示格式没配对。切有符号/无符号和 16 位/32 位两档找到与寄存器定义一致的组合32 位数据还要确认高低字顺序是否符合设备手册。写 06 功能码后设备参数乱了写之前没有读原值。习惯养成任何写操作05/06/15/16前先把当前值读一遍记下来操作前顺手存一个会话文件出错能回滚。拿不准问题出在哪一层时顺序永远是先 Tools 里验证网络和端口再看总线监控器里的帧最后才怀疑功能码和地址参数。进阶与生态依赖只有两个且都已内置通信层基于 libmodbus 3.1.0-1日志基于 QsLog都在 3rdparty/ 下。协议依据是 Docs/ 里的 ModBus 应用协议规范 PDF用户手册是 ManModbus/ 目录下的整套 HTML 页面浏览器直接打开。通信核心在 src/modbusadapter.cpp界面逻辑在 src/mainwindow.cpp通信层与界面层分离想在自动化测试系统里集成、加协议或改界面从这两个文件入手。许可是 GPLv3商用集成前确认你的分发方式符合条款。总结✅ 双协议RTU 串口与 TCP 网络同一界面切换✅ 全功能码01/02/03/04 读、05/06/15/16 写全覆盖✅ 帧级监控总线监控器逐帧解析 Tx/Rx✅ 周期扫描自动轮询加 Packets/Errors 计数✅ 格式翻译十六进制/十进制、有符号、16/32 位自由切换✅ 会话保存整套参数存 INI一次填写反复用✅ 跨平台Windows 预编译包Linux 用 Qt 直接编译✅ 免费开源GPLv3 许可源码可学习可二开现在把仓库克隆下来连上你身边任何一台 ModBus 设备读一次 03 功能码。【免费下载链接】qModbusMasterFork of QModMaster (https://sourceforge.net/p/qmodmaster/code/ci/default/tree/)项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进