尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OpenModScan 完整上手指南:如何快速搭建一台免费的 Modbus 调试工具

OpenModScan 完整上手指南:如何快速搭建一台免费的 Modbus 调试工具 OpenModScan 完整上手指南:如何快速搭建一台免费的 Modbus 调试工具【免费下载链接】OpenModScanOpen ModScan is a Free Modbus Master (Client) Utility项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan凌晨接了个活:产线上变频器温度读不出来,网络是通的,可你不知道该对哪个从站地址发请求、读哪个寄存器、按哪种字节序拆数据。再猜一轮没用,这时候需要的是一把能拆包的钥匙——OpenModScan,一款免费开源的 Modbus 主站(客户端)调试工具,一次覆盖 Modbus TCP、RTU 与 RTU over TCP,装好就能连、能扫、能看包。它到底替你把哪三件事干了遇到设备读不出数据这类问题,排查通常卡在三个环节:连不上、找不到、看不懂。OpenModScan 针对这三件事各给了一套现成手段:三种传输协议一套工具搞定——Modbus TCP(以太网)、Modbus RTU(串口)、RTU over TCP(网关把 RTU 帧封装进 TCP 的场景),串口侧还能切 ASCII 模式;9 个核心功能码 17 种数据显示格式——读写线圈/离散输入/保持寄存器/输入寄存器,单寄存器/多寄存器/掩码写入;数据显示支持二进制、十六进制、16/32/64 位整数、单双精度浮点、ANSI 字符串,32/64 位值还能选 MSRF(高字在前)或 LSRF(低字在前)字序及字节翻转;不用 Wireshark 也能抓现场——内置从站扫描器、寄存器地址扫描、报文解析器和自定义报文发送,排查工具链全在一个窗口里。通讯核心逻辑在 src/modbusclient.cpp,界面主框架在 src/mainwindow.cpp,后文涉及具体模块时会给出对应路径。安装:三个平台各走各的路 当前发布版本为 1.16.0,安装包分 Qt5 与 Qt6 两套。Windows 一键安装步骤直接运行官方发布页里的安装程序,按位数和 Qt 版本选:32 位系统:qt5-omodscan_1.16.0_x86.exe64 位系统:qt5-omodscan_1.16.0_x64.exe 或 qt6-omodscan_1.16.0_x64.exeWindows 二进制经过代码签名,安装时不会有 SmartScreen 拦截。Linux 包管理器安装Debian/Ubuntu 系:下载 deb 后执行sudo apt install ./qt6-omodscan_1.16.0-1_amd64.deb,想用 Qt5 库就装对应的 qt5 版本;卸载用sudo apt remove qt6-omodscan;RedHat/Fedora/Rocky 系:下载 rpm 后执行sudo dnf install ./qt6-omodscan_1.16.0-1.x86_64.rpm;SUSE/OpenSUSE 系:先导入项目提供的 rpm 公钥,再用 zypper 安装同名 rpm;Flatpak:先添加 Flathub 远程仓库,再安装io.github.sanny32.omodscan。⚠️ Flatpak 下用串口要把当前用户加入dialout组(sudo usermod -a -G dialout $USER)并重新登录,否则打不开串口。从源码编译:一条脚本搞定 Qt5 或 Qt6定制功能或深度集成时从源码构建:依赖 CMake Qt 5.15 及以上(Qt6 亦可),Windows 侧最低 Windows 10 且只支持 64 位。git clone https://gitcode.com/gh_mirrors/op/OpenModScan cd OpenModScan ./build.sh -qt6 # Linux;Windows 用 build.ps1,同样可加 -qt5 / -qt6 参数第一次连上从站:两套参数清单 所有连接项在 src/connectiondetails.h 中定义,默认值都合理,照着改就行。Modbus TCP 连接怎么配打开连接面板,选 TCP,按下面清单填:配置项示例值说明传输模式IP即 Modbus TCPIP 地址192.168.1.100默认 127.0.0.1服务端口502协议默认端口从站 ID1多数网关固定为 1响应超时250 ms默认值,可在协议选项里调重试次数30~10RTU 串口参数怎么配串口侧多几个电气参数,老设备十有八九是下面这组:配置项示例值串口设备/dev/ttyUSB0波特率9600数据位8校验位None停止位1流控NoneDTR / RTS默认均置位,个别老设备要关掉试验传输模式选 RTU(二进制)或 ASCII;如果你的设备走的是网关把 RTU 帧塞进 TCP 套接字,选RTU over TCP即可,它比纯 TCP 模式多两个时序参数:帧间延迟(默认约 2 ms)与帧间隔(默认 100 ms),实现见 src/modbusrtutcpclient.cpp。读出第一个寄存器,还要让它看得懂连上后在数据表格里填起始地址和数量,启动轮询,数值就开始滚动。真正容易翻车的是显示格式,这是 Modbus 调试的头号坑:17 种显示模式——Binary、Hex、UInt16/Int16、单精度/双精度浮点、32 位/64 位有符号与无符号整数(各带 Swapped 翻转版)、ANSI 字符串。32 位类型占 2 个寄存器,64 位占 4 个;字序二选一:跨寄存器的 32/64 位值,高字在前叫 MSRF,低字在前叫 LSRF,设备厂商标注不一样就换一种再试——挑错时你会看到 1644826112 这种离谱大数,把它当调试信号就行;地址基数 Base0 / Base1:同一个物理寄存器,手册写 0 还是 1 起算差一截,读出来整体错位 1 就先把基数切换试一遍;地址显示还可选 5 位或 6 位地址空间格式。这些枚举与转换逻辑都在 src/enums.h 和 src/byteorderutils.h,想确认某种显示模式对应哪几个寄存器,看registersCount()一目了然。不知道从站地址?让扫描器巡一遍总线 新接手一条总线,最省事的不是逐个试地址,而是让扫描器并发地把 ID 段和地址段各扫一遍。网络与总线扫描参数清单打开扫描对话框,配置项如下(默认值来自 src/modbusscanner.cpp 的ScanParams):配置项默认值扫描协议RTU / TCP / RTU over TCP 任选从站 ID 范围1–10IP/端口列表(TCP 时)可批量填写网段扫描请求功能码 起始地址 数量,如 0x03 读 0 号寄存器 1 个单点超时1000 ms最大并发连接10超时重试可选点开始,结果区会实时列出命中的从站,标为可疑的条目建议再用常规连接确认一次,避免误报。地址扫描:同一台设备读哪些寄存器反过来,设备是找到的、寄存器范围不知道时,用地址扫描:对已连上的从站按地址段发读取请求,把返回有效数据的地址挑出来高亮,比盲读 0–9999 高效得多。把报文摊开看:日志窗、解析器与自定义报文 通讯日志窗看什么主界面下方的日志窗按字段拆开每一帧:事务 ID、协议 ID、从站地址、功能码、PDU 数据,原始十六进制也在旁边。实用细节:日志默认只保留最近 30 行(行上限可调)、支持自动滚动,右键可以一键复制报文文本或原始字节——发工单、贴论坛都用得上。实现见 src/controls/modbuslogwidget.cpp。报文解析器:拿到一段 hex 就能拆从串口工具或网关日志里抓到一串十六进制字节,粘进报文解析器,它直接把事务 ID、长度、功能码、数据逐字段拆开。它接受的功能码比界面常用的 9 个更多(诊断、报告服务器 ID、FIFO 队列等,完整清单见 src/modbusfunction.h),冷门报文也能对得上号。用户报文:自己造一个边界情况怀疑某个异常码行为时,用用户报文功能手工指定 PDU 字节发出去,专门验证设备对边界值、非法地址的反应。进阶:批量写、数据模拟与轮询调参批量操作:多寄存器写入(0x10)、多线圈写入(0x0F)一次提交整段数据;掩码写(0x16)只对指定位段做 AND/OR,改一个控制字的其他位不受影响,是产线调参最常用的手法;数据模拟:没有实物设备也能测——给某地址指定模拟模式(随机 / 递增 / 递减 / 翻转),模拟器按周期往寄存器写值,专门用来验证你的轮询程序、报警逻辑,实现见 src/datasimulator.cpp;轮询调参三件套:响应超时(设备慢就调大)、重试次数、帧间延迟(总线繁忙时加一点间隔比盲目重试更有效);命令行入口:程序带--help/--version/--profile参数,可纳入脚本化流程。排错速查:异常码对照表与四个高频故障 ⚡现场现象先查什么异常 0x01 非法功能码设备不支持该功能码,换常用功能码验证异常 0x02 非法数据地址地址超出设备范围,核对地址基数 Base0/Base1异常 0x03 非法数据值写入值超设备允许范围异常 0x04 从站故障设备内部错误,看设备指示灯/报警码请求全超时加大响应超时与重试;RTU 核对波特率/校验位、DTR/RTS串口打不开用户是否在 dialout 组(Flatpak 场景尤其常见)读出来是离谱大数字节序 MSRF/LSRF 选反,或字节翻转未勾选数值正确但整体错位 1地址基数 Base0/Base1 与手册不一致选它还是选别的:一页对照表维度OpenModScanModbus PollQModMaster授权与费用MIT 开源免费商业付费开源免费平台覆盖Windows Linux 多发行版仅 Windows跨平台从站扫描内置(RTU/TCP/RTU over TCP)内置无批量写入多寄存器/多线圈/掩码写支持不支持日志与报文分析字段级拆解 原始字节复制支持支持格式转换17 种显示模式含 MSRF/LSRF支持支持二次开发源码开放(CMake Qt)闭源源码开放选型一句话:要免费、跨平台、带扫描器且允许改源码,OpenModScan 优先考虑;需要厂商售后或行业认证,再上商业工具。一句话收尾OpenModScan 把连得上、找得到、看得懂这三件 Modbus 调试最花时间的事做进了一个免费开源的界面里,MIT 授权意味着你随时可以为自己的产线加功能。想读源码,建议从 src/modbusclient.cpp 的通讯核心起步,再看 src/modbusscanner.cpp 的扫描机制和 src/mainwindow.cpp 的界面组织,半天就能摸清整条链路。【免费下载链接】OpenModScanOpen ModScan is a Free Modbus Master (Client) Utility项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表