Can诊断是干什么的

141 阅读5分钟

一、首先,我们打个比方:把汽车比作人体

  1. CAN通讯(Controller Area Network) :就像是汽车的神经系统

    • 功能:负责在汽车的各个电子控制单元(ECU,可以理解为器官或大脑,如发动机ECU、变速箱ECU、ABS防抱死系统ECU、车身稳定系统ECU等)之间实时、可靠地传递信息和数据
    • 例子:当你踩下油门时,油门踏板传感器(感觉神经)发出信号,通过CAN总线告诉发动机ECU(大脑)“驾驶员想加速!”,发动机ECU再通过CAN总线协调变速箱ECU等,最终完成加速动作。这个过程是正常的通讯,保证车辆正常运行。
  2. CAN诊断(Diagnostics) :就像是汽车的体检医生和故障排查系统

    • 功能:当车辆的某个ECU(“器官”)感觉不舒服或出现故障时,诊断系统负责检查、发现问题、记录问题,并告诉维修人员“哪里病了”、“病的怎么样”
    • 例子:发动机的某个传感器突然失灵了。发动机ECU会检测到这个异常,并通过CAN诊断系统记录一个故障代码(DTC) ,同时可能点亮仪表盘上的发动机故障灯(Check Engine Light),提醒驾驶员“我生病了”。维修人员之后可以用专业的诊断仪读取这个代码,精准定位问题。

二、CAN诊断具体是干什么的?(核心功能)

CAN诊断不仅仅是在出问题时亮个灯那么简单,它有一套完整的体系,主要实现以下功能:

  1. 读取和清除故障码(DTC)

    • 读取:维修人员使用诊断仪(比如4S店那个连着电脑的大盒子)通过CAN总线向各个ECU询问:“你们有没有存储故障码?” ECU会回答:“有,我存了一个P0300 - 发动机多缸失火的代码。”
    • 清除:在维修完成后,维修人员可以通过诊断仪发送指令,清除ECU中存储的历史故障码。
  2. 读取实时数据(Live Data)

    • 诊断仪可以请求ECU上报其当前的运行参数。就像医生可以实时监测你的心率和血压一样。
    • 例子:可以实时读取发动机转速、水温、车速、节气门开度、氧传感器电压等上百项数据。这对于排查间歇性故障至关重要,因为故障可能只在特定条件下出现。
  3. 执行器测试(Actuator Test)

    • 维修人员可以通过诊断仪主动控制某个执行器动作,而不依赖于正常的车辆运行逻辑。
    • 例子:可以单独让某个喷油嘴喷油、让某个继电器吸合、或者让风扇转动。这用于判断是这个执行器本身坏了,还是控制它的线路或ECU出了问题。
  4. 编程与编码(Coding/Programming)

    • 编码:对ECU进行个性化设置。例如,通过诊断功能告诉BCM(车身控制模块)“这辆车是豪华版,请开启座椅加热功能”或者“这辆车配备的是17英寸的轮胎,请据此调整ESP系统的参数”。
    • 编程/刷写:为ECU安装或更新软件(固件)。就像给手机升级系统一样,用于修复软件bug、提升性能或增加新功能。现在很多“OTA空中升级”其底层也是通过安全的诊断协议来实现的。
  5. 安全访问(Security Access)

    • 对于像编程、清除故障码等一些关键或可能影响安全的操作,ECU不会轻易执行。诊断仪必须先发送一个“密码”(安全密钥)来获得权限,防止被恶意篡改。

三、它是如何工作的?(协议层面)

CAN总线本身只定义了物理层和数据链路层(就像只规定了“用电压差表示0和1”、“怎么把数据打包成帧”、“怎么仲裁谁先发言”),但它并没有规定数据帧里的具体数据字节代表什么含义

因此,为了实现上述复杂的诊断功能,行业制定了一套更高层的、统一的“语言”或“礼仪”,这就是诊断协议

目前最主流、最重要的诊断协议是:UDS(Unified Diagnostic Services - 统一诊断服务)

  • UDS是什么:它是一套标准化的服务,为诊断提供了一个通用框架。它规定了请求和响应的格式。

  • 工作原理

    • 请求:诊断仪会向目标ECU发送一个符合UDS格式的请求报文。这个报文中会包含一个服务ID(SID) ,用来指明你想干什么(比如0x22 代表“读数据”, 0x2E 代表“写数据”, 0x19 代表“读故障码”)。

    • 响应:目标ECU收到后,会解析这个请求,并回复一个响应报文。响应中会包含一个响应ID(通常是SID + 0x40)  和具体的数据或执行结果。

    • 例子:诊断仪想读取发动机水温。

      • 诊断仪发送:[02 10 03 00 00 00 00 00] (大意:使用0x22(读数据)服务,读取编号为0x1003的数据(水温))
      • 发动机ECU回复:[04 62 10 03 2D 00 00 00] (大意:正响应0x62(0x22+0x40),数据标识0x1003,水温数据是0x2D(即45摄氏度))

总结

  • CAN通讯:是基础,是高速公路,负责车辆正常运行时ECU之间的日常数据交换,保证车辆能动、能跑、能停

  • CAN诊断:是建立在CAN通讯之上的高级应用,是专业的医疗团队。它利用CAN这条“高速公路”来传递诊断命令和数据,实现:

    • 故障发现与记录(发现问题)
    • 故障排查与定位(定位问题)
    • 车辆状态监控(实时体检)
    • 软件维护与配置(升级/设置)
    • 安全保障(防止误操作)

没有CAN通讯,现代汽车的基本功能就无法实现;而没有CAN诊断,汽车的维修、保养和软件更新将变得极其低效和困难,几乎无法进行。两者结合,共同构成了现代汽车电子系统的“神经网络”和“健康管理系统”。