三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

ModbusTool 深度上手指南:一台电脑 30 分钟跑通 TCP/UDP/RTU 主从联调

ModbusTool 深度上手指南:一台电脑 30 分钟跑通 TCP/UDP/RTU 主从联调

ModbusTool 深度上手指南:一台电脑 30 分钟跑通 TCP/UDP/RTU 主从联调

【免费下载链接】ModbusToolA modbus master and slave test tool with import and export functionality, supports TCP, UDP and RTU.项目地址: https://gitcode.com/gh_mirrors/mo/ModbusTool

做工业通信调试的人,多半经历过这样的尴尬:设备还没到货、现场通讯时好时坏、想验证自己写的上位机却找不到一个"假设备"。ModbusTool 这款免费开源的 Modbus 调试工具,正是为此而生——主站从站一体的设计,加上 TCP、UDP、RTU 三种通信方式,让你只用一台电脑就能搭起完整的 Modbus 联调环境。本文是一份可以直接照做的上手指南,从安装一路讲到进阶玩法,全程可复现。

一、先看它能帮你省下什么

在动手之前,先给三个立刻能感知的收益:

  • 省时间:从站模式就是一台"虚拟 PLC",程序先写、设备后到的项目不再干等硬件。
  • 省排查成本:通信出问题时,先用它自测,能快速分清是协议写错还是设备故障。
  • 省培训成本:教新人、做演示、写课程,都不需要一台真实设备陪跑。

一句话总结:它是你调试 Modbus 通信时,最该第一个打开的工具。

二、工具速览:两个程序,一套界面逻辑

ModbusTool 交付两个可执行程序——ModbusMaster(主站)ModbusSlave(从站),界面布局高度一致,只是角色相反:主站负责发起读写请求,从站负责监听并应答。

主站界面左侧是通信参数区(模式、IP/端口或串口参数),中间排布八个功能码按钮,核心是寄存器数据区,底部则是带时间戳的实时通信日志:

从站界面把"连接"换成了"监听",并多出从站 ID响应延迟两个参数,其余操作逻辑与主站一脉相承:

三、核心能力拆解

三种通信方式,覆盖绝大多数现场

模式适用场景典型参数
TCP以太网设备、跨主机联调IP + 端口(默认 502)
UDP实时性要求高的数据交互IP + 端口
RTURS-232 / RS-485 串口设备串口号、波特率、数据位、停止位、校验位

三种模式通过单选按钮切换,界面会按所选模式自动显示对应参数区,不存在"配了半天发现用错协议"的困惑。

八个标准功能码,一个不落

主站面板整齐排列着全部标准功能码按钮:读线圈、读离散输入、读保持寄存器、读输入寄存器、写单线圈、写单寄存器、写多线圈、写多寄存器。读写切换零配置,点哪个按钮就发哪条命令,日志区会同步显示发送与接收的原始字节。

五种数据显示格式

同一个寄存器值,可按LED 指示灯、十进制、二进制、十六进制、浮点(反转)五种方式查看。其中浮点模式一个值占用两个寄存器,软件会自动合并计算,省去手工拼字节的麻烦。

四、上手实战:5 分钟跑通第一次主从通信

最快的方式,是在一台电脑上让主站和从站互相对话。四步走完即可。

第一步,安装。三种方式任选其一:

  • 下载 MSI 安装包,双击按向导完成,适合大多数用户;
  • Windows 终端里执行winget install ClassicDIY.ModbusTool
  • 开发者可执行git clone https://gitcode.com/gh_mirrors/mo/ModbusTool后,用dotnet build ModbusTool.sln从源码编译。

第二步,起一个从站。打开 ModbusSlave,模式选 TCP,端口填 502,从站 ID 保持 1,点击Listen(监听),日志区会提示正在监听该端口。

第三步,连一个主站。打开 ModbusMaster,模式选 TCP,IP 填本机回环地址127.0.0.1,端口 502,从站 ID 填 1,点击Connect(连接)

第四步,读一次数据。在主站点击Read holding register(读保持寄存器),日志区出现Read succeeded: Function code:3,说明第一次主从通信已经打通。

之后可以做一个闭环验证:在从站数据区直接修改某个寄存器值,回主站再点一次读取,看到数值同步变化,就说明读、写、改、回读全链路正常。

提示:如果日志一直报错,先核对两边的端口和从站 ID 是否一致,再确认防火墙是否放行了 502 端口。UDP 模式同理,只是少了 TCP 的连接握手。

五、进阶技巧:四个容易被忽略的隐藏用法

1. CSV 导入导出,让寄存器数据"搬家"

主站的Import / Export按钮支持 CSV 格式交换数据,文件按地址:数值组织,数值可写成十进制、十六进制(0x前缀)或二进制。调试多组寄存器时,先在从站配好一组数据导出存档,下次直接导入,免去逐个录入。实现代码集中在CommonControls/BaseForm.cs的导入导出区域,想扩展格式可以直接改。

2. 轮询模式,让数据"自己动起来"

勾选主站的Poll复选框并设置毫秒级间隔,工具就会按你最后一次执行的功能码自动周期性读取。监控设备实时数据时非常省事,不用反复手动点按钮。

3. LED 灯泡模式,开关量一眼看懂

把显示格式切到LED,每个位会变成一颗可点击的指示灯——点击即翻转,直接在界面上模拟开关量的通断,比在二进制字符串里数 0 和 1 直观得多。

4. 多标签页,分区盯数据

数据区最多支持 20 个标签页,每个页签可独立设置起始地址与数据长度。同时监控多个寄存器区间时,切换页签比滚动一长串地址高效太多。

六、真实场景与避坑提醒

一个典型场景:设备没到,先验证上位机

很多自动化项目是"程序先写、设备后到"。做法很简单:用 ModbusSlave 当虚拟设备,把上位机指向127.0.0.1:502,解析逻辑对不对、字节序有没有搞反,当场就能暴露——不用等供应商回消息,也不用背设备去现场。

三个绕不开的坑

  • 地址偏移:不少 PLC 手册里的寄存器地址从 1 开始(如 40001 这种写法),而 Modbus 报文内是 0 基址。对照时记得换算,否则数据总是"差一个"。
  • 单次读取上限:软件将单次读取长度限制在 127 以内(Modbus 规范本身也仅允许 125 个寄存器)。需要读取上千个寄存器时,请分多段读取。
  • 字节序:同一个 32 位浮点数,不同设备的高低字顺序可能相反。读出的数值"完全对不上"时,切到FloatReverse视图对比一下。

七、最后说两句

ModbusTool 的协议核心集中在ModbusLib/Protocols/Modbus目录,界面逻辑分别在ModbusMaster/MasterForm.csModbusSlave/SlaveForm.cs。项目基于 Apache 2.0 协议开源,如果你想扩展协议、定制界面或接入自家设备,直接改源码即可,不必从零造轮子。

现在就可以动手:装好软件,开一个从站,开一个主站,把上面的实战步骤完整走一遍。当你看到日志里跳出第一条Read succeeded时,这套工具最核心的用法你就已经掌握了——剩下的,就是拿它去解决真实世界里的通信问题了。

【免费下载链接】ModbusToolA modbus master and slave test tool with import and export functionality, supports TCP, UDP and RTU.项目地址: https://gitcode.com/gh_mirrors/mo/ModbusTool

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

← 返回列表