中国自动化学会专家咨询工作委员会指定宣传媒体
文摘详情
gkongbbs

工控机串口通信故障排查实战:从信号到协议的逐层诊断方法

http://www.gkong.com 2026-07-09 09:12 广州市微嵌计算机科技有限公司

做工控的兄弟们应该都有过这种经历——现场PLC突然连不上了,串口通信断断续续,报文丢失,数据跳变。你检查了线没断、电源没掉、软件没改,但就是通信不上。

串口通信这个老技术用了几十年了,按理说应该很成熟了吧?但恰恰因为"老",它的问题也最隐蔽。今天这篇文章就从头到尾梳理一下,串口通信故障到底怎么排查。

## 第一层:物理层——先把线查明白

别笑,物理层的问题占了串口通信故障的六成以上。

RS485是最常用的工业串口通信方式,两根线A和B,差分信号传输。最容易出问题的地方就这几个:

**接线反了。** A和B接反是最低级的错误,但也是最常见的问题。新装设备第一次调试的时候,如果完全通信不上,第一件事就是检查AB有没有接反。有些厂家的端子标识不统一,有的叫A/B,有的叫D+/D-,有的叫TX+/TX-,很容易搞混。

记住一个规律:RS485的A(D+)是正端,B(D-)是负端。不同设备厂家可能标反,最靠谱的办法是看手册上的引脚定义,而不是看标识。

**共地问题。** RS485虽然用的是差分信号,理论上来需要共地,但实际上当不同设备供电来自不同电源时,地电位差会导致通信异常。尤其是上位机和PLC不在同一个电控柜里的时候,这个问题很常见。解决办法是加一条地线把两端的地连起来,或者在两端各加一个隔离器。

**终端电阻。** RS485总线长度超过几十米的时候,末端要接120欧姆的终端电阻,用来消除信号反射。但很多人不接,或者两头都接(只应该接总线两端各一个)。结果就是通信距离稍微远一点就开始丢包。

终端电阻的判断方法:断开所有设备电源,用万用表量总线A和B之间的电阻。正常应该是120欧姆(终端电阻并联了多个设备,但终端电阻只在两端各一个,并联后约为60欧姆)。如果量出来无穷大,说明没接终端电阻;如果是零或者很小的值,说明线短路了。

**线材选择。** RS485要用双绞线,最好带屏蔽。用普通平行线也能通,但距离一长干扰就上来了。屏蔽层要单端接地,别两端都接地,否则形成地环路反而引入干扰。

## 第二层:电气层——电压够不够

线接对了,信号也不一定对。

RS485的差分信号电压,正常应该在±1.5V到±5V之间(A和B之间的电压差)。如果电压太低,说明信号衰减厉害或者驱动能力不够。

怎么量?示波器接在A和B上,看波形。正常应该是方波,高电平1.5V以上,低电平-1.5V以下。如果波形是锯齿状、幅度很小,可能是线路太长、分叉太多、或者设备输出能力不够。

没有示波器的话,万用表也能做个粗略判断。量A和B之间的直流电压,正常应该在1-2V左右(通信空闲时A比B高)。如果量出来0V,要么是线断了,要么是设备没电。

广州微嵌的工业一体机COM口都做了隔离设计,光电隔离1500V以上。这在实际使用中能避免大部分因为地电位差导致的通信损坏。我们碰到过不少客户,换了非隔离的工控机之后COM口频繁烧毁,换回带隔离的就好了。

## 第三层:参数层——配置对不对

物理和电气都正常,通信还是不通,那就该查参数了。

串口通信有几个核心参数必须两端一致:

**波特率。** 9600是最常见的,也有用19200、38400、115400的。上位机和PLC的波特率必须一致,差一个都不行。这个最容易查,但也容易忽略——有些PLC的默认波特率不是9600,比如有些西门子PLC默认是187.5K,不查手册你根本想不到。

**数据位/停止位/校验位。** 常见的是8-N-1(8位数据位,无校验,1位停止位),但有些设备默认是7-E-1或者8-E-1。校验位不一致的时候通信表现是:偶尔能收到数据但全是乱的,或者完全收不到。

**站号。** Modbus RTU协议里,每个从站有唯一的站号。如果两个设备设了同一个站号,总线会冲突,表现就是时通时断。如果上位机查的站号和PLC实际设的不一样,完全通信不上。

