2、物理层与链路层排查:CAN总线电平测量、终端电阻检测、CAN_H/CAN_L短路断路诊断

好,咱们进入第二章。这一章聊的是最基础、也最容易被忽视的东西——物理层和链路层。

你想想看,UDS跑在CAN上,CAN又跑在物理线路上。如果线路本身就有问题,你上层协议分析得再漂亮,也是白搭。我见过太多工程师,拿着CANalyzer抓了半天报文,最后发现是终端电阻掉了,或者CAN_H对地短路了。嗯,这种坑,我踩过不止一次。

2.1 CAN总线电平测量——别光看波形,要看数值

CAN总线是差分信号,靠CAN_H和CAN_L的电压差来传递数据。显性位(Dominant)时,CAN_H比CAN_L高约2V;隐性位(Recessive)时,两者电压接近,差约0V。

但实际测量时,你不能只看示波器上的漂亮方波。我个人的习惯是:先测静态电压

静态电压参考值(总线空闲时):

  • CAN_H:约2.5V ~ 3.5V(常见2.6V左右)
  • CAN_L:约1.5V ~ 2.5V(常见2.4V左右)
  • CAN_H - CAN_L:约0V(隐性)

如果CAN_H只有1.5V,CAN_L却有3.0V,那肯定有问题。我在项目现场遇到过一台车,CAN_H只有0.8V,查了半天,发现是某个节点的CAN收发器烧了,把总线电压拉死了。

测量工具建议:

  • 万用表:测静态电压,快速判断
  • 示波器:看波形质量,测边沿时间
  • CAN总线分析仪:带物理层诊断功能的最好

小技巧:用示波器时,把时基调到5μs/div,电压刻度1V/div。触发方式选CAN_H的下降沿。这样能一眼看出信号质量——边沿太缓,说明总线电容过大或驱动能力不足。

2.2 终端电阻检测——120Ω,少一个都不行

CAN总线两端各需要1个120Ω的终端电阻。为什么?为了阻抗匹配,防止信号反射。

我记得有一次,一个同事抱怨说他的ECU偶尔通信失败,但抓包又看不出规律。我让他去量一下总线电阻。他一量,只有60Ω。嗯,两个120Ω并联是60Ω,但问题是——他车上只有两个节点,按理说应该每个节点内部都有120Ω才对。结果发现,其中一个节点的终端电阻焊错了,焊了个0Ω跳线。

测量方法:

  1. 断开所有节点电源(注意:是断电,不是只关钥匙)
  2. 用万用表电阻档,测量CAN_H与CAN_L之间的电阻
  3. 正常值:约60Ω(两个120Ω并联)
  4. 如果只有120Ω:说明只有一个终端电阻
  5. 如果接近0Ω:说明短路了
  6. 如果无穷大:说明断路了

注意:测量电阻时,一定要确保总线没有供电。否则万用表可能烧掉,或者读数完全不准。我曾经就吃过这个亏,带电测电阻,结果表笔都冒烟了。

2.3 CAN_H/CAN_L短路与断路诊断

这是物理层排查的重头戏。短路和断路的表现不一样,排查思路也不同。

2.3.1 CAN_H对地短路

现象:CAN_H电压被拉到接近0V。总线无法通信,所有节点都发不出显性位。

排查:用万用表测CAN_H对地电阻。正常应该是无穷大。如果只有几欧姆,那就是对地短路了。

我遇到过最头疼的一次:CAN_H对地短路,但时好时坏。后来发现是线束在车门铰链处磨损,车门一关就短路,一开又好了。这种间歇性故障,最考验耐心。

2.3.2 CAN_L对电源短路

现象:CAN_L电压被拉到12V或5V(看系统供电)。总线同样瘫痪。

排查:测CAN_L对电源(比如VBAT)的电阻。正常应该是无穷大。

2.3.3 CAN_H与CAN_L短路

现象:两者电压几乎一样,差分信号消失。总线无法通信。

排查:测CAN_H与CAN_L之间的电阻。正常是60Ω左右(含终端电阻)。如果接近0Ω,那就是短路了。

2.3.4 CAN_H或CAN_L断路

现象:断路那一侧的节点收不到数据,但其他节点可能还能通信。

排查:用万用表通断档,从节点端逐段测量到总线端。找到断点。

快速诊断表:

故障类型 CAN_H电压 CAN_L电压 CAN_H-CAN_L电阻
正常(空闲) 2.5V左右 2.5V左右 60Ω
CAN_H对地短路 接近0V 2.5V左右 接近0Ω(对地)
CAN_L对电源短路 2.5V左右 接近电源电压 接近0Ω(对电源)
CAN_H与CAN_L短路 相同电压 相同电压 接近0Ω
CAN_H断路 悬空(不稳定) 2.5V左右 无穷大

2.4 实战排查流程

说了这么多理论,咱们来点实际的。假设你接到一个故障车,UDS通信完全建立不起来。你会怎么做?

我的流程是这样的:

  1. 先看灯——仪表盘有没有亮故障灯?有些车会直接报CAN总线故障。
  2. 量电压——万用表测CAN_H和CAN_L对地电压。这一步30秒搞定。
  3. 量电阻——断电后测CAN_H与CAN_L之间的电阻。看是不是60Ω左右。
  4. 分段排查——如果电阻不对,断开所有节点,一个一个接回去,看哪个节点把总线拉偏了。
  5. 看波形——用示波器看通信时的波形。注意边沿时间和幅值。

避坑指南:我曾经遇到一个案例,所有测量都正常,但就是通信失败。最后发现是CAN收发器的共模电压范围不够。有些便宜芯片,共模电压只能到±12V,但车上干扰大,瞬间电压能冲到-15V。嗯,这种问题,万用表是测不出来的,得上示波器看瞬态。

2.5 小结

物理层和链路层的排查,说白了就是三件事:测电压、测电阻、看波形。别嫌基础,很多疑难杂症都出在这里。

我个人建议,每个诊断工程师的包里,除了CAN卡和软件,一定要常备一个万用表和一个小示波器。关键时刻,它们比任何高级工具都管用。

下一章,咱们聊聊传输层和网络层的排查。到时候会涉及到CAN ID过滤、流控制帧这些内容。准备好了吗?