第2章:物理层与传输介质:RS-232、RS-485、RS-422的区别与选型、双绞线与屏蔽、终端电阻匹配

各位工程师朋友,咱们接着聊。上一章我们把Modbus的协议框架理清了,这一章得落地到物理层了。说白了,Modbus报文最终是要靠电线来传输的。你协议写得再漂亮,物理层选错了,现场照样跑不起来。

我见过太多项目,上位机软件调得好好的,一到现场就丢包、乱码。查到最后,十有八九是RS-485的接线或者终端电阻出了问题。所以这一章,咱们把物理层的这些“硬骨头”啃下来。

2.1 三种物理接口:RS-232、RS-485、RS-422

这三种接口,是工业通信的老三样。虽然现在也有以太网,但在PLC、变频器、仪表这些设备上,它们依然是绝对主力。我个人的习惯是:能用485就不用232,能用422就不用单端。

2.1.1 RS-232:点对点的老将

RS-232是最早的串行通信标准。它的信号是“单端”的,什么意思?就是一根信号线对地线。比如发送数据(TXD)和接收数据(RXD),都是相对于信号地(GND)来测量电压的。

关键参数:

  • 传输距离:理论15米左右。我在现场试过,超过20米基本就废了,数据全是错的。
  • 通信方式:全双工。可以同时发和收,这点比RS-485强。
  • 连接方式:点对点。只能接一个设备,不能组网。
  • 电平标准:-3V到-15V表示逻辑“1”,+3V到+15V表示逻辑“0”。
注意:RS-232的抗干扰能力很差。因为它是单端传输,共模噪声会直接叠加在信号上。工厂里电机一启动,232通信就断,我遇到过好几次。

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

RS-485是目前Modbus最常用的物理层。它用“差分信号”传输,也就是用两根线(A和B)的电压差来表示数据。这招很聪明,因为外部干扰对两根线的影响是差不多的,一相减,干扰就被抵消了。

关键参数:

  • 传输距离:理论1200米。实际项目中,我用过800米,加了中继器还能更远。
  • 通信方式:半双工。同一时刻只能发或收,需要软件控制收发切换。
  • 连接方式:多点。一条总线上最多可以挂32个节点(标准),现在有些芯片可以做到256个。
  • 电平标准:A比B高200mV以上为逻辑“1”,A比B低200mV以上为逻辑“0”。
我的经验:RS-485的收发切换是个坑。很多初学者忘了在发送完后把485芯片切回接收模式,导致总线一直被“拉死”。我习惯在发送完最后一个字节后,加一个1ms的延时再切回接收。

2.1.3 RS-422:全双工的485

RS-422可以看作是RS-485的“全双工”版本。它用了4根线:一对发送(T+、T-),一对接收(R+、R-)。这样发和收可以同时进行,不需要切换。

关键参数:

  • 传输距离:和485差不多,1200米左右。
  • 通信方式:全双工。适合需要实时响应的场合。
  • 连接方式:一主多从。主机可以同时发,从机可以同时回,但主机只能有一个。

说实话,RS-422在Modbus里用得不多。因为Modbus是主从协议,主机发完命令才等从机回复,半双工完全够用。只有在一些高速数据采集系统里,我才会考虑用422。

2.1.4 选型对比表

特性 RS-232 RS-485 RS-422
传输方式 单端 差分 差分
通信模式 全双工 半双工 全双工
最大距离 15米 1200米 1200米
节点数量 1对1 最多32-256 1主多从
抗干扰能力
典型应用 短距离调试 工业总线 高速采集

2.2 双绞线与屏蔽:抗干扰的秘诀

选好了接口,线材也不能马虎。RS-485和RS-422必须用双绞线,这不是建议,是必须。为什么?

双绞线每根线都绞在一起,目的是让两根线受到的电磁干扰尽量一致。你想想看,如果两根线平行走,干扰源离一根近、离另一根远,那干扰就不一样了。绞在一起后,每根线在空间上“轮流”靠近干扰源,平均下来干扰就相等了。

屏蔽层的作用:

  • 屏蔽层可以阻挡外部的电磁干扰(EMI)。
  • 但屏蔽层不能两端都接地!
避坑指南:我曾经在一个项目里,把所有设备的屏蔽层都接到了机柜的地排上。结果通信反而更差了。后来发现,两端接地形成了“地环路”,电流在屏蔽层上乱窜,反而引入了噪声。正确的做法是:屏蔽层在主机端单点接地。

线材选型建议:

  • 普通环境:用RVSP 2×0.5mm²双绞屏蔽线。
  • 强干扰环境:用STP-120(特性阻抗120Ω的屏蔽双绞线)。
  • 千万别用电话线或者网线里的单根线代替,那会出大问题。

2.3 终端电阻匹配:为什么是120Ω?

这是现场最容易忽略的问题。很多工程师觉得“不接电阻也能通啊”,没错,短距离确实能通。但距离一长、波特率一高,信号反射就会让你头疼。

信号反射的原理:

电信号在电缆里传输,遇到阻抗突变的地方(比如线路末端突然断开),就会产生反射。反射回来的信号和原来的信号叠加,就会造成波形畸变。你看到的乱码,其实就是反射波把数据位“冲”坏了。

终端电阻的作用:

  • 在总线两端各接一个电阻,让信号走到末端时被“吸收”掉,不再反射回来。
  • 电阻值必须等于电缆的特性阻抗。RS-485标准电缆的特性阻抗是120Ω,所以终端电阻就是120Ω。
我的习惯:只要总线长度超过50米,或者波特率超过9600bps,我必接终端电阻。而且只在最远的两个设备上接,中间设备不接。接多了会加重驱动芯片的负载。

怎么判断是否需要接?

  1. 用示波器看A-B之间的波形。如果波形有“振铃”(过冲后上下抖动),就需要接。
  2. 或者简单点:距离<50米且波特率<9600,可以不接;否则必须接。

嗯,这里还要注意一点:有些设备内部已经集成了终端电阻,比如西门子的PLC,它有个拨码开关可以切换。用之前先查一下手册,别重复接了。

2.4 实战总结:一个典型的485网络搭建步骤

最后,我给大家总结一下搭建一个Modbus RTU 485网络的步骤。这是我每次做项目都会走的流程:

  1. 选型:确定主机和从机都支持RS-485。
  2. 布线:用RVSP双绞屏蔽线,走单独的线槽,远离动力电缆。
  3. 接线:A接A,B接B,GND接GND(很多设备需要共地)。屏蔽层在主机端单点接地。
  4. 终端电阻:在总线的首尾两个设备上,各接一个120Ω电阻。
  5. 偏置电阻(可选):如果总线空闲时电平不稳定,可以在主机端加偏置电阻,把A-B的电压拉到200mV以上。
  6. 测试:用示波器看波形,确认没有反射和畸变。
小技巧:如果你手头没有示波器,可以用Modbus调试软件连续读取数据。如果偶尔出现CRC校验错误,多半是物理层有问题。先检查终端电阻,再检查屏蔽接地。

好了,物理层这部分就讲到这里。下一章我们进入数据链路层,聊聊Modbus的报文结构。到时候你会发现,理解了物理层,报文里的那些“地址”、“功能码”才真正有了意义。