RS232与RS485:不是“线数不同”,而是两种通信哲学的硬碰硬
你有没有遇到过这样的现场问题?
一台新装的温控器接上PLC后通信时断时续,用示波器一看RX线上全是毛刺;换一根屏蔽线、加个磁环,还是不行;最后发现——它和隔壁变频器共用了同一根GND线,而那条地线在配电柜里绕了三圈,阻抗接近2Ω。
又或者,在调试Modbus RTU网络时,第16个节点一挂上去,整条总线就瘫痪,波特率从9600降到4800也不稳定,查了一整天寄存器配置、地址冲突、超时参数……最后拆开接线盒,发现中间某个端子排上偷偷并了一个120Ω电阻。
这些不是玄学,是RS232和RS485在物理层“打架”的真实回响。它们名字里都带“RS”,都走UART协议栈,甚至都能用同一块STM32开发板驱动——但一旦脱离实验室面包板,进入真实工业现场,一个靠“电压绝对值”说话,一个靠“电压差值”生存,这种底层逻辑的撕裂,会立刻在PCB走线上、在接地策略里、在固件时序中,炸出所有被忽略的设计债务。
我们不讲教科书定义,也不列参数表比大小。我们直接钻进工程师每天面对的真实战场:原理图怎么画不翻车?PCB布线哪几条线必须等长?DE引脚到底该在TC中断里拉低,还是在IDLE中断后延时1.5字符时间?GND要不要接?接到哪儿?接几个?
这才是接口设计真正要解决的问题。
为什么RS232在车间里“活不过三天”?
先说一个反直觉的事实:RS232不是为工业现场设计的。它的标准诞生于1962年,目标是让电传打字机(Teletype)和调制解调器(Modem)之间稳定通信——两者通常放在同一张工作台上,距离不超过3米,共享同一个电源和机壳地。
所以它的电气设计,本质上是一套“理想实验室协议”:
- 逻辑‘1’ = –3V ~ –15V,逻辑‘0’ = +3V ~ +15V
- 接收器只看TX或RX对GND的电压
- 没有差分,没有共模抑制,没有终端匹配概念
- 它默认你已经把GND焊得像铜柱一样结实,且整条链路上不存在超过±3V的地电位差
但在真实产线里,GND是什么?是电机启停时跳动1.2V的参考点,是变频器载波频率在地平面上激起的30MHz谐振,是两台设备隔着30米电缆、各自接不同配电箱PE端子形成的“浮动地山谷”。
这时候,RS232的单端结构就成了放大器:
- 信号线上每1mV的共模噪声,都会1:1变成误判风险;
- GND压降0.8V,就可能把本该是–12V的逻辑‘1’抬到–11.2V——仍在阈值内;但若叠加1.5V工频干扰,瞬间变成–9.7V,接收器就懵了;
- 更致命的是,它要求“点对点”,意味着你无法在一条线上挂多个传感器。想扩展?只能加USB转多串口卡——然后你会发现,那个USB Hub的GND又成了新的噪声耦合点。
所以RS232的正确打开方式,从来不是“工业总线”,而是:
✅ 编程调试口(PC ↔ PLC/DCU)
✅ 本地HMI串口(屏与控制器紧挨着)
✅ 实验室设备互联(示波器、万用表、信号源同插一