第二章 物理层基础:RS-232/RS-485/RS-422标准详解、差分信号原理、终端电阻匹配、隔离技术

各位工程师朋友,咱们今天聊聊物理层。说实话,很多做嵌入式开发的朋友,一提到物理层就觉得是硬件工程师的事。但我在实际项目中吃过不少亏——软件写得再好,物理层没搞定,数据就是传不过去。所以这一章,咱们把物理层的几个关键点掰开揉碎了讲清楚。

2.1 三大串行标准:RS-232、RS-485、RS-422

这三个标准,是工业通信的基石。我刚开始做项目时,也分不清它们到底有什么区别。后来踩了几个坑,才算真正搞明白。

2.1.1 RS-232:最经典的点对点通信

RS-232 是最早的串行通信标准之一。它的信号是单端传输的,用 -3V 到 -15V 表示逻辑 1,+3V 到 +15V 表示逻辑 0。说白了,就是电压摆幅很大,抗干扰能力一般。

关键参数:

  • 传输距离:通常不超过 15 米(我实测过,超过 20 米就开始丢数据了)
  • 速率:最高 115200 bps(再高就不太稳定了)
  • 连接方式:点对点,只能两台设备通信
  • 信号线:TX、RX、GND(全双工)
注意:RS-232 的电压范围是 ±12V 左右,而单片机通常是 3.3V 或 5V 电平。直接连接会烧芯片!必须用 MAX232 这类电平转换芯片。我曾经见过一个新手直接把 RS-232 接到 STM32 的串口上,结果芯片冒烟了...

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

RS-485 是我个人最常用的标准。它采用差分信号传输,抗干扰能力比 RS-232 强太多了。我在一个变频器控制的项目中,用 RS-485 在 100 米的距离上跑 115200 bps,一点问题都没有。

RS-485 的特点:

  • 差分信号:两根线(A、B)传输,共模抑制能力强
  • 多点通信:一条总线上最多挂 32 个节点(标准值,现在有些芯片可以挂 256 个)
  • 半双工:同一时刻只能发送或接收
  • 传输距离:最远 1200 米(速率降低时)

我的经验:RS-485 的 A 和 B 线不要接反。我有个同事,调试了一整天发现通信不稳定,最后发现是 A、B 线接反了。嗯,这种低级错误,谁都会犯一次。

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

RS-422 可以理解为 RS-485 的全双工版本。它用 4 根线:发送对(T+、T-)和接收对(R+、R-),可以同时收发数据。

RS-422 与 RS-485 的对比:

特性 RS-422 RS-485
工作模式 全双工 半双工
线数 4 根(两对差分线) 2 根(一对差分线)
节点数 1 发 10 收 32 个节点(标准)
应用场景 需要同时收发的场合 大多数工业总线

我个人建议:如果项目对实时性要求高,需要同时收发数据,选 RS-422。如果只是常规的轮询通信,RS-485 就够了,还省两根线。

2.2 差分信号原理:为什么 RS-485 抗干扰能力强?

这个问题,我经常被问到。其实原理很简单。

单端信号(比如 RS-232)是靠一根信号线和地之间的电压差来传输数据的。如果外部有电磁干扰,干扰信号会叠加在信号线上,导致接收端误判。

差分信号就不一样了。它用两根线(A 和 B)传输,接收端只看 A 和 B 之间的电压差。外部干扰会同时作用在 A 和 B 上,但它们的差值基本不变。这就是所谓的「共模抑制」。

小技巧:你可以把差分信号想象成两个人抬着一根竹竿。如果地面不平(干扰),两个人同时上下晃动,但竹竿始终保持水平。这就是差分信号的魅力。

实际项目中,差分信号的电压摆幅很小,通常只有 200mV 到 5V。但别小看这 200mV,它能在几百米的距离上稳定传输数据。为什么?因为差分信号不依赖地电平,地电位差不会影响它。

2.3 终端电阻匹配:别小看这 120 欧姆

终端电阻匹配,是 RS-485 和 RS-422 系统中最容易出问题的地方。我见过太多工程师,要么忘了加终端电阻,要么加错了位置。

为什么要加终端电阻?

信号在长线传输时,如果遇到阻抗不连续的地方,会产生反射。反射信号会叠加在原信号上,导致数据错误。终端电阻的作用,就是吸收信号能量,消除反射。

终端电阻的取值:

  • 标准值:120 欧姆(对应双绞线的特性阻抗)
  • 位置:总线的两端各加一个
  • 功率:1/4W 或 1/2W 就够用
避坑指南:我曾经在一个项目中,把终端电阻加在了每个节点上。结果总线上挂了 10 个节点,每个节点都加了 120 欧姆,相当于总线上并联了 10 个 120 欧姆电阻。你算算,等效电阻只有 12 欧姆了。驱动芯片根本带不动,通信完全瘫痪。记住:终端电阻只加在总线两端,中间节点不要加!

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

如果通信距离很短(比如 1 米以内),速率很低(9600 bps 以下),不加终端电阻也能工作。但我不建议这么做。养成好习惯,该加就加。

2.4 隔离技术:光耦 vs 磁耦

工业现场,隔离是必须的。为什么?因为地电位差、浪涌、雷击,这些都可能通过通信线进入你的电路板,烧毁芯片。

隔离的本质,就是切断电气连接,只让信号通过。常用的隔离方式有两种:光耦和磁耦。

2.4.1 光耦隔离:经典但有点慢

光耦的原理很简单:输入端是 LED,输出端是光敏三极管。电信号转成光,光再转成电,电气上完全隔离。

光耦的优点:

  • 隔离电压高(常见 2500V 到 5000V)
  • 成本低
  • 技术成熟

光耦的缺点:

  • 速度慢(普通光耦只能到几十 kbps)
  • 功耗大(LED 需要几 mA 电流)
  • 寿命有限(LED 会老化)

我记得有一次,用光耦做 RS-485 隔离,速率跑到 115200 bps 时,波形已经严重失真了。后来换了高速光耦(比如 6N137),才解决问题。

2.4.2 磁耦隔离:现代方案

磁耦是近几年流行起来的方案。它用变压器耦合信号,没有 LED,所以速度快、功耗低。

磁耦的优点:

  • 速度快(轻松到 100 Mbps 以上)
  • 功耗低(微安级)
  • 寿命长
  • 集成度高(一个芯片搞定多路隔离)

磁耦的缺点:

  • 成本稍高
  • 抗共模干扰能力不如光耦(但也在进步)

我的建议:如果速率在 115200 bps 以下,用光耦完全够用,成本还低。如果速率超过 1 Mbps,或者对功耗有严格要求,选磁耦。我现在做新项目,基本都用磁耦了,比如 ADuM 系列或者 ISO 系列,省心。

2.4.3 隔离电源:别忘了它

光耦和磁耦只隔离了信号,但电源呢?如果通信双方的地电位差很大,信号隔离了,电源不隔离,照样会出问题。

隔离电源的方案:

  • DC-DC 隔离模块(比如 B0505S)
  • 变压器隔离
  • 电容隔离(适合小功率)

我习惯用 DC-DC 隔离模块,简单可靠。注意隔离电源的功率要留余量,别刚好够用。

2.5 实战经验总结

讲了这么多,最后分享几个我在项目中总结的经验:

  1. RS-485 的 A/B 线一定要用双绞线,不是随便两根线就行。双绞线能有效抑制共模干扰。
  2. 终端电阻的功率别选太小。虽然 1/4W 够用,但我习惯用 1/2W,更可靠。
  3. 隔离芯片的供电要干净。我见过有人用 7805 直接给隔离芯片供电,纹波太大导致通信误码。加个 LC 滤波会好很多。
  4. 地线一定要接。虽然 RS-485 是差分信号,但地线能提供参考电位,减少共模电压。别省这根线。
  5. 调试时先测波形。用示波器看 A/B 线的差分波形,能快速定位问题。我调试 RS-485 时,第一步就是看波形。

最后说一句:物理层是通信系统的基础。基础不牢,地动山摇。别觉得这些是小事,我在项目中见过太多因为物理层问题导致整个系统瘫痪的案例。把基础打牢,后面的工作才能顺利。

下一章,咱们聊聊数据链路层,看看数据是怎么打包成帧的。到时候我会分享一个我调试 Modbus 协议时遇到的坑,很有意思。