
RS485 现场最经典的一类故障是**“白天正常晚上乱码”**、“新加一个节点后整条总线开始随机丢包”、“换了根短线就好了”。它们的共同点不是完全不通信而是偶发、随机、和温度/负载/位置相关。这类问题十有八九不是协议问题是布线拓扑问题。一、先讲结论RS485 是差分传输靠 A、B 两根线之间的电压差判断 0 和 1。它耐共模干扰但它有一个物理前提信号从总线一端传到另一端中途不能有分叉。也就是说拓扑必须是手拉手daisy chain一条线不能是星形、树形也不能从中间引出长支线。二、星形到底坏在哪星形接线的本质是在某个点三根以上的线并接在一起形成 T 型或十字型分支。这带来两个问题。问题 1阻抗不连续 → 反射RS485 双绞线的特性阻抗通常是 120Ω。信号沿线传播时遇到阻抗突变分支点相当于并联了几段线阻抗下降一部分能量会反射回来与后面的信号叠加。反射的结果是波形上出现振铃、过冲、台阶。波特率低、线短的时候反射衰减完之前信号已经采样结束看不出问题。一旦波特率上去比如 115200、线变长、分支变长反射就会落在采样点上位就判错了。问题 2支线变成天线从主干分出去的那段线如果两端没接终端电阻它就是一个开路的短截线。这段线会拾取空间干扰把噪声灌回主干让总线电容增加边沿变缓在特定频率上谐振分支越长越糟。工程上的经验界限是支线长度 波特率对应的波长 / 10粗算下来 9600bps 时支线可以到十几米115200bps 时只允许几十厘米。所以高速下基本等于不允许支线。三、正确做法1. 手拉手串起来主机 ── 节点1 ── 节点2 ── 节点3 ── 末端 [120Ω] [120Ω]每个节点只有A 进 A 出、B 进 B 出中间不断开、不分支。2. 终端电阻只加两个只在物理最远的两端各加一个 120Ω中间节点不加。加错了会更糟每个节点都加 120Ωn 个节点并联后总线负载阻抗变成 120/n Ω驱动器根本推不动表现为接的设备越多越不通。有的模块自带可拨码的终端电阻接在中间位置的一定要拨到 OFF——这是现场最常见的错误之一。3. 屏蔽层单端接地屏蔽双绞线的屏蔽层只在一端接地通常在主站/控制柜侧。两端都接地会形成地环路环流在屏蔽层上跑反而把干扰耦合进信号线。如果现场两端地电位差大宁可加隔离器也不要两端接地。4. 必须分支时用中继/集线器真的遇到物理上没法串比如一栋楼每层一个分支正确做法是用RS485 集线器/中继器做星形展开——它内部是每口独立收发 再生整形不是简单并联。这样每一路都是独立的点对点段不违反拓扑规则。四、现场快速判断法怀疑拓扑问题时按这个顺序试断开所有节点只留主机 最近一台。通了 → 拓扑/负载问题不通 → 主机或参数问题。逐台加回每加一台测一次。在哪一台开始坏问题就在那一段或那个节点。量 A-B 之间的电阻断电测。两端各 120Ω 时正常读数约60Ω。读数明显偏离比如 30Ω、120Ω、∞终端电阻配置有问题。看波形有示波器的话。差分探头的波形应该是干净的方波出现台阶/振铃就是反射。五、几个容易忽略的细节A/B 标反不同厂家对 A/B 的定义不统一有的按电平有的按极性接反了不是完全不通而是通但全是错码。遇到能收到数据但 CRC 全错先试试对调 A/B。共地RS485 是差分理论上不需要共地但共模电压范围有限常见 -7V~12V。长距离、两端供电系统不同时地电位差可能超出这个范围。这时需要用带隔离的收发器三端隔离或者拉一根地线但会引入地环流要权衡线材必须是双绞线且 A/B 在同一对绞线上。用平行线或者把 A/B 分在不同绞对里差分效果直接失效——这是线是好的但就是不稳的常见原因。节点数标准 RS485 收发器驱动 32 个单位负载。超过要加中继或者用 1/8 负载的收发器可到 256 个。但节点越多总线电容越大实际能跑的距离和速率都要打折。距离 vs 速率100 kbps 以下可以跑 1200m速率上去距离就要降。115200bps 实际稳定距离通常在几百米量级具体取决于线材和现场干扰。六、一句话总结RS485 的可靠性不来自协议来自物理层的一致性一条线、两个终端电阻、一次接地、不分支。现场那些时好时坏的问题八成是在这四个字上出了偏差拓扑不对。