当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4196347.html

相关文章:

  • DFT硅后诊断与良率提升技术
  • 用Jellyfin搭家庭照片服务器:3步建好私有云相册
  • 【计算机毕业设计单片机案例】集成 JQ8400 语音播报的病床无线呼叫硬件系统设计 基于 STM32/51 单片机的医患双向呼叫信号采集系统设计(020204)
  • 在树莓派上配置yolo
  • AI应用开发中的敏感信息泄漏:日志为何把手机号原样写进去
  • LLM-Cookbook 学习——搭建基于 ChatGPT 的问答系统>第十章 评估(下)——当不存在一个简单的正确答案时
  • 通俗搞懂 K8s CRD 和 CR:是什么、有什么用、怎么用
  • AI编程术语大全(二):Vibe Coding -AI 编程核心术语与实战指南
  • C语言问题之指针和数组定义和使用
  • 三维扫描一键变 CAD:Scan2CAD 把家具模型自动摆进真实房间
  • 软件测试面试核心考察维度与高频技术问题解析
  • 企业级Spring Boot库存管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 集合排序和流排序
  • 【C++ 面试真题】29. 聊聊 C++ 的线程管理(std::thread)
  • 单片机毕设项目:基于 STM32/51 单片机的4 通道无线病房呼叫液晶显示与语音报警系统设计 主从架构 NRF24L01 病床呼叫终端软硬件设计(020204)
  • 7个我自己常用的学习网站
  • 开源地理空间智能项目中的本体思想 4-2:影像篇——影像不进图谱,图谱给影像当索引
  • 【自适应滤波实战】归一化最小均方 (NLMS) 自适应噪声对消全解析:原理推导 + 数值实例 + Python 代码实现
  • c语言的纸币找零问题
  • 全球贸易进入“高关税时代”:企业必须重新学习如何做全球生意
  • DeepSeek Harness + GLM-5.3 超详细实战教程:我拼了套自己的AI 工位,还自己开发插件!
  • 扫描件加文本层:OCRmyPDF 离线使用完整指南
  • 溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测
  • 压电定位平台为什么要闭环?开环误差、传感器基准与Python测试
  • 大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍
  • 如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南
  • DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操
  • KeyboardChatterBlocker 实战教程:按键调阈值,修掉机械键盘连击
  • 【单片机课设毕设项目】基于 51/STM32 单片机的红外人体感应防盗报警环境监控系统设计 基于 51/STM32 单片机的 LCD1602 显示环境感知智能安防系统设计(017504)
  • Python Web后端框架FastAPI vs Flask