我调 Modbus 设备这些年,手边没个主站工具真不行。
Modbus Poll 可以用,但是授权费要几百美元。
免费的工具又功能不全,字序无法选择,PLC 地址标记也不行。
最近在GitHub上发现了一个用C编写的开源工具,直接对标Modbus Poll。 它叫 modbus-poll-tool。
它把 Modbus Poll 的主要功能都做进去了。
它支持 Modbus TCP、RTU 串口、RTU over TCP 三种连接。
可以调整的参数有超时时间、重试次数、帧间延迟等等,在RTU调试的时候很实用。
单个exe文件就可以直接运行,不需要安装.NET运行时。
看一下它的特殊功能是什么。
它把Modbus读写全部覆盖了,轮询时间最短为10ms。
FC01 读线圈、FC02 读离散输入、FC03 读保持寄存器、FC04 读输入寄存四个读功能码都支持。
操作不拖泥带水,FC05/06 单写、FC15/16 批量写都各自有对应的对话框。
而且写好的回复也会显示出来,并不是只发不看。
从站回了异常码,工具直接告诉你叫什么——Illegal Data Address、Slave Device Failure,不用查表。
每个轮询都有自己的周期,最小为10毫秒。多个轮询标签页共用一个通道。
串口为半双工模式,多个轮询自动排队发送,不会出现冲突。
双击网格中的一格寄存器,在对话框里就会自动填入地址和当前值,不需要手动去抄。
以前用的是免费的工具,读Float还要自己计算字序。已经为你解析完毕。
数据格式和顺序转换比较齐全。
数据解析基本都覆盖了。
16 位的 U16、S16、Hex、Bin 随便切,32 位除了整数,还支持 Float32,字节顺序 ABCD、CDAB、BADC、DCBA 四种模式都能换。
64 位也支持 S64、Double64,连 ASCII 编码都可以直接解析。
像Modicon、西门子这样的PLC,字节序不同,不需要重新写解析逻辑,只改变顺序就可以用了。
地址可以一键切换,协议地址(0 基)和 PLC 标注(40001 风格)互换,不需要自己添加。
做过上位机的同学秒懂,字序反了数据就全乱了,这个切换功能直接省了一上午的时间。
自带 Modbus从站模拟器。
点击工具栏中的“模拟器”按钮,在弹出的窗口中选择一个端口并点击启动,一个Modbus TCP从站就运行起来了。
然后在主窗口里连接到 127.0.0.1:1502 上进行轮询,数据就会直接显示出来。
模拟器中可以对寄存器值进行直接修改,可以模拟出动态数据变化。
写操作也可以测。FC05/06/15/16 写完之后,模拟器那边就会马上有反应。
RTU 串口模拟也支持。
用com0com创建虚拟串口对,在同一台PC上就可以同时运行主站和从站。
TCP和RTU的模拟器共用一套数据存储,不管从哪边连,看到的值都是一样的。
流量日志和统计,报文级别的排查它都有。
每个报文都有一个时间戳,TX/RX 原始 hex 都被记录下来,出错的地方用红颜色标出。
环形缓冲区 5000 行,可以只看错误,也可以导出 .txt 存档。
每个轮询都有单独的统计。
发送次数、有效接收、错误计数、最后响应时间一目了然。
当出现通信问题时,查看日志就能很快查出来。
是超时,是 CRC 错,还是从站回了异常码,全看得见。
以前遇到通信问题的时候,只能看着串口助手猜测。有了原始报文和时间戳之后,排查效率就翻了一番。
工作空间一键保存,下次打开直接恢复。
把连接配置、轮询定义、地址别名等都保存为.nmw文件。
下次打开工具、加载工作空间之后,所有的设置都可以一键恢复,不需要每次都重新填写参数。
同一个设备调试多次的情况,该功能就少了很多重复的操作。
安装很简单
从 GitHub Releases 页面下载 Nmw.App.exe,双击运行就行。
Windows 10 或 Windows 11,x64 系统,不用装 .NET 运行时。运行时占用内存不大,老机器也能跑起来。
第一次运行的时候会弹出SmartScreen警告,点击更多信息然后点击“运行”就可以了。
有兴趣的朋友可以试试看。
开源地址:https://github.com/agentthink/modbus-poll-tool 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!