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是正电压)
- 接线方式:点对点(只能连两个设备)
典型接线:
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个节点,用中继器可以更多)
典型接线:
主站 从站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
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Ω的电阻,让信号走到尽头时被吸收掉,不会反弹回来。
加电阻的方法:
- 找到总线的物理两端(最远的两个设备)
- 在A(+)和B(-)之间并联一个120Ω电阻
- 如果设备内部有跳线,直接拨到"Term"或"ON"位置
- 如果设备没有,自己焊一个电阻上去
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米 | 调试或机柜内通信 |
2.5 接线实战经验
最后,分享几个我踩过的坑,希望能帮你少走弯路。
- 屏蔽层接地:RS-485的屏蔽层,我建议单端接地。在PLC那一端接地,另一端悬空。两边都接地反而会产生地环路,引入干扰。
- 地线必须接:很多人觉得RS-485只用A和B两根线就够了。其实GND一定要接。不接地线的话,共模电压可能超出芯片的承受范围,烧毁接口。
- 线缆选择:我习惯用屏蔽双绞线。绞距越密,抗干扰能力越强。AWG22或AWG24的线径比较合适。
- 避免星形拓扑:RS-485总线必须是直线拓扑,不能有分支。如果实在避免不了,分支长度不要超过1米。
好了,关于物理层和电气特性,就聊到这里。下一章我们进入数据链路层,看看Modbus RTU的报文到底长什么样。