2、物理层与传输模式:RS-485接口详解、两线制与四线制、Modbus RTU与ASCII模式的区别、传输距离与速率

好,咱们进入第二章。这一章聊的是物理层,说白了就是信号怎么在线上跑。很多工程师一上来就写代码,结果现场死活通不上,最后发现是RS-485的A/B线接反了,或者终端电阻没加。嗯,这种坑我踩过不止一次。

2.1 RS-485接口详解

RS-485,全称叫TIA/EIA-485。它不是协议,是电气标准。它定义了电压、阻抗、时序这些物理层面的东西。Modbus只是借它的壳来传数据。

RS-485最大的特点是差分传输。什么意思?就是靠两根线(A和B)之间的电压差来判断逻辑0和1。A比B高200mV以上,算逻辑1;B比A高200mV以上,算逻辑0。这种设计抗共模干扰能力很强。我在一个变频器旁边拉过300米的线,信号照样稳。

另外,RS-485是半双工的。同一时刻只能一个人说话,其他人听。所以Modbus协议里才设计了主从机制——主机问,从机答,不能抢答。

关键参数速查:

  • 逻辑1(空闲态):A > B,电压差 +200mV ~ +6V
  • 逻辑0(激活态):B > A,电压差 -200mV ~ -6V
  • 共模电压范围:-7V ~ +12V
  • 最大节点数:标准32个,加中继可扩展

2.2 两线制与四线制

两线制就是A、B两根线,收发共用。所有设备都挂在这两根线上。这是最常用的方式,Modbus RTU基本都用它。优点是省线,缺点是半双工,收发要切换。

四线制呢?收发分开。两根发(Y、Z),两根收(A、B)。这样主机可以同时收发,实现全双工。但注意,从机还是半双工的。四线制在工业现场很少见,我做了十年项目,只用过一次——那是一个要求实时性极高的PLC系统,主机需要一边发指令一边收数据。

对比项 两线制 四线制
线缆数量 2根(A、B) 4根(Y、Z、A、B)
工作模式 半双工 全双工(主机端)
成本
应用场景 绝大多数Modbus网络 高速、实时性要求高的场景

我的建议:普通灌溉控制器,两线制完全够用。别为了追求全双工去搞四线制,布线麻烦,成本翻倍,收益不大。

2.3 Modbus RTU与ASCII模式的区别

Modbus有两种传输模式:RTU和ASCII。很多人搞混,其实区别就在编码方式上。

RTU模式:数据以二进制形式传输。一个字节就是8位,直接发。比如数值0x1A,线上就是0x1A。效率高,速度快。我99%的项目都用RTU。

ASCII模式:每个字节拆成两个ASCII字符发。比如0x1A,变成'1'和'A'两个字符,也就是0x31和0x41。数据量翻倍,速度慢一半。但好处是可读性强,用串口助手能看到明文。

你想想看,同样发100个字节,RTU只要100个字节时间,ASCII要200个。所以工业现场几乎清一色RTU。ASCII我只在调试阶段用过,方便看报文。

注意:同一个网络里,所有设备必须用同一种模式。RTU和ASCII不能混用。我曾经在一个项目里,主机设了RTU,从机默认是ASCII,结果调了三天才发现。

对比项 RTU ASCII
编码方式 二进制 ASCII字符
数据效率 高(1:1) 低(1:2)
校验方式 CRC16 LRC
帧间隔 3.5字符时间 1秒
可读性

2.4 传输距离与速率

RS-485的理论传输距离是1200米。但这是有条件的——波特率越低,距离越远。你想想看,信号在线路上传输会有衰减和畸变,速率越高,畸变越严重。

我整理了一个经验数据表,供你参考:

波特率 最大距离(约) 典型场景
9600 bps 1200米 长距离灌溉管网
19200 bps 800米 中等距离
38400 bps 400米 现场总线
115200 bps 100米 机柜内部

注意,这只是理论值。实际项目中,线缆质量、接地情况、干扰源都会影响距离。我有个项目,线缆用了劣质双绞线,9600波特率连500米都跑不到。后来换了屏蔽双绞线,问题解决。

避坑指南:

  • 终端电阻:长线(>300米)两端必须加120Ω电阻,防止信号反射
  • 接地:屏蔽层单端接地,不要两端都接,否则形成地环路
  • 线缆:用屏蔽双绞线,绞距越密越好
  • 中继器:超过1200米或超过32个节点,加中继器

最后说一句,速率和距离是矛盾的。你要远距离,就得降速率。灌溉控制器一般跑9600或19200就够了,控制指令就那么几个字节,没必要追求高速。稳定第一。

好,这一章就到这。下一章我们聊Modbus的帧结构,看看报文到底长什么样。