CAN总线老丢帧:终端电阻、波特率与错误帧排查
引言
调试现场只要出现CAN丢帧、时通时不通,第一反应往往是把波特率改一改试试,结果越改越乱。真正的丢帧九成不出在协议层,而藏在物理层:终端电阻没配对、拓扑太长太乱、收发器共模超范围、节点晶振偏差叠加超标。CAN的错误管理机制会把坏帧挡在门外,用户看到的丢帧,其实是错误帧在后台不断累积的结果。
要系统排查,得从电阻、速率、共模这三条线同时切入,而不是头痛医头。
原理拆解
CAN靠差分信号传输,H与L之间的电压差决定显性隐性。总线本质是一段传输线,若两端没有匹配到特性阻抗的终端电阻,信号到达末端会反射回来,叠加在原波形上让边沿振铃、眼图闭合,高速时最先撑不住。规范做法是总线两个物理端点各接一颗120欧,中间分支尽量短。
波特率决定每一位的时间长度,所有节点必须严格一致。即便名义波特率相同,各节点晶振有容差,位时间内累积偏差若超过采样点容许范围,就会采到错误电平。位填充机制进一步要求时钟精度,容差预算要在网络规划时算清。
共模电压指总线对地平均电平,收发器只在规定的共模窗口内正确判定差分值。长线缆、多节点、地电位差会把共模拉出窗口,表现为通信随工况时好时坏。
位时间里的采样点位置也影响容差预算:规范要求采样点落在位时间的固定比例处,采样点越靠后,留给时钟偏差和传播延迟的余量越小,长线缆时尤其明显。选收发器时不仅看共模范围,还要看它允许的位时序配置,把采样点、同步跳变宽度与网络长度一起纳入计算,而不是只对齐一个波特率数字。
关键参数表
表 1 CAN通信排查关键参数
参数 | 含义 | 典型要求 | 影响面 |
终端电阻 | 阻抗匹配防反射 | 两端各120欧 | 信号完整性 |
总线阻抗 | 双绞线特性阻抗 | 约120欧 | 反射与衰耗 |
波特率 | 通信速率 | 全网一致 | 采样同步 |
时钟容差 | 节点晶振偏差 | 合计满足位填充 | 误码率 |
共模电压范围 | 收发器允许 | 在规格内 | 电平判定 |
错误帧计数 | 错误管理状态 | 不持续增长 | 掉线风险 |
终端电阻、波特率容差与共模电压三者共同决定总线能否稳定收发:电阻不匹配造成反射,波特率偏差过大让节点采样错位,共模超出收发器范围则直接让位电平判错,这三项要连同拓扑一起核对。
现场调试
先用万用表在断电状态下量H与L之间的电阻:正常应接近60欧(两个120欧并联)。读到120欧说明只接了一端或一端没焊好,读到无穷大说明断线,读到更小则可能有多余匹配。这一刀能立刻揪出最常见的漏装终端电阻。
再上示波器看差分眼图与位电平:检查显性时差分幅值是否达标、边沿是否干净、有无明显振铃。振铃大基本指向阻抗不匹配或拓扑过长。同时量H与L对地的共模电平,看是否落在收发器允许范围内,超范围就查接地与屏蔽。
最后读错误计数器与帧统计:把各节点的发送错误计数、接收错误计数拉出来,定位到具体哪台设备在产生错误帧,往往问题就集中在那一台的接线或波特率配置上。
常见误区
误区一,到处补终端电阻。以为电阻越多越好,结果中间节点也各加一颗,等效阻抗被拉低、驱动负担加重,反而丢帧。终端只应出现在总线两个最外端。
误区二,靠降波特率掩盖问题。降到很低看似稳定了,其实是把反射和容差裕度换成了更慢的位时间,硬件隐患没解决,稍提速又复发。降速率可作为临时手段,根因仍要回到电阻与拓扑。
误区三,忽视共模与接地。只用差分思维忽略平均电平,长电缆两端地电位差把共模顶出窗口,导致通信随距离和工况漂移。必要时选允许更大共模范围或带隔离的收发器,并做好单点接地。
实战案例
现象:一条产线多台驱动器挂CAN,白天正常、夜班偶发丢帧和掉线,重插通信线又暂时恢复。
排查:断电测得H-L电阻约120欧,说明有一端终端电阻虚焊;查错误计数集中在离总线末端最近的一台设备;示波器看到该位置边沿振铃明显,且夜班环境温度低、接头接触电阻变化,共模裕度进一步吃紧。
整改:把两端终端电阻换成焊接可靠、阻值精确120欧的型号,收紧拓扑、剪掉多余的长分支,把末端接头做防氧化处理;核对全部节点波特率与时钟容差预算。
复测:连续夜班工况运行,错误计数不再增长,眼图干净,丢帧与掉线消失。
工程要点
先测电阻再谈软件:H-L静态电阻是定位终端与断线最快的抓手,60欧是健康值。
终端电阻只放在两个最外端,拓扑尽量星形改链形、缩短分支;把共模范围、地电位差与波特率容差作为网络规划一起算,而不是等通信不稳再补救。物理层质量与错误帧计数、收发器选型是同一链条上的耦合项。
延伸阅读
CAN丢帧的根子几乎都在物理层:终端电阻匹配、拓扑长度、共模电压和节点时钟容差共同决定眼图能否张开。与之耦合的还有屏蔽层接地方式与电源地噪声——这些和差分信号共用线缆,处理不好会互相拖累。艾思控电机驱动器有限公司在做总线组网时,坚持先量静态电阻、再看眼图、最后读错误计数,把三步顺序固化在调试表里。




