4、串口调试工具:串口调试助手、Modbus Poll/Slave、虚拟串口软件的使用

做SCADA系统调试,说白了就是跟各种设备“对话”。而串口调试工具,就是我们手里最趁手的“翻译器”和“听诊器”。

我个人习惯,不管项目大小,先把这三类工具备齐:串口调试助手Modbus Poll/Slave虚拟串口软件。它们各司其职,缺一不可。

4.1 串口调试助手:最基础的“裸通信”工具

串口调试助手,我愿称之为“串口界的万用表”。它不关心协议,只负责把数据发出去、收回来。你发什么,它就发什么;设备回什么,它就显示什么。

核心功能:

  • 收发数据:支持HEX(十六进制)和ASCII两种显示/发送模式。
  • 参数配置:波特率、数据位、停止位、校验位,必须和设备完全一致。
  • 自动发送:可以设置定时循环发送,用于压力测试或心跳包模拟。

我的经验:有一次在现场,PLC死活连不上上位机。我用串口调试助手直接监听PLC的发送口,发现它每隔100ms发一串“AA 55 00 FF”,但上位机软件却收不到。后来发现是上位机的串口接收缓冲区溢出了。用调试助手一看,数据其实一直在发,问题出在上位机软件的处理逻辑上。

典型使用场景:

  1. 验证物理连接:用调试助手发一个“AT”指令(如果设备支持),看是否返回“OK”。
  2. 抓取原始报文:当Modbus协议解析出错时,用调试助手看最原始的字节流。
  3. 模拟设备:手动输入一串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反复读不同地址,才定位到问题。

典型调试流程:

  1. 先用Modbus Slave模拟设备,设置好寄存器值。
  2. 用Modbus Poll连接Slave,验证读写功能是否正常。
  3. 如果Poll能正常读写,说明上位机软件或配置有问题。
  4. 如果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):界面友好,适合新手。

核心功能:

  1. 创建虚拟串口对:比如创建COM3和COM4,它们自动连接。往COM3发数据,COM4就能收到。
  2. 串口数据转发:可以把物理串口的数据转发到网络(TCP/UDP),实现远程调试。
  3. 串口共享:多个软件同时监听同一个虚拟串口,方便抓包分析。

我的经验:有一次在实验室调试,PLC的串口被其他项目占用了。我直接用VSPE创建了一对虚拟串口,一个给上位机软件,一个给Modbus Slave模拟器。两台电脑之间用网线连接,虚拟串口通过TCP转发数据。效果跟物理串口一模一样,省去了来回插拔线的麻烦。

典型应用场景:

  • 开发阶段:没有硬件设备时,用虚拟串口+Modbus Slave模拟整个系统。
  • 培训演示:给客户演示SCADA系统功能,不需要真实设备。
  • 故障隔离:怀疑硬件串口有问题时,用虚拟串口替换物理串口,看问题是否复现。

小技巧:用com0com创建虚拟串口对时,记得把两个串口的波特率设置成一样。虽然虚拟串口理论上不依赖波特率,但有些软件会检查这个参数。

4.4 三款工具的协同使用

这三款工具不是孤立的,我经常把它们组合起来用。举个例子:

  1. 第一步:用虚拟串口软件创建COM3和COM4。
  2. 第二步:Modbus Slave绑定COM3,模拟一个温湿度传感器。
  3. 第三步:串口调试助手绑定COM4,监听原始报文。
  4. 第四步:Modbus Poll也绑定COM4,作为主站读取数据。

这样一来,Poll发的请求、Slave回的响应,全都能在调试助手里看到原始字节流。哪个环节出了问题,一目了然。

注意:虚拟串口软件和物理串口驱动有时会冲突。如果发现物理串口突然用不了,先检查虚拟串口软件是否占用了同一个COM号。

嗯,这三款工具,说白了就是串口调试的“三驾马车”。串口调试助手管底层,Modbus Poll/Slave管协议,虚拟串口软件管环境。把它们用熟了,串口通信这块基本就稳了。