**超时设置。** 上位机发送请求后等待响应的超时时间,不能设太短。波特率9600的时候,一个Modbus请求帧大概十几毫秒发完,PLC处理+响应一般在50-100毫秒。超时设100毫秒以下就太紧张了,网络抖动一下就超时。建议设300-500毫秒比较保险。

## 第四层:协议层——报文对不对

参数全对,还是通信异常,就该抓报文了。

**抓报文工具。** 串口调试助手是最基础的,能手动发Modbus帧看响应。更专业的是用串口抓包工具,把总线上所有报文都录下来分析。

**Modbus报文结构。** RTU模式下,一帧报文的格式是:站号(1字节) + 功能码(1字节) + 数据区 + CRC校验(2字节)。

常见的故障表现和对应原因:

| 故障现象 | 可能原因 | 排查方向 |
|---------|---------|---------|
| 完全无响应 | 站号不对/波特率不对/线接反 | 查参数和接线 |
| 偶尔丢包 | 终端电阻缺失/干扰/超时太短 | 加终端电阻/查干扰源 |
| CRC校验错误 | 线路干扰/波特率偏差 | 查线材和波特率精度 |
| 响应数据全0 | 寄存器地址不对/PLC程序没写数据 | 查寄存器映射表 |
| 响应异常码83 | 非法功能码 | 查PLC支持的功能码 |
| 响应异常码84 | 非法数据地址 | 查寄存器地址是否超范围 |
| 响应异常码86 | 设备忙 | 查询频率太快/PLC处理不过来 |

**CRC校验。** 这是判断通信质量的关键指标。如果CRC错误率高,说明线路质量有问题。不是干扰太强就是线路太长或者线材太差。广州微嵌的工控机COM口标配TVS防浪涌,能一定程度抑制线路上的瞬态干扰,降低CRC错误率。

## 第五层:环境层——干扰因素排查

有时候通信参数全对,线路也没问题,但就是在特定时段或者特定条件下出故障。这时候要考虑环境因素了。

**变频器干扰。** 这是现场最常见的干扰源。变频器输出的PWM波形含有大量高频谐波,通过空间辐射和共地耦合干扰RS485总线。如果发现通信在变频器启动时变差,停机时正常,基本就是变频器干扰。

解决办法:变频器输出端加磁环、RS485线用带屏蔽的双绞线且屏蔽层接地、变频器和通信设备分相供电、必要时加信号隔离器。

**接地不良。** 工业现场的接地系统如果不规范,不同设备的"地"之间可能有几伏甚至几十伏的电位差。这个电位差直接反映在RS485的共模电压上,超过-7V到+12V的范围就会损坏收发器芯片。

**温度影响。** 温度太高会导致芯片特性漂移,通信时钟偏差增大。如果发现夏天通信比冬天差,可能是设备散热不行。这点选工控机的时候要注意,-10℃到60℃宽温标称的设备在高温下通信更稳定,因为它的器件选型本身就考虑了温度裕量。

## 一个实战案例

之前有个客户,用的是广州微嵌的工业一体机做上位机,通过RS485连8台PLC。装好后前三天一切正常,第四天开始频繁丢包,每天早上8-9点最严重。

排查过程:

第一步,检查接线——没发现问题,终端电阻也接了。

第二步,抓报文——发现丢包表现为超时无响应,不是CRC错误,排除线路干扰。

第三步,排查时间规律——早上8-9点是什么特殊时段?后来发现工厂8点交接班,所有产线同时启动,变频器集中上电,瞬间产生大量电磁干扰。

第四步,验证——让客户在8点前启动变频器,8点后再开工控机,通信果然正常了。

第五步,解决——在RS485总线两端各加了一个信号隔离器,同时在变频器输出端加了磁环。之后再也没有出现过问题。

这个案例说明,串口通信故障排查不能只盯着一台设备看,得从整个系统的角度去找原因。

## 总结

串口通信排查的思路就是逐层排除:物理层→电气层→参数层→协议层→环境层。每层都有对应的检查手段和判断标准,按顺序来不要跳步,大部分问题都能定位到。

选硬件的时候也要注意,COM口带隔离、带TVS防护的工控机在工业现场用起来更省心。广州微嵌的工业一体机COM口全部做了光电隔离,出厂前每一路都做实际通信测试,不是那种插上没测就发货的。做工控项目,硬件底子打好,后面排查也能少走很多弯路。
 

版权所有 工控网 Copyright©2026 Gkong.com, All Rights Reserved