news 2026/8/24 15:28:45

QModMaster:ModBus 调试工具使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QModMaster:ModBus 调试工具使用指南

QModMaster:ModBus 调试工具使用指南

【免费下载链接】qModbusMasterFork of QModMaster (https://sourceforge.net/p/qmodmaster/code/ci/default/tree/)项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster

它是什么,能干什么

QModMaster 是一款免费开源的 ModBus 调试工具,基于 Qt 开发,Windows 和 Linux 都能跑。它同时支持 ModBus RTU(串口)和 ModBus TCP 两种通信方式,直接读从站设备的寄存器和线圈,也能抓总线上跑的所有数据帧。通信底层用的是 libmodbus,代码按 GPL v3 协议发布。

  • 支持 8 个标准功能码读写
  • 周期性轮询采集,扫描速率可设
  • 总线监控,抓全部请求与响应帧

先跑起来

拿到软件有两条路。

git clone https://gitcode.com/gh_mirrors/qm/qModbusMaster cd qModbusMaster qmake && make

源码编译需要机器上装好 Qt 5。Windows 用户更省事,直接从上游项目页拿预编译的 qModMaster 包,解压即用,不装 Qt 也不需要安装。

连上第一台设备:在工具栏打开对应配置窗口(RTU 串口设置或 TCP 设置),最小要填这几项:

参数说明
协议RTU(串口)或 TCP
地址RTU 填从站 ModBus 地址;TCP 填对方 IP,端口默认 502
波特率仅 RTU 需要,必须和设备一致,常见 9600

保存配置后,回主界面勾选 Connect 完成连接。状态栏会实时显示报文计数和错误计数,连没连上一目了然。

日常操作

读:主界面工具栏先选功能码(比如 Read Holding Registers 0x03),填起始地址和寄存器数量,点一次 Read/Write 按钮发出请求,结果会填进下方的寄存器表格。RTU 模式下从站地址要先填对,请求才能到对应设备。

写:选 Write Single Register(0x06)这类写功能码,设好目标地址和数值,同样方式发出。地址进制(十六进制/十进制)和数值显示基(2/8/10/16 进制)都可在工具栏切换。写错范围时从站通常返回异常帧,状态栏的错误计数会加一。

看:勾选 scan cycle 后轮询定时器按设定的扫描速率自动跑,表格数据自己刷新,不用一直手动点。要看原始报文,打开总线监控窗口(Bus Monitor),所有请求和响应的 PDU 都会解析后列出,还能把记录存成文件。程序自身日志也可以从菜单直接打开查看。

一个完整任务怎么走

任务:对一台 ModBus RTU 从站,从地址 0 开始每 5 秒读一次 8 个温度寄存器。

  1. 打开 RTU 配置,设串口号、波特率 9600、8 数据位、无校验、1 停止位,填从站地址。
  2. 主界面选功能码 Read Holding Registers(0x03),起始地址填 0,寄存器数量填 8。
  3. 勾选 Connect,先手动发一次请求,确认表格里有正常数值,不是全 0 或全 F。
  4. 把扫描速率设成 5 秒间隔,勾上 scan cycle,程序自动轮询;需要时打开总线监控,确认请求帧在按时发出。

如果第 3 步发出去没任何响应,多半是 ModBus RTU 串口配置里的从站地址或波特率没对上,逐项核对一遍即可。

踩坑记录

  • 现象:串口列表是空的,找不到设备。原因 + 解法:Windows 下去设备管理器核对 COM 口号;Linux 下普通用户对/dev/ttyUSB0没有权限,执行sudo usermod -a -G dialout $USER后重新登录再试。

  • 现象:TCP 连接建立成功,但每次读取都超时。原因 + 解法:典型的 ModBus TCP 连接超时。先 ping 目标 IP 确认网络通,再查防火墙放没放 502 端口,最后确认对端确实跑的是 ModBus TCP 而不是串口转出来的 RTU。

  • 现象:数据读回来了,但数值完全不对。原因 + 解法:多是地址进制或字节序不匹配。工具栏切一下地址基(十六进制/十进制),再对照设备手册确认数据是大端还是小端。

想看源码 / 想改点东西

  • src/modbusadapter.cpp:连接建立、读写请求、轮询定时器都在这,是所有 ModBus 通信的核心。
  • src/mainwindow.cpp:主界面逻辑,参数控件、连接状态、会话保存加载。
  • forms/busmonitor.cpp:总线监控窗口,负责解析请求/响应 PDU 和日志保存。

想加非标准功能码,改src/modbusadapter.cpp里的功能码分发,再在forms/mainwindow.uicmbFunctionCode下拉框里加一项即可。语言包在translations/目录,用 Qt Linguist 加新语言后重新编译。

更多资料

  • 协议规范:Docs/Modbus_Application_Protocol_V1_1b3.pdf
  • 项目手册(HTML):ManModbus/index.html
  • 编译配置:qModMaster.pro
  • 日志级别:程序旁QModMaster.iniLoggingLevel字段
  • 许可证:LICENSE

【免费下载链接】qModbusMasterFork of QModMaster (https://sourceforge.net/p/qmodmaster/code/ci/default/tree/)项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 15:23:35

DFT硅后诊断与良率提升技术

DFT硅后诊断与良率提升技术 副标题:故障定位、位图分析与硅诊断流程 随着工艺节点从 28nm 一路下探到 5nm/3nm,单颗 SoC 的晶体管密度突破百亿级,缺陷机制也从传统的"卡他故障"为主演变为桥接、开路、延迟、单元内部缺陷、布局相关缺陷(layout-dependent defect)…

作者头像 李华
网站建设 2026/8/24 15:20:36

用Jellyfin搭家庭照片服务器:3步建好私有云相册

用Jellyfin搭家庭照片服务器:3步建好私有云相册 【免费下载链接】jellyfin The Free Software Media System - Server Backend & API 项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin 周末把手机里4000张照片往NAS上拷,拷完了才发…

作者头像 李华
网站建设 2026/8/24 15:19:23

【计算机毕业设计单片机案例】集成 JQ8400 语音播报的病床无线呼叫硬件系统设计 基于 STM32/51 单片机的医患双向呼叫信号采集系统设计(020204)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/24 15:19:00

在树莓派上配置yolo

文章目录概要整体架构流程一、环境更新二、虚拟环境搭建技术细节小结概要 本文详细介绍了如何在树莓派(Raspberry Pi)上部署 YOLO 目标检测模型。由于树莓派基于 ARM 架构,直接运行原生 PyTorch 模型效率较低,因此需要将 YOLO 模…

作者头像 李华
网站建设 2026/8/24 15:18:54

AI应用开发中的敏感信息泄漏:日志为何把手机号原样写进去

一个订单场景的智能体,用户在对话里留下了手机号和收货地址,随后又补充了身份证号用于实名核验。智能体顺利完成了下单和核验,只是这串信息被原样写进了运行日志,又跟着日志流转到了监控和排障系统里。等开发人员回看日志排查一次…

作者头像 李华