4、串口调试工具:串口调试助手、Modbus Poll/Slave、虚拟串口软件的使用
做SCADA系统调试,说白了就是跟各种设备“对话”。而串口调试工具,就是我们手里最趁手的“翻译器”和“听诊器”。
我个人习惯,不管项目大小,先把这三类工具备齐:串口调试助手、Modbus Poll/Slave、虚拟串口软件。它们各司其职,缺一不可。
4.1 串口调试助手:最基础的“裸通信”工具
串口调试助手,我愿称之为“串口界的万用表”。它不关心协议,只负责把数据发出去、收回来。你发什么,它就发什么;设备回什么,它就显示什么。
核心功能:
- 收发数据:支持HEX(十六进制)和ASCII两种显示/发送模式。
- 参数配置:波特率、数据位、停止位、校验位,必须和设备完全一致。
- 自动发送:可以设置定时循环发送,用于压力测试或心跳包模拟。
我的经验:有一次在现场,PLC死活连不上上位机。我用串口调试助手直接监听PLC的发送口,发现它每隔100ms发一串“AA 55 00 FF”,但上位机软件却收不到。后来发现是上位机的串口接收缓冲区溢出了。用调试助手一看,数据其实一直在发,问题出在上位机软件的处理逻辑上。
典型使用场景:
- 验证物理连接:用调试助手发一个“AT”指令(如果设备支持),看是否返回“OK”。
- 抓取原始报文:当Modbus协议解析出错时,用调试助手看最原始的字节流。
- 模拟设备:手动输入一串HEX数据,模拟传感器或执行器的响应。
小技巧:调试助手显示的数据,建议同时开启HEX和ASCII双窗口。有些设备返回的ASCII码里藏着换行符(0x0D 0x0A),光看HEX容易忽略。
4.2 Modbus Poll / Slave:专业的协议级调试
串口调试助手只能看“字”,而Modbus Poll/Slave能看“词”和“句”。它们是Modbus协议调试的黄金搭档。
Modbus Poll(主站模拟器):
- 模拟上位机或PLC,主动发起读写请求。
- 支持01~06、0F、10等常用功能码。
- 可以批量读取寄存器,并实时显示数值变化。
Modbus Slave(从站模拟器):
- 模拟下位机设备,如传感器、执行器、RTU。
- 可以手动设置寄存器值,观察主站是否能正确读取。
- 支持模拟异常响应(如非法功能码、非法数据地址)。
避坑指南:我曾经用Modbus Poll测试一个温控器,发现读取的寄存器值总是跳变。用Slave模拟器一测,发现是温控器内部的寄存器地址映射表搞错了。它把温度值放在了40001,但文档写的是40002。用Poll反复读不同地址,才定位到问题。
典型调试流程:
- 先用Modbus Slave模拟设备,设置好寄存器值。
- 用Modbus Poll连接Slave,验证读写功能是否正常。
- 如果Poll能正常读写,说明上位机软件或配置有问题。
- 如果Poll也读不到,那问题大概率在物理层或从站设备本身。
| 功能 | Modbus Poll | Modbus Slave |
|---|---|---|
| 角色 | 主站(Master) | 从站(Slave) |
| 主要用途 | 测试上位机或PLC的读写逻辑 | 模拟现场设备,验证主站程序 |
| 支持功能码 | 01~06, 0F, 10等 | 01~06, 0F, 10等 |
| 异常模拟 | 不支持 | 支持(如超时、异常码) |
注意:Modbus Poll和Slave的版本很多,有些免费版有限制(比如只能读32个寄存器)。商业项目建议用正版或功能完整的试用版。
4.3 虚拟串口软件:没有硬件也能调试
做现场调试,最怕什么?设备没到、线没接、串口不够用。虚拟串口软件就是解决这些问题的“救火队员”。
常见虚拟串口软件:
- Virtual Serial Port Emulator (VSPE):功能强大,支持多种虚拟模式。
- com0com:开源免费,轻量级,适合快速创建虚拟串口对。
- Free Virtual Serial Ports (Eltima):界面友好,适合新手。
核心功能:
- 创建虚拟串口对:比如创建COM3和COM4,它们自动连接。往COM3发数据,COM4就能收到。
- 串口数据转发:可以把物理串口的数据转发到网络(TCP/UDP),实现远程调试。
- 串口共享:多个软件同时监听同一个虚拟串口,方便抓包分析。
我的经验:有一次在实验室调试,PLC的串口被其他项目占用了。我直接用VSPE创建了一对虚拟串口,一个给上位机软件,一个给Modbus Slave模拟器。两台电脑之间用网线连接,虚拟串口通过TCP转发数据。效果跟物理串口一模一样,省去了来回插拔线的麻烦。
典型应用场景:
- 开发阶段:没有硬件设备时,用虚拟串口+Modbus Slave模拟整个系统。
- 培训演示:给客户演示SCADA系统功能,不需要真实设备。
- 故障隔离:怀疑硬件串口有问题时,用虚拟串口替换物理串口,看问题是否复现。
小技巧:用com0com创建虚拟串口对时,记得把两个串口的波特率设置成一样。虽然虚拟串口理论上不依赖波特率,但有些软件会检查这个参数。
4.4 三款工具的协同使用
这三款工具不是孤立的,我经常把它们组合起来用。举个例子:
- 第一步:用虚拟串口软件创建COM3和COM4。
- 第二步:Modbus Slave绑定COM3,模拟一个温湿度传感器。
- 第三步:串口调试助手绑定COM4,监听原始报文。
- 第四步:Modbus Poll也绑定COM4,作为主站读取数据。
这样一来,Poll发的请求、Slave回的响应,全都能在调试助手里看到原始字节流。哪个环节出了问题,一目了然。
注意:虚拟串口软件和物理串口驱动有时会冲突。如果发现物理串口突然用不了,先检查虚拟串口软件是否占用了同一个COM号。
嗯,这三款工具,说白了就是串口调试的“三驾马车”。串口调试助手管底层,Modbus Poll/Slave管协议,虚拟串口软件管环境。把它们用熟了,串口通信这块基本就稳了。