RS485这东西说简单也简单,两根线一接就能通信。说复杂也真复杂,现场部署的时候各种莫名其妙的故障能把你折腾到怀疑人生。
干工控这行的,多多少少都被485坑过。通信时断时续、某个节点死活不回数据、波特率高了就乱码、加个节点整个总线全挂。这些问题查硬件没问题、查软件没问题,最后发现是总线上的信号压根就不对。
今天就聊聊RS485现场部署中最常见的几类故障,以及实际排查方法。
## 先搞清楚RS485的物理层
RS485是差分信号传输。A线和B线之间的电压差来表示逻辑0和逻辑1。差值大于200mV是一个状态,小于-200mV是另一个状态。两根线绞在一起,外界干扰对两根线的影响基本相同,差分后就抵消了。这就是RS485抗干扰能力强的根本原因。
但这个优势有个前提:总线上的阻抗要匹配。
RS485总线的两端必须各接一个120欧姆的终端电阻。为什么是120欧?因为常用的RS485电缆特征阻抗就是120欧左右。终端电阻的作用是吸收信号到达总线末端时产生的反射波,防止信号反射回去干扰正常通信。
现场最容易犯的错误就是终端电阻没接或者接多了。
## 故障一:通信偶尔中断,时好时坏
这是最头疼的一种。你测的时候好的,走了一会又坏了。
第一步,用示波器看波形。在总线最末端的节点处测A-B的差分波形。正常情况下,信号边沿应该是陡峭的方波,高低电平之间干净利落。
如果看到波形上升沿有个明显的过冲,然后来回震荡几次才稳定下来,这就是典型的信号反射。末端没有接终端电阻,或者终端电阻阻值不对。
解决方法:确认总线物理上最两端的节点各接一个120欧终端电阻,中间节点不接。有些RS485芯片内置了终端电阻,可以通过软件或者拨码开关控制开关。别图省事全部打开,接多了总线负载太重,信号幅度不够,反而通信不稳。
还有一个容易忽略的点:手拉手布线。RS485总线要求节点之间是手拉手串联,不能有分叉。现场有时候图方便,从总线中间拉一根线出去接设备,这叫"星型"拓扑,在RS485里是大忌。分叉点的信号会反射,加多少终端电阻都救不回来。
## 故障二:某个节点不通信
其他节点都正常,就某一个节点死活不回数据。这种情况先排除软件问题,确认地址配置没错、波特率一致之后,重点查硬件。
用万用表测这个节点的A、B线电压。空闲状态下(没有任何节点在发送数据),A线电压应该比B线高200mV左右,也就是总线处于空闲高电平状态。这是因为总线偏置电阻的存在。
如果测出来A和B电压几乎相等,甚至A比B还低,说明这个节点的偏置电阻没接或者坏了。偏置电阻的作用是在总线空闲时把总线拉到确定的状态,防止噪声干扰让接收端误读。
偏置电阻一般是一个上拉到VCC(A线上拉),一个下拉到GND(B线下拉),阻值通常是560欧姆或1K欧姆。具体值取决于你的偏置电压需求和总线节点数。
如果偏置电阻没问题,就查这个节点的收发器芯片。有些便宜的模块用的芯片质量差,驱动能力不足。总线上节点一多,这个芯片就带不动了。
## 故障三:波特率高于某值就乱码
9600没问题,19200也没问题,一上到115200就开始乱码丢包。
这个问题的根源通常是信号质量。
首先是线材。很多人随便找根双绞线就用了,甚至有人用普通平行线。平行线没有绞合,抗干扰能力差,高频信号衰减严重。必须用屏蔽双绞线,而且屏蔽层要单端接地。
然后是线长。RS485的理论最大传输距离是1200米,但这是在9600bps下。波特率越高,传输距离越短。115200bps下,可靠传输距离大概就降到100到200米了。超过这个距离就得降低波特率,或者加中继器。
最后是节点数和总线负载。RS485标准说一个总线最多接32个节点,但这是标准负载(单位负载为12K欧姆输入阻抗)下的数字。实际用的芯片输入阻抗各不相同,有的是1/8单位负载,可以接256个。但如果用杂牌芯片,实际驱动能力可能远远达不到标称值。
排查方法:逐个节点接入,每接一个测一下通信。找到加入后导致故障的节点,重点检查它的收发器输入阻抗。
## 故障四:地电位差导致通信故障
这个最容易被忽视。
RS485虽然说是差分信号,理论上不需要共地。但实际应用中,如果总线两端的设备地电位差太大,收发器的共模输入电压超出范围(通常是-7V到+12V),芯片就会工作异常甚至烧毁。
工业现场这种情况特别多。两个车间之间的设备,地线没有可靠连接,地电位差可能有几十伏。直接用485连,通信不稳定不说,接口芯片烧了都不知道怎么回事。
解决方法有两个。一是用带隔离的RS485模块,光电隔离或者磁隔离都行。隔离模块把通信两端的电气连接断开,地电位差就无所谓了。二是加第三根线作为参考地,把所有节点的信号地连在一起,但这在长距离布线中不太现实。
我一般推荐直接用隔离模块,成本高一点但省心。微嵌的工业一体机做485通信的时候,我们就建议客户选带隔离的方案,现场出问题的概率低很多。
## 实战排查流程总结
说到底,485故障排查有个基本流程。
先看物理接线。手拉手拓扑,没分叉,两端接终端电阻,屏蔽层接地。这一步排掉80%的低级错误。
再看信号质量。示波器测波形,看反射、看边沿、看电平幅度。波形不对先修物理层,别急着查软件。
然后查节点。逐个接入排查,找到有问题的节点换芯片或者加隔离。
最后才看通信协议和软件。如果物理层完全正常,再去查地址冲突、帧格式、超时设置这些上层问题。
顺序搞反了,白费功夫。


客服
小程序
公众号