第2章:物理层与通信介质
各位同学,咱们今天聊聊Modbus通信的“地基”——物理层。说白了,就是数据到底怎么在线上跑的。我见过不少新手,上来就写代码调协议,结果死活连不上,最后发现是线接错了,或者距离太远信号衰减了。嗯,物理层搞不定,上层协议再漂亮也是白搭。
2.1 RS-232:最经典的“点对点”
RS-232,这玩意儿年纪比我都大。它用的是单端信号,说白了就是一根信号线对地线,电压差来代表逻辑“0”和“1”。
- 逻辑1(Mark):-3V ~ -15V
- 逻辑0(Space):+3V ~ +15V
我个人习惯把RS-232叫做“短距离直连”。为什么?因为它抗干扰能力弱,传输距离一般不超过15米。我在项目里用它来调试设备,比如连个PLC或者串口屏,距离近,简单粗暴。
2.2 RS-485:工业现场的主力军
RS-485,这才是咱们工业物联网的主角。它用的是差分信号,两根线(A和B)拧在一起,靠两根线之间的电压差来传数据。你想想看,两根线同时受到干扰,差值基本不变,所以抗干扰能力特别强。
- 逻辑1:A线比B线高(通常>200mV)
- 逻辑0:B线比A线高(通常>200mV)
我记得有一次在工厂里,传感器离主机有800多米,用RS-232根本不行,换成RS-485,加了个终端电阻,稳得很。RS-485支持多点通信,一条总线上最多能挂256个设备(实际看驱动芯片)。
2.3 RS-422:全双工的“老大哥”
RS-422和RS-485很像,也是差分信号。但有个关键区别:RS-422是全双工的,能同时收发数据。它用了4根线:发送对(T+、T-)和接收对(R+、R-)。
我在项目中很少用RS-422做传感器采集,因为成本高,线也多。但如果你需要高速、长距离、同时收发,比如连接某些高速PLC或者变频器,RS-422就派上用场了。
| 特性 | RS-232 | RS-485 | RS-422 |
|---|---|---|---|
| 信号类型 | 单端 | 差分 | 差分 |
| 最大距离 | 15米 | 1200米 | 1200米 |
| 最大节点数 | 2(点对点) | 256(典型) | 10(接收) |
| 通信模式 | 全双工 | 半双工 | 全双工 |
| 典型应用 | 调试、短距 | 工业总线 | 高速设备 |
2.4 双绞线与终端电阻
说到RS-485,就绕不开双绞线和终端电阻。双绞线,就是把两根信号线(A和B)像麻花一样拧在一起。为什么要拧?因为两根线受到的电磁干扰几乎一样,差分信号一减,干扰就抵消了。
终端电阻,这玩意儿我吃过亏。曾经有个项目,总线上挂了10个传感器,距离300米,数据总是丢包。我查了半天,发现总线两端没加120欧姆的终端电阻。加上之后,信号反射没了,通信稳如老狗。
2.5 常见接线方式
接线方式其实就几种,我给大家总结一下:
- 点对点:一个主机一个从机,RS-232或RS-485都行。简单,但扩展性差。
- 总线型:RS-485最常用。所有设备挂在一对双绞线上,手拉手连接。注意不要搞成星型,信号反射会让你头疼。
- 菊花链:从主机出来,先连设备1,再从设备1连到设备2,依次类推。这种接法在长距离时效果不错。
我曾经在一个项目中,客户非要搞星型接线,结果通信时好时坏。我过去一看,直接改成总线型,问题解决。嗯,有时候理论就是实践,别瞎创新。
2.6 知识体系总览
下面这张图,是我自己画的,把本章的核心逻辑串起来了。你一看就明白:
2.7 避坑指南
最后,我把自己踩过的坑分享给你:
- 接地问题:我曾经在一条总线上,有的设备接地,有的没接,结果共模电压差太大,烧了两个485芯片。后来我统一了地线,再没出过事。
- 线缆质量:别用普通网线代替双绞线。我试过,距离一长就丢包。老老实实用屏蔽双绞线(STP),尤其是靠近变频器、电机这些强干扰源的地方。
- 终端电阻别乱加:如果总线很短(比如几米内),不加电阻也能工作。但一旦超过50米,或者节点超过10个,必须加。我曾经偷懒没加,结果调试了整整两天。
好了,物理层就聊到这儿。记住一句话:物理层稳了,Modbus通信就成功了一半。下一章咱们会深入数据链路层,看看数据帧到底是怎么打包的。