2. 物理层与电气特性:RS-232、RS-485、RS-422区别,终端电阻,偏置电阻

各位工程师朋友,咱们今天聊聊Modbus RTU的物理层。说白了,就是信号怎么在线上跑的问题。

我见过太多项目,协议栈写得没问题,但就是通讯不稳定。查到最后,十有八九是物理层没处理好。嗯,这章咱们就把这些坑填上。

2.1 三种接口标准:RS-232、RS-485、RS-422

这三种标准,是工业现场最常见的物理层接口。它们决定了通讯距离、速率和抗干扰能力。

2.1.1 RS-232:老将出马,一个顶俩?

RS-232是最早的串行通讯标准。我记得刚入行时,调试PLC全靠它。

  • 信号方式:单端传输,用一根信号线和一根地线。说白了,就是电压对地。
  • 电压范围:逻辑"1"是-3V到-15V,逻辑"0"是+3V到+15V。嗯,和现在常见的TTL电平不一样。
  • 通讯距离:理论15米左右。我在项目中试过,超过10米就开始丢数据了。
  • 速率:最高115200 bps,但距离越远,速率越低。
  • 连接方式:点对点,只能两台设备通讯。
注意:RS-232的抗干扰能力较差。工业现场有电机、变频器,用RS-232容易出问题。我个人习惯,只在调试阶段用,正式项目很少用。

2.1.2 RS-485:工业现场的主力军

RS-485是Modbus RTU最常用的物理层。为什么?因为它能长距离、多节点、抗干扰。

  • 信号方式:差分传输,用两根线(A和B)。信号是两根线的电压差,不是对地。
  • 电压范围:A-B > +200mV 为逻辑"1",A-B < -200mV 为逻辑"0"。
  • 通讯距离:理论1200米。我实际项目中,500米以内很稳定。
  • 速率:最高10 Mbps,但距离越长,速率越低。
  • 连接方式:半双工,多节点(最多32个标准负载)。

你想想看,一个车间几十台设备,用RS-485一根总线就能搞定。这就是它成为主力的原因。

2.1.3 RS-422:全双工的RS-485

RS-422和RS-485很像,但有个关键区别:它是全双工的。

  • 信号方式:差分传输,但用了4根线(发送一对,接收一对)。
  • 通讯距离:和RS-485差不多,1200米。
  • 速率:最高10 Mbps。
  • 连接方式:全双工,一主多从(最多10个接收器)。

我曾经在一个高速数据采集项目中用过RS-422。因为需要同时收发数据,RS-485的半双工搞不定。嗯,RS-422正好派上用场。

2.2 三种接口对比表

特性 RS-232 RS-485 RS-422
信号方式 单端 差分 差分
传输线数 3(TX、RX、GND) 2(A、B) 4(TX+、TX-、RX+、RX-)
通讯模式 全双工 半双工 全双工
最大节点数 2(点对点) 32(标准) 10(接收器)
最大距离 15米 1200米 1200米
最大速率 115200 bps 10 Mbps 10 Mbps
抗干扰能力
典型应用 调试、短距离 工业总线 高速全双工

2.3 终端电阻:为什么需要它?

终端电阻,说白了就是防止信号反射的。信号在线上跑,遇到阻抗不连续的地方就会反射。反射信号和原信号叠加,就会造成数据错误。

为什么会这样?

想象一下,你对着山谷喊一声,回声会干扰你听清下一句话。终端电阻就是用来吸收这个"回声"的。

关键点:RS-485和RS-422总线两端必须各接一个120Ω的终端电阻。RS-232不需要。

我建议,终端电阻的阻值要和电缆的特性阻抗匹配。常用的双绞线特性阻抗是120Ω,所以终端电阻也用120Ω。

我曾经遇到一个项目,通讯时好时坏。查了半天,发现终端电阻接在了中间,而不是两端。嗯,这是个典型错误。

2.4 偏置电阻:让总线"安静"下来

偏置电阻的作用,是给总线提供一个确定的空闲状态。当总线上没有设备发送数据时,A和B之间的电压差是不确定的。这时候,接收器可能误判为数据。

说白了,就是让总线在空闲时保持一个稳定的逻辑"1"状态。

偏置电阻怎么接?

  • 在A线上接一个上拉电阻到+5V(或VCC)。
  • 在B线上接一个下拉电阻到GND。

电阻值怎么选?

我一般用470Ω到1kΩ。具体值要看总线上设备的数量和距离。设备越多,距离越长,偏置电阻要越小。

小技巧:如果总线空闲时通讯正常,但一有设备发送数据就出错,很可能是偏置电阻没接好。我曾经在一条50米的总线上,不加偏置电阻时,从机经常收到乱码。加了1kΩ的偏置电阻后,问题就解决了。

2.5 知识体系结构图

下面这张图,把本章的核心逻辑串起来了。你可以看到,物理层选型、终端电阻、偏置电阻,这三者缺一不可。

Modbus RTU物理层与电气特性 接口标准 RS-232 RS-485 RS-422 终端电阻 防止信号反射 120Ω,接总线两端 偏置电阻 提供空闲状态 A上拉,B下拉 三者缺一不可:选对接口 → 接好终端电阻 → 加偏置电阻

2.6 避坑指南

最后,分享几个我踩过的坑。

坑1:我曾经在一条总线上接了超过32个设备,结果通讯完全瘫痪。后来加了RS-485中继器才解决。记住,标准负载是32个,超过就要加中继器。
坑2:终端电阻接在中间,而不是两端。这会导致信号反射没有被完全吸收。我建议,用万用表量一下总线两端的电阻,应该是60Ω左右(两个120Ω并联)。
坑3:偏置电阻值选得太大或太小。太大,偏置效果不够;太小,会加重驱动器的负载。我一般从1kΩ开始试,不行再调小。

好了,物理层这块就聊到这儿。记住,物理层是Modbus RTU的根基。根基不稳,上层协议写得再好也没用。


公众号:蓝海资料掘金营,微信deep3321