RS485凭什么在工厂横着走
RS485凭什么在工厂横着走

RS485凭什么在工厂横着走

RS485凭什么在工厂里横着走?聊聊串口那点事

第一次进车间调试设备,会看见一根细细的双绞线从配电柜里钻出来,沿着桥架拐了七八个弯,串起了墙上十几个电表,最后接进 PLC。你可能会想:一根线挂这么多设备,不会打架吗?

那根线跑的其实是 RS485。工业现场几乎清一色都是它,RS232 反而少见。为什么?这篇就把串口这点事讲明白。

一、先看张对比表,心里有个数

对比维度RS232RS485
通信模式点对点(一对一)多点总线(一对多)
传输距离极短(标准 ≤15 米)极长(可达 1200 米)
信号方式单端信号(对地电压)差分信号(两线间电压差)
抗干扰能力极强
节点数2 台标准 32 个,可扩展到 128-256
典型场景电脑调试、短距离直连工业组网、PLC 与仪表通信

一句话总结:短距离、调试、一对一选 RS232;长距离、抗干扰、多设备组网选 RS485。

下面拆开说为什么。

二、根本区别:单端 vs 差分

这是 RS232 和 RS485 最本质的差异,理解了这个,其他的都好懂。

RS232:单端信号

RS232 用一根信号线加一根地线传数据。它看的是信号线相对于”地”的绝对电压——标准规定 ±3V 到 ±15V 之间,常见的是 ±12V(PC 串口):+3V~+15V 代表逻辑 0(Space),-3V~-15V 代表逻辑 1(Mark)。-3V 到 +3V 之间的过渡带是未定义区。

关键问题是,工厂不是实验室。车间里有大型电机、变频器、电焊机,一启动就往空间里泼电磁噪声。地线这东西本来该是 0V 的参考点,结果被干扰得忽高忽低。信号线电压没变,地线飘了,采到的值就全错了。

这就是 RS232 在工业现场活不下去的根本原因——它的参考点不稳

RS485:差分信号

RS485 换了个思路,干脆不看绝对电压了。它用两根线(A 线和 B 线),看的是这两根线之间的电压差

A 比 B 高 200mV 以上,算 1;A 比 B 低 200mV 以上,算 0。

妙就妙在——外界干扰是同时作用在 A 和 B 两根线上的。这俩线必须双绞在一起,干扰信号几乎一模一样地耦合进两根线。一相减,干扰就抵消了,剩下的还是那个干净的电压差。

这就是为什么 RS485 在变频器旁边、在电机柜里也能稳稳跑数据。它的抗干扰不是靠屏蔽(虽然也屏蔽),是靠数学——同相干扰相减为零。

顺便提一句,485 的两根线必须用双绞线,别图便宜买平行线。双绞是差分抗干扰能成立的前提,没双绞,差分的好处打对折。

三、距离和组网:15米 vs 1200米,以及”单位负载”

RS232 标准里写的传输距离上限是 15 米。15 米是什么概念?从配电柜到对面墙都够呛。而且它天生就是点对点设计,一条线上只能挂两个设备。

RS485 不一样。差分信号衰减慢,低波特率下能跑 1200 米——横穿一个厂房没问题。更关键的是它支持多点组网,一条总线上能并联几十甚至上百个设备。

这里要补一个概念——RS485 的节点上限是 32 个单位负载(Unit Load, UL)。一个标准 RS485 收发器占 1 个 UL,所以理论上一条线挂 32 个。但你买到的”128 节点”甚至”256 节点”的模块是怎么回事?用的是 1/4 UL 或 1/8 UL 的低功耗收发器——负载小了,同一条总线上就能多挂。不是标准变了,是芯片升级了。

工业现场为什么爱 485?因为布线便宜。50 个设备用 RS232,得拉 50 根线;用 485,一根线串成菊花链。省钱、省工、省故障点。

四、全双工 vs 半双工:打电话和对讲机

通信方式上两者也不一样:

标准接线通信方式比喻
RS2323 根(TXD, RXD, GND)全双工(同时收发)打电话(嘴说耳朵同时听)
RS4852 根(A, B)半双工(分时收发)对讲机(按住说,松开听)

RS232 有独立的发送线和接收线,所以能同时收发。RS485 只有两根差分线,发的时候不能收,收的时候不能发,得轮流来。

半双工听起来像是退步,但在工业场景里根本不是问题——Modbus RTU 本来就是主从轮询,主站问一句,从站答一句,本来就不需要同时收发。两根线的代价是省了一对线、省了一组收发器,划算。

顺便说 RS422:485 的”全双工兄弟”

RS422 和 RS485 用的是同一套差分信号技术,差别就一条——RS422 有 4 根线(两对):一对专门发、一对专门收。所以它是全双工差分通信,又能抗干扰又能同时收发。

但 RS422 只能一个发、多个收(单主多从的单向广播),不像 RS485 支持真正的多主双向。在工业现场,RS485 的灵活性远胜于 RS422 的”全双工”,所以 485 赢了。

五、别在布线上翻车:仨硬件细节

这三个硬件坑,调试时碰上了能让你怀疑人生——问题不在代码,在物理层。

1. 终端电阻

在 RS485 总线最远端的两头各接一个 120Ω 的终端电阻。作用是吸收信号能量,防止反射

长线不接终端电阻 → 信号在线的尽头弹回来 → 和数据叠加 → 出错。短距离(几米)不接还能凑合跑,1200 米不接就是在赌命。有些 USB 转 485 模块自带了可跳线的终端电阻,用的时候别忘了把跳线帽接上。

2. 偏置电阻

总线空闲时(没人发送),A/B 线的压差可能落在 -200mV ~ +200mV 的不定区,接收端会读到随机噪声。偏置电阻就是在 A 线上拉一个电阻到 VCC、B 线下拉一个电阻到 GND,让空闲时 A > B,维持一个确定的逻辑 1(空闲态)。

很多中高端模块自带偏置,便宜的没有。如果你发现偶尔丢包、随机出错,但没有 CRC 错误——很可能是缺偏置。

3. A/B 线的”反直觉”命名

这个坑踩过的都懂。 RS485 标准的 A 和 B,不同厂家标注可能反过来:

  • EIA/TIA 标准:A = 非反相(+),B = 反相(-),A > B = 逻辑 1。
  • 有些国产模块标注 D+/D-,其中 D+ 通常接 B、D- 接 A——是的,反着来的。
  • 有些欧洲设备更离谱,把 B 叫 A’。

最简单的判断方法:拿万用表量,空闲状态(偏置电阻已接)下,哪根线电压高,那就是非反相端(通常是 A 或 D-)。接反了会使逻辑全部翻转,能通信但数据全是乱的,现象和字节序倒了有点像。

🔧 接线口诀:A 接 A,B 接 B,两头各加 120Ω,有空再上偏置。

六、TTL 是什么?插一嘴

聊串口绕不开 TTL。TTL 全称是晶体管-晶体管逻辑,说白了就是数字电路最底层的电压标准,芯片之间说话用的”原生语言”。

我们常说的”TTL 电平”其实有两套,别搞混:

逻辑状态含义5V TTL3.3V LVTTL (CMOS)
高电平1输出 ≥2.4V(输入 ≥2.0V)输出 ≥2.4V(输入 ≥2.0V)
低电平0输出 ≤0.4V(输入 ≤0.8V)输出 ≤0.4V(输入 ≤0.8V)

实际上 3.3V 系统的输出高电平就是 3.3V 左右,但因为阈值(2.0V)一样,3.3V 信号能被 5V 系统正确识别。反过来,5V 输出直接怼 3.3V 输入端可能烧芯片——要加电平转换。

你拿 STM32 的串口引脚(TX/RX),出来的就是 3.3V LVTTL。ESP32 也是。传统 Arduino Uno 是 5V TTL。这个电平传不远,几十厘米就衰减得没法用。

所以单片机要和外面的 RS485 设备通信,中间必须加一个电平转换芯片——MAX485 把 TTL 转成 RS485 差分信号,反过来也行。

记住关系:TTL 是芯片级电平、RS232/RS485 是线路级标准。前者管”引脚上几伏算 1″,后者管”线上怎么传”。

七、什么时候用什么?

最后给几条实用判断:

  • 调试设备 —— RS232。工程师带笔记本去现场,一根短线连 Console 口,简单即插即用,不用配地址。
  • 车间组网 —— RS485。几十个传感器、电表、水表要回中控,485 + Modbus RTU 是黄金组合。
  • 板子之间近距离通信 —— TTL 直连。同一个 PCB 上、或者两块板子靠得很近,TTL 最省事,不用转换芯片。

我自己现在做 Modbus 调试,USB 转 485 的模块(CH340 + MAX485)是标配,揣兜里走哪带哪。RS232 那种 9 针串口,新笔记本都没有了,除了配老设备基本用不上。

🔧 USB 转 485 模块选购:市场上最常见的是 CH340 + MAX485 方案,十几块一个,能用但有几个硬伤——收发切换靠软件控制 DE/RE、没自带终端电阻和偏置。调试时偶尔丢包、偶尔收不到最后一字节 CRC,多半是它的问题。稍微加点预算上 FT232RL + SP485/SP3485 方案(三四十块),硬件自动流控,带终端电阻跳线和偏置电路,信号稳很多。如果你只是偶尔用用,便宜的够;如果天天调设备,别省这个钱。


串口就聊到这。下一篇是重头戏——Modbus RTU 和 TCP 到底差在哪,这个我画图给你看。

上一篇:8个功能码,干完90%的Modbus活儿 下一篇:Modbus RTU 和 TCP 到底差在哪