2、物理层与电气特性:RS-232、RS-485、RS-422接口标准对比、接线方式、终端电阻、波特率设置

各位工程师朋友,咱们今天聊聊Modbus RTU的物理层。说白了,就是数据到底怎么在线上跑的。

我见过太多项目,协议栈写得天衣无缝,结果现场死活通不上。最后查来查去,问题全出在物理层——线接错了、电阻没加、波特率对不上。嗯,这些坑我都踩过。

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

Modbus RTU最常用的物理层接口就这三种。我按自己的经验,给你捋一捋。

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

RS-232是最早的串行通信标准。它的信号是单端传输的,说白了就是一根信号线对地。

关键参数:

  • 传输距离:15米左右(实际我建议别超过10米)
  • 最高速率:115200 bps(但距离长了速率得降)
  • 信号电平:±3V ~ ±15V(逻辑1是负电压,逻辑0是正电压)
  • 接线方式:点对点(只能连两个设备)
⚠ 注意:RS-232的抗干扰能力比较弱。我在一个变频器旁边用过RS-232,数据乱得没法看。后来换了RS-485,问题立马解决。

典型接线:

DTE(电脑)          DCE(PLC)
  TXD  ——————————  RXD
  RXD  ——————————  TXD
  GND  ——————————  GND

这里有个小技巧:如果你用DB9接头,2脚是RXD,3脚是TXD,5脚是GND。我刚开始做项目时,老记混这个顺序。

2.1.2 RS-485:工业现场的王牌

RS-485是我用得最多的接口。它采用差分信号传输,抗干扰能力比RS-232强太多了。

关键参数:

  • 传输距离:1200米(不加中继器)
  • 最高速率:10 Mbps(距离短时)
  • 信号电平:差分电压(A-B > +200mV为逻辑1,A-B < -200mV为逻辑0)
  • 接线方式:多点(最多32个节点,用中继器可以更多)
💡 核心优势:RS-485是半双工通信,同一时刻只能一个设备发数据。Modbus RTU的主从机制正好匹配这个特性。

典型接线:

主站                   从站1                   从站2
  A(+) —————————————— A(+) —————————————— A(+)
  B(-) —————————————— B(-) —————————————— B(-)
  GND ——————————————— GND ——————————————— GND

我个人习惯在总线的两端各加一个120Ω的终端电阻。为什么?后面会讲。

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

RS-422和RS-485很像,但它是全双工的。也就是说,可以同时收发数据。

关键参数:

  • 传输距离:1200米
  • 最高速率:10 Mbps
  • 信号电平:差分信号(和RS-485一样)
  • 接线方式:一对多(一个发送端,最多10个接收端)

典型接线:

主站                   从站1                   从站2
  TX+ —————————————— RX+ —————————————— RX+
  TX- —————————————— RX- —————————————— RX-
  RX+ —————————————— TX+ —————————————— TX+
  RX- —————————————— TX- —————————————— TX-
  GND ——————————————— GND ——————————————— GND
🔧 我的建议:如果项目要求实时性高,比如多个从站需要同时响应,RS-422比RS-485更合适。但大多数Modbus RTU场景,RS-485就够了。

2.2 三种接口的对比表格

特性 RS-232 RS-485 RS-422
传输方式 单端 差分 差分
通信模式 全双工 半双工 全双工
最大节点数 2 32(标准) 1发10收
最大距离 15米 1200米 1200米
最大速率 115.2 kbps 10 Mbps 10 Mbps
抗干扰能力
接线线数 3线(TXD/RXD/GND) 2线(A/B/GND) 4线(TX+/TX-/RX+/RX-)
典型应用 短距离调试 工业现场总线 高速数据采集

2.3 终端电阻:为什么加?怎么加?

终端电阻这个问题,我当年也困惑过。为什么要在RS-485总线的两端加电阻?

原因很简单:阻抗匹配。信号在线上传输时,如果遇到阻抗突变,就会产生反射。反射信号叠加在原信号上,数据就乱了。

RS-485的典型特性阻抗是120Ω。所以我们在总线两端各加一个120Ω的电阻,让信号走到尽头时被吸收掉,不会反弹回来。

⚠ 避坑指南:我曾经在一个项目里,总线上挂了15个设备,每个设备都加了120Ω电阻。结果信号完全没法看。后来才明白——终端电阻只加在总线的两端,中间节点绝对不能加。

加电阻的方法:

  • 找到总线的物理两端(最远的两个设备)
  • 在A(+)和B(-)之间并联一个120Ω电阻
  • 如果设备内部有跳线,直接拨到"Term"或"ON"位置
  • 如果设备没有,自己焊一个电阻上去
🔧 小技巧:如果你不确定总线两端在哪,可以用万用表测一下。断电状态下,测A和B之间的电阻。如果两端都加了120Ω,总电阻应该是60Ω左右。如果只有一端加了,就是120Ω。如果没加,就是无穷大。

2.4 波特率设置:快与慢的平衡

波特率,说白了就是每秒传多少位。Modbus RTU常用的波特率有:9600、19200、38400、115200。

波特率的选择原则:

  • 距离越远,波特率越低
  • 干扰越大,波特率越低
  • 节点越多,波特率越低

我个人的经验是:9600 bps是工业现场最稳妥的选择。虽然慢了点,但稳定。你想想看,一个Modbus RTU报文也就几十个字节,9600 bps下传输时间也就几十毫秒。对于大多数PLC应用来说,这个速度完全够用。

波特率与传输距离的关系:

波特率 最大距离(RS-485) 典型场景
9600 bps 1200米 大多数工业现场
19200 bps 800米 中等距离控制
38400 bps 400米 短距离高速采集
115200 bps 100米 调试或机柜内通信
💡 重要提醒:总线上所有设备的波特率必须一致。我曾经遇到一个项目,主站设了19200,有个从站默认是9600。结果通信时好时坏,查了两天才发现。从那以后,我每次调试第一件事就是核对所有设备的波特率。

2.5 接线实战经验

最后,分享几个我踩过的坑,希望能帮你少走弯路。

  1. 屏蔽层接地:RS-485的屏蔽层,我建议单端接地。在PLC那一端接地,另一端悬空。两边都接地反而会产生地环路,引入干扰。
  2. 地线必须接:很多人觉得RS-485只用A和B两根线就够了。其实GND一定要接。不接地线的话,共模电压可能超出芯片的承受范围,烧毁接口。
  3. 线缆选择:我习惯用屏蔽双绞线。绞距越密,抗干扰能力越强。AWG22或AWG24的线径比较合适。
  4. 避免星形拓扑:RS-485总线必须是直线拓扑,不能有分支。如果实在避免不了,分支长度不要超过1米。
⚠ 最后的忠告:物理层的问题,往往是最难排查的。我建议你在项目设计阶段就把接线方案定好,不要等到现场再临时改。一个稳定的物理层,是Modbus RTU通信成功的一半。

好了,关于物理层和电气特性,就聊到这里。下一章我们进入数据链路层,看看Modbus RTU的报文到底长什么样。