2. 物理层与电气特性:RS-232、RS-485、RS-422的电气特性对比、总线拓扑、终端电阻、接地与屏蔽

各位工程师朋友,咱们今天聊聊Modbus的“地基”——物理层。说白了,Modbus协议本身只是个“语言”,它得通过具体的物理介质才能把数据传出去。RS-232、RS-485、RS-422,这三兄弟就是最常见的“传声筒”。

我刚开始搞工控那会儿,就吃过物理层选型的亏。记得有一次,一个项目现场距离也就50米,我图省事用了RS-232,结果数据丢包丢得怀疑人生。后来才明白,不是协议不行,是物理层没选对。嗯,咱们今天就把这事儿彻底捋清楚。

2.1 三大接口的电气特性对比

先看一张对比表,心里有个底:

特性参数 RS-232 RS-485 RS-422
传输方式 单端(不平衡) 差分(平衡) 差分(平衡)
最大传输距离 约15米(实际建议<5米) 1200米(理论值) 1200米(理论值)
最大节点数 1发1收(点对点) 32个(标准),可扩展至256 1发10收(典型)
电压范围 ±3V ~ ±15V ±1.5V ~ ±6V(差分) ±2V ~ ±6V(差分)
逻辑“1”电平 -3V ~ -15V A-B > +200mV A-B > +200mV
逻辑“0”电平 +3V ~ +15V A-B < -200mV A-B < -200mV
抗干扰能力
常用场景 短距离调试、编程口 工业现场总线、多站通信 长距离点对多点(单向)

看到这张表,你可能会问:为什么RS-232距离这么短?说白了,它用的是单端信号,地线是共用的。信号电压是相对于“地”来测量的。一旦距离长了,地线压差和外部干扰就会把信号淹没。我见过有人用RS-232拉了30米线,结果数据全是乱码,那叫一个惨。

而RS-485和RS-422用的是差分信号。两根线(A和B)互相拧在一起,信号看的是它们之间的电压差,而不是对地的电压。干扰进来,两根线上同时被“污染”,但差值基本不变。这就是它抗干扰强的根本原因。

核心区别一句话:RS-232是“单打独斗”,RS-485/422是“夫妻同心,其利断金”。

2.2 总线拓扑:怎么连才靠谱?

拓扑结构这事儿,我建议你严格按照标准来,别自己“创新”。

RS-232:点对点,没得选

RS-232天生就是一对一。一个DTE(数据终端设备,比如PLC)连一个DCE(数据通信设备,比如变频器)。如果你想一主多从,对不起,硬件上不支持。我见过有人用“Y型线”硬接两个设备,结果要么烧端口,要么通信时好时坏。别这么干。

RS-485:手拉手,总线型

RS-485的标准拓扑是总线型,也叫“手拉手”。所有设备并在一根总线上,从主站开始,一个接一个,最后到末端设备。

  • 正确做法:用一根双绞线,从主站串到从站1,再到从站2……最后到从站N。
  • 错误做法:星型、树型、环型。尤其是星型,分支线太长会产生信号反射,导致通信不稳定。

警告:我曾经在一个项目里,现场工人为了省事,把RS-485线接成了“菊花链”加“星型”的混合体。结果调试了三天,数据就是不稳定。最后重新拉线,改成纯总线型,一次通过。记住:RS-485只认总线型

RS-422:一点对多点,但方向要注意

RS-422可以一主多从,但它是单向的。主站发,多个从站收。从站如果要回数据,得用另一对线。所以RS-422实际上是“四线制”:一对发,一对收。拓扑上也是总线型,但比RS-485多了一对线。

2.3 终端电阻:为什么加?加多少?

终端电阻这事儿,很多新手容易忽略。我刚开始也觉得“不加也能通啊”,但后来发现,不加终端电阻,长距离通信时信号反射会严重干扰数据。

为什么会这样?电信号在电缆里跑,遇到阻抗突变(比如线路末端突然断开),就会像回声一样反射回来,跟后面的信号叠加,造成波形畸变。

终端电阻的作用,就是把这个“回声”吸收掉,让信号平稳落地。

  • 阻值:标准是120Ω。因为RS-485/422用的双绞线特性阻抗大约是120Ω。
  • 位置:只在总线的最两端各加一个。中间设备不要加。
  • 什么时候必须加?传输距离超过100米,或者波特率高于9600bps时,我建议你加上。短距离、低波特率下,不加也能凑合。

我的习惯:不管距离长短,只要是多站RS-485,我都在两端各焊一个120Ω电阻。成本几毛钱,能省掉很多排查时间。你想想看,现场出了问题,你拿示波器去量波形,有终端电阻的波形干净利落,没有的波形像锯齿一样,看着就头疼。

2.4 接地与屏蔽:最容易踩的坑

接地和屏蔽,是物理层里最容易被忽视,也最容易出问题的地方。我见过太多工程师在这上面翻车了。

屏蔽层怎么接?

RS-485/422用的双绞线通常带屏蔽层(一层铝箔或编织网)。这个屏蔽层怎么接?

  • 单端接地:屏蔽层只在一端(通常是主站端)接大地。这是最推荐的做法。
  • 双端接地:如果两端都接大地,可能会形成地环路。地环路会产生共模电流,反而引入干扰。

我曾经踩过的坑:一个项目现场,变频器一启动,RS-485通信就断。查了两天,最后发现是屏蔽层两端都接了地。变频器启动时产生的大电流通过地环路耦合到了通信线上。改成单端接地后,问题立刻消失。

信号地(GND)要不要接?

RS-485标准里,其实没有强制要求接信号地。但实际项目中,我建议你接一根信号地线(也叫参考地)。

  • 如果不接信号地,各设备的地电位可能相差很大。当共模电压超过RS-485芯片的承受范围(通常-7V到+12V),芯片就会烧掉。
  • 接法:用一根单独的线(或者双绞线中的一对备用线),把所有设备的GND连起来,然后在主站端单点接大地。

接地口诀:屏蔽层单端接地,信号地全线贯通,主站端统一接大地。

RS-232的接地问题

RS-232的“地”就是信号地。它的引脚里本来就有GND(通常是引脚5)。所以RS-232的接地相对简单,只要把设备的GND连起来就行。但要注意,RS-232的GND不能跟大地混为一谈,否则容易引入干扰。

2.5 实战建议:怎么选?

最后,给你几个我个人的选型建议:

  1. 距离<5米,只有两个设备:用RS-232。简单、便宜、调试方便。
  2. 距离5-100米,多站通信:用RS-485。这是工业现场最通用的方案。
  3. 距离>100米,或者环境干扰大:必须用RS-485,加终端电阻,做好屏蔽和接地。
  4. 需要一主多从,且从站只收不发:可以考虑RS-422,但说实话,现在RS-485也能干这活,而且更灵活。

嗯,物理层这部分就讲到这里。说白了,Modbus通信好不好,物理层占一半。你把这几个接口的特性、拓扑、电阻、接地搞明白了,现场调试至少能少走一半弯路。下一章咱们聊聊数据链路层,看看Modbus是怎么把数据打包成帧的。