2. CAN总线物理层故障:终端电阻测量、信号电平分析、线束短路/断路诊断

大家好,欢迎来到咱们的第二节课。

上一章我们聊了CAN总线的基础架构,说白了就是让各个ECU能正常“说话”的规则。但规则再好,路坏了也白搭。物理层故障,就是那条“路”出了问题。我这些年处理过的故障,十有七八都跟物理层有关。今天咱们就把它彻底讲透。

2.1 终端电阻:CAN总线的“定海神针”

先问大家一个问题:为什么CAN总线两端要各接一个120欧姆的电阻?

嗯,这可不是随便选的。CAN总线是差分信号传输,信号在线上跑,到了末端如果不吸收掉,就会反射回来,把原始信号冲得乱七八糟。终端电阻就是干这个的——吸收信号能量,防止反射。

标准CAN总线要求两端各一个120Ω电阻,并联后总阻值60Ω。这个60Ω,是我判断总线是否正常的第一道关卡。

关键点:测量CAN_H与CAN_L之间的电阻,正常值应为60Ω(总线断电状态下测量)。

2.1.1 怎么测?用万用表还是CANalyzer?

我个人习惯,上车第一件事就是拿万用表。断电,拔掉所有ECU的电源,直接在总线最远端(比如OBD接口的6号和14号针脚)测CAN_H和CAN_L之间的电阻。

  • 60Ω左右:恭喜,终端电阻基本正常。
  • 120Ω左右:只有一个终端电阻在工作。另一个要么断了,要么没接。我在项目中遇到过好几次,都是维修工换ECU时忘了把终端电阻跳线帽插回去。
  • 接近0Ω:短路了。CAN_H和CAN_L直接怼在一起了。
  • 无穷大:断路。总线断了,或者两个终端电阻都挂了。

小技巧:用CANalyzer的CAN Stress工具,可以主动发送测试报文,同时监控总线电平变化。如果终端电阻异常,你会看到信号波形有明显的过冲或振铃。

2.2 信号电平分析:看懂“1”和“0”背后的故事

CAN总线上的信号,不是简单的5V和0V。它用的是差分电压。CAN_H和CAN_L的电压差,决定了总线是显性(Dominant,逻辑0)还是隐性(Recessive,逻辑1)。

状态 CAN_H电压 CAN_L电压 差分电压
隐性(逻辑1) 2.5V 2.5V 0V
显性(逻辑0) 3.5V 1.5V 2V

你想想看,如果CAN_H对地短路了,会怎样?

CAN_H被拉到0V,CAN_L还是2.5V。差分电压变成-2.5V,总线永远处于隐性状态。所有节点都发不出数据,整个网络直接瘫痪。我处理过一个案例,就是线束被座椅支架磨破了皮,CAN_H搭铁了。查了整整两天才找到。

2.2.1 用CANalyzer抓波形

CANalyzer的Measurement Setup里,可以添加一个CAN Scope。把探头夹在CAN_H和CAN_L上,就能看到实时的波形。

正常波形长什么样?

  • 隐性时,两条线重合在2.5V。
  • 显性时,CAN_H跳到3.5V,CAN_L降到1.5V。
  • 波形边缘陡峭,没有毛刺。

如果看到波形圆滚滚的,上升沿很慢,那说明总线电容太大了——可能是线束太长,或者节点太多。我曾经在一条加了6个节点的总线上看到过这种波形,最后不得不加了一个CAN中继器。

注意:千万别在总线带电时插拔CAN Scope的探头!我吃过这个亏,瞬间的浪涌把示波器的一个通道烧了。先断电,再接探头。

2.3 线束短路/断路诊断:从现象到根因

线束故障,说白了就三种:短路、断路、接触不良。但表现千奇百怪。

2.3.1 短路故障

短路分三种:CAN_H对电源、CAN_H对地、CAN_L对电源、CAN_L对地,还有CAN_H和CAN_L互短。

怎么快速定位?

  1. 测电压:用万用表测CAN_H和CAN_L对地电压。正常都是2.5V左右。如果CAN_H是12V,那肯定是对电源短路了。
  2. 分段排查:把总线从中间断开,测两段的电阻。哪段短路,就锁定哪段。
  3. CANalyzer辅助:用CANoe的Network Scan功能,看哪些节点还能通信。短路的节点通常完全沉默。

实战案例:有一次,一辆车报“发动机与变速箱通信丢失”。我测CAN_H电压,发现只有1.2V。顺着线束找,发现发动机舱里一根线被老鼠咬破了,CAN_H和地线搭在一起了。处理完,故障消失。

2.3.2 断路故障

断路比短路好查,因为现象很典型:断点之后的节点全部离线。

我的排查步骤:

  • 先看终端电阻。如果测到120Ω,说明有一端断了。
  • 用CANalyzer的Trace窗口,看哪些节点还在发报文。断点之后的节点,一个报文都收不到。
  • 用示波器在断点前后测波形。断点前波形正常,断点后只有直流电平。

2.3.3 接触不良

这个最烦人。时好时坏,跑起来就报错,停下来就好。

我曾经遇到一个案例:一辆大巴,跑高速时偶尔报“ABS通信故障”。查了三天,最后发现是OBD接口里一个针脚松了。颠簸时接触不良,总线瞬间断开。

对付这种故障,我的办法是:

  1. 用CANalyzer的Logging功能,长时间记录总线数据。
  2. 故障发生时,看Error Frame出现的位置和时间。
  3. 配合振动测试,轻轻敲打线束,看故障会不会复现。

避坑指南:我曾经用万用表量着电阻正常,但一上车就报错。后来发现是端子氧化了,接触电阻时大时小。所以,别太相信静态测量,动态测试才是王道。

2.4 总结一下

物理层故障,说白了就是“路”的问题。终端电阻是总线的“健康指标”,信号电平是“心电图”,线束诊断是“外科手术”。

我的建议是:

  • 先测电阻,60Ω是金标准。
  • 再看波形,正常波形干净利落。
  • 最后分段排查,别一根线从头查到尾。

下一章,咱们聊数据链路层的故障——那些让人头疼的Error Frame和Bus Off。到时候见。