ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

OpenModScan:免费Modbus主站工具,十分钟连上设备读寄存器

OpenModScan:免费Modbus主站工具,十分钟连上设备读寄存器 OpenModScan免费Modbus主站工具十分钟连上设备读寄存器【免费下载链接】OpenModScanOpen ModScan is a Free Modbus Master (Client) Utility项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan你刚把串口线插到PLC上折腾了一周用hex工具和抓包软件反复发同一条读命令等来的全是超时。OpenModScan 是一款免费开源的 Modbus 主站客户端工具同时支持 Modbus TCP 和 Modbus RTU填入 IP 或串口参数后你可以直接读写寄存器、扫描从站设备并在日志里回看每一帧发收的数据。这是什么OpenModScan 是给现场工程师和嵌入式开发者用的图形化 Modbus 主站发请求、看数值、查每一帧。它和商用轮询工具最大的差异是跨平台Windows/Linux、MIT 协议开源且内置了多数工具没有的设备扫描和数据模拟功能。界面分三块左侧连接参数、中间寄存器与线圈数据表、上方功能码和读写操作工具栏。核心功能拆解建立连接填 IP 或串口参数就能通它支持三种传输方式Modbus TCP、Modbus RTU串口、RTU over TCP网关场景。在连接面板选择连接类型TCP 填服务器 IP、端口默认 502和设备 ID串口填端口、波特率默认 9600、数据位默认 8、停止位默认 1、校验位默认无。点击连接即可参数会存为配置文件下次直接调用连接结构定义在 src/connectiondetails.h。读写数据常用功能码和数据类型都齐了在工具栏选择功能码 0x03读保持寄存器或 0x04读输入寄存器填起始地址和数量点读取数值就逐行列在表格里。显示区可在 16/32/64 位整型和单双精度浮点间切换32/64 位值支持一键换字节序地址显示可在 1 起始与 0 起始间切换避免经典 off-by-one 坑。写入覆盖单寄存器 0x06、多寄存器 0x10、掩码写 0x16、单线圈 0x05、多线圈 0x0F字节序转换实现在 src/byteorderutils.h。查日志每一帧请求响应都能对上打开通讯日志窗口每帧带时间戳、十六进制原文和解析出的事务 ID、协议 ID、设备地址、功能码下方还有响应数与成功率统计。设备返回不对时你能直接对比请求和响应看出是哪个地址、哪个字节出了差异异步响应处理在 src/modbusreply.cpp。扫描网络一屏找出总线上活着的设备不知道设备用了哪个从站 ID 时打开扫描对话框设 IP 段串口则填端口列表、设备 ID 范围默认 1–10、扫描用的功能码和起始地址点开始即并行探测默认最大 10 个并发连接发现结果列在表格中拿到的参数可以直接填进连接面板使用扫描机制见 src/modbusscanner.cpp。OpenModScan 安装步骤Windows 双击安装包即可以 1.16.0 为例# 32 位系统 qt5-omodscan_1.16.0_x86.exe # 64 位系统Qt5 运行时 qt5-omodscan_1.16.0_x64.exe # 64 位系统Qt6 运行时 qt6-omodscan_1.16.0_x64.exeDebian / Ubuntu / Mintsudo apt install ./qt6-omodscan_1.16.0-1_amd64.debRedHat / Fedora / Rocky 等 RPM 系sudo dnf install ./qt6-omodscan_1.16.0-1.x86_64.rpm用 Flatpak 的话先添加 Flathub 远程再执行flatpak install --user io.github.sanny32.omodscan串口连接需把当前用户加入dialout组后重新登录。源码编译需 CMake 与 Qt 5.15 或 Qt 6git clone https://gitcode.com/gh_mirrors/op/OpenModScan cd OpenModScan ./build.sh -qt6 # 想用 Qt5 就改 -qt5验证装好了终端运行omodscan --version能打印出版本号即可。实战演练读一台 Modbus TCP 设备的 10 个保持寄存器假设设备在 192.168.1.100:502从站 ID 为 1。步骤 1打开 OpenModScan连接区选 TCP填 192.168.1.100、端口 502、设备 ID 1点连接。你应该看到状态栏显示已连接。步骤 2工具栏选功能码 0x03起始地址填 0、数量填 10点读取。数据表里应出现 10 行数值。步骤 3打开通讯日志窗口。应看到请求帧含功能码 03、起始地址 0000、数量 000A以及对应的响应帧若响应功能码变成 0x83说明设备返回了异常码末字节就是原因。数值看着不对时先切换字节序和数据类型再回日志核对原始帧。OpenModScan 参数速查参数作用推荐值或常见坑端口TCPModbus TCP 服务端端口默认 502不少网关用 1502查手册设备 ID从站地址必须与设备一致填错是超时头号原因响应超时等待回复的毫秒数默认 250ms慢设备调到 1s 以上重试次数超时后重发次数默认 3可选 0–10帧间延迟串口两帧之间的间隔RTU 建议 1.75ms 左右太短会粘帧波特率/数据格式串口通讯参数9600/8N1 最常见看设备铭牌地址基数1 起始还是 0 起始40001 在 0 起始下是地址 0易差一扫描并发数扫描时并行连接数默认 10网络大可调大遇到问题先查这里现象连接直接超时→ 原因设备 ID 填错、端口被关或防火墙拦截 → 解法先用内置扫描跑一遍确认哪个 ID 活着再核对端口。现象Linux 打不开串口→ 原因用户没有 dialout 组权限 → 解法sudo usermod -aG dialout $USER重新登录。现象32 位或浮点值大得离谱→ 原因字节序不匹配 → 解法在字节序下拉里轮换 AB CD / CD AB 等组合直到值合理。现象响应异常码 0x02→ 原因地址超出设备范围 → 解法核对地址基数与起始地址对照手册允许的区间。现象时好时坏、偶发乱码→ 原因波特率或校验不一致、线路质量差 → 解法确认 9600/8N1换短线重试。进阶开发与集成二次开发基于 Qt C 分层清晰连接参数在 src/connectiondetails.h通讯核心在 src/modbusclient.cpp想加传输方式就从客户端基类入手。批量使用连接参数保存为 profile命令行-profile 名称即可加载对应配置方便写测试脚本切换目标。上下游对接设备走串口要上局域网时配一个 RTU-TCP 网关OpenModScan 选 RTU over TCP 模式直连数据要进 SCADA 时把采集器指向同一台设备的 TCP 口即可。OpenModScan 和同类工具怎么选对比项OpenModScanModbus PollQModMaster开源是MIT否是平台Windows Linux仅 WindowsWindows Linux设备扫描RTU / TCP / RTU over TCPIP 段扫描无数据模拟有无无掩码写 0x16支持支持视版本而定习惯 Windows 且图省事Modbus Poll 够用要跨平台、要免费、要改代码选 OpenModScanQModMaster 界面较老且没有扫描只适合轻量临时验证。小结OpenModScan 就是一个免费、跨平台的 Modbus 主站配置连接、读写寄存器、扫描从站、查日志一套工具全干完。它适合验证设备通讯的嵌入式开发者、对接 PLC 的集成工程师以及想动手学 Modbus 协议的学生。下一步去官方 README 看发布包与构建细节调试卡壳时优先对照上文“参数速查”和“遇到问题先查这里”两节。【免费下载链接】OpenModScanOpen ModScan is a Free Modbus Master (Client) Utility项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表