3、RS485组网基础:差分信号、半双工与终端匹配

各位同学,今天我们来聊聊RS485。说实话,RS485在工业现场的地位,就像水电煤一样基础又关键。你想想看,一个工厂里几十台设备要互相通信,距离几百米甚至上千米,用RS232肯定不行——电平摆幅大、抗干扰差、还不能多机。这时候,RS485就是那个最靠谱的选择。

我个人习惯把RS485看作“工业现场的总线脊梁”。它不花哨,但皮实耐用。这一章,我们就把它最核心的三个东西讲透:差分信号怎么工作的、半双工怎么切换的、组网时终端电阻到底要不要加。

3.1 差分信号原理:为什么RS485能抗干扰?

RS485最核心的武器,就是差分信号传输。它不像RS232那样用一根信号线对地传输,而是用两根线——A和B——来传一个信号。

说白了,就是“两根线一起干活”。发送端在A线上输出一个正电压,在B线上输出一个负电压。接收端只看A和B之间的电压差,不看它们各自对地的电压。

关键点:RS485的差分电压范围是 ±1.5V ~ ±6V。逻辑“1”是A比B高(A-B > +200mV),逻辑“0”是A比B低(A-B < -200mV)。

我在项目中遇到过一件事:一个设备在电机旁边,用RS232通信,数据经常乱码。换成RS485后,同样的线缆、同样的距离,通信稳如泰山。为什么?因为差分信号对共模噪声有天然的抑制能力——噪声同时耦合到A和B线上,但差值不变。

来看一个简单的对比表格,你就明白了:

特性 RS232(单端) RS485(差分)
信号线数量 1根(TX/RX各1) 2根(A、B)
抗共模干扰 弱 强
最大通信距离 约15米 约1200米
逻辑电平 ±3V ~ ±15V ±1.5V ~ ±6V(差分)
多节点能力 点对点 最多256节点

嗯,这里要注意:差分信号虽然抗干扰强,但也不是无敌的。如果A、B两根线走线不对称,或者双绞线绞距不均匀,共模抑制效果就会打折扣。所以,一定要用双绞线,而且绞距越密越好。

3.2 半双工通信机制:收发不能同时干

RS485是半双工的。什么意思?就是同一时刻,总线上只能有一个设备在发送,其他设备都在接收。你不能像RS232那样同时收发。

为什么会这样?因为RS485的A、B两根线是共享的。所有设备的发送器和接收器都挂在这两根线上。如果两个设备同时往线上怼数据,那结果就是——信号打架,谁也收不到。

我刚开始做RS485项目时,就犯过这个错。写代码时没注意收发切换的时序,发送完数据后立刻切到接收模式,结果最后几个字节被自己吞掉了。后来我养成了一个习惯:发送完最后一个字节后,必须等一个“安全间隔”再切接收。

我的经验:这个安全间隔至少是发送一个字节的时间。比如波特率9600,一个字节约1ms,那就等1ms再切。如果总线负载重,建议等2~3ms。

半双工通信的典型流程是这样的:

  1. 主机发送:主机使能发送器,往总线上发数据帧。
  2. 从机接收:所有从机都在监听总线,接收数据。
  3. 主机切接收:主机发送完毕,关闭发送器,使能接收器。
  4. 从机应答:目标从机使能发送器,回复数据。
  5. 主机接收:主机收到应答,完成一次通信。

你看,整个过程就像“对讲机”——你说完了,我再说。谁也不能抢话。

3.3 多点组网拓扑:总线型才是王道

RS485支持多点组网,最多可以挂256个节点(标准驱动下)。但拓扑结构有讲究——必须用总线型,也就是所有设备都挂在一根主干线上。

我见过有人用星型拓扑接RS485,结果通信时好时坏。为什么?因为星型拓扑会产生信号反射,分支线越长,反射越严重。RS485对信号完整性要求高,分支线一长,波形就畸变了。

避坑指南:我曾经在一个项目中,为了布线方便,把RS485接成了星型。结果调试了三天,数据就是不稳定。最后改成总线型,问题立刻解决。记住:RS485只认总线型,分支线越短越好,最好不超过30cm。

总线型拓扑的要点:

  • 主干线:一根双绞线贯穿所有节点,A、B线不能交叉。
  • 分支线(stub):从主干线到设备接口的引线,越短越好。
  • 节点间距:没有严格限制,但建议均匀分布。
  • 终端电阻:只在主干线两端各加一个120Ω电阻。

下面这张图,就是RS485标准的总线型组网结构:

RS485 总线型组网拓扑 双绞线(A / B) 120Ω 120Ω 节点 1 分支线 节点 2 节点 3 节点 4 终端电阻只加在总线两端(节点1和节点4侧),中间节点不需要加

3.4 终端电阻匹配:120Ω不是随便选的

终端电阻,说白了就是在总线两端各并一个120Ω的电阻。它的作用是吸收信号能量,防止信号在总线末端反射回来,造成波形畸变。

为什么是120Ω?因为RS485用的双绞线,特性阻抗大约是120Ω。阻抗匹配了,信号就不会反射。你想想看,如果总线末端是开路,信号走到头没地方去,就会反弹回来,跟后面的信号叠加,数据就乱了。

我遇到过一种情况:一个系统里只加了一个终端电阻,结果通信距离超过500米后,数据偶尔出错。后来加上第二个终端电阻,问题消失。所以记住:终端电阻必须成对出现,而且只在总线两端加。

什么时候可以不加终端电阻?

  • 短距离低速:通信距离小于10米,波特率低于9600,可以不加。
  • 节点数少:只有2~3个设备,且距离很近。
  • 但我的建议:只要距离超过30米,或者波特率高于19200,就老老实实加上。省一个电阻的钱,可能换来几天的调试时间。

终端电阻的接法也很简单:

  • A线对地:不接电阻。
  • B线对地:不接电阻。
  • A线和B线之间:并一个120Ω电阻。

有些RS485收发器芯片(比如MAX485)内部已经集成了终端电阻,但大多数需要外部加。我习惯在PCB上预留120Ω电阻的焊盘,调试时根据实际情况决定焊不焊。

3.5 本章小结

好了,这一章的内容就这些。我们讲了RS485的三大基石:

  • 差分信号:两根线传一个信号,抗干扰强,距离远。
  • 半双工通信:收发不能同时进行,注意切换时序。
  • 总线型拓扑 + 终端电阻:组网必须用总线型,两端各加一个120Ω电阻。