can诊断

Posted litao201403

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了can诊断相关的知识,希望对你有一定的参考价值。

某ECU节点故障: 也就是你的车上的某个智能硬件不work或者不好用, 比如空调这个设备无法调节温度了.

某条CAN总线故障:比如Body CAN整条CAN总线都不work了, 那整条CAN总线上的智能硬件(ECU节点)会功能不好用,
比如语音控制打开天窗, 没效果了, 必须要手动用硬件打开天窗

CAN网关除故障了到处都发出报警提示音,因为很多ECU节点都丢失了

1、什么是ECU自检呢?

每个ECU都有自己故障检测功能 基本上每个ECU都有一块EEPROM(可读性可编程存储器),可存储以上
故障信息一般会传至网关的EEPROM,并以诊断故障码的形式存储


2、什么又是CAN诊断呢?

顾名思义即对CAN网络各个节点,各CAN总线,网关的故障查验与修复

查验包括:诊断故障码查询

修复包括:重新对ECU写入新的配置值

诊断请求(发起)服务_Request

710 02 10 01 00 00 00 00 00

帧id :710
数据长度:2位(2字节)
数据:10 01 10:诊断会话发起服务 01:默认会话

常用的诊断请求(发起)服务列表:

10: 诊断会话请求服务

必须先发起诊断会话, 不然无法进行其他诊断服务发起服务.

 也就是说只要诊断, 必须先用10服务, 发起诊断会话session,

 类似于先建立握手,

常用如:710 02 10 01 (10代表诊断会话发起服务, 01代表默认会话功能)

2E: 写入配置请求服务 --对某个ECU写入配置项数据,就是重新标定

简单点说: 对某个ECU写入配置项数据, 就是常听说的重新标定.

常用如:710 07 2E C0 01 01 03 22 FF (C0 01是一个DID数据标识符, 代表某ECU节点的多个参数, 01 03 22 FF代表ECU里的以上多个参数应该设定的值), 

11: 网关复位刷新请求服务 --写入ECU配置值后,必须对网关刷新复位,不然这个值可能不会立马生效

一般如果用2E写入ECU配置值值后, 必须对网关刷新复位, 不然这个值可能不会立马生效.

常用如: 710 02 11 01 (代表向所有的ECU发起硬复位请求)

27: 安全访问认证请求服务 --

一般如果需要涉及2E写入ECU配置项等服务时, 必须通过网关的安全认证, 不然无权限修改, 你可以理解成, 没成功申请到27安全访问的话, 你的CAN网络权限是只读的, 不可写.

常用如:710 02 27 03 (代表向网关发起安全认证的请求)

22: 读取配置请求服务

简单点说: 读取某个ECU配置项信息

 常用如:710 03 22 C0 01 (代表读取C0 01 这个数据标识符里的多项参数值)

 

19: 读取故障码请求服务

 

读取正常CAN网络的故障信息, 一般有ECU节点丢失(比如ECU节点松动脱落或者烧坏了等), 电压过高过低, CAN总线异常(即Bus Off)等...这些故障会记录在一串超长故障码(DTC)列表里.

 

常用如:710 03 19 02 0C (代表读取整个CAN网络的当前已生效的故障码)

 

14: 清除故障码请求服务

清除所有ECU的诊断故障码, 包括故障码相关的快照等,

 如果CAN网络有故障, 其会源源不断的反馈以上故障, 

即使清除后也会立马再发出. 

常用如:710 04 14 FF FF FF (代表清除所有ECU上的诊断故障码(包括故障码相关的快照等.))


诊断回应_Responding

 

任何一轮诊断输入后, 都会有诊断回应帧, 一般是帧ID是:718

但是分为肯定回应及否定回应.


肯定回应即您刚才输入的诊断命令,目标对方(网关或某节点)已经收到并做了处理返回.
比如以下是: 10 诊断会话服务发起后, 收到的肯定回应,

718 06 50 01 00 32 01 F4 00
718:帧id
50:10+40 10:诊断会话发起服务 40;肯定回应偏移量
01:默认会话

否定回应即您刚刚输入的诊断命令, 目标对方(网关或某节点)因为某些原因,未成功收到或者未做处理就被打回了,
可以理解成吃了闭门羹.

例如回应:718 03 7f 10 22 00 00 00 00

看到7f否定回应码就知道吃闭门羹了, 所有吃闭门羹的都是7f否定回应码

718:帧id
03:数据长度3字节
7f:否定回应码
10:诊断会话服务
22:条件不符合
00 00 00 00:是自动填充以凑够8字节

以上的吃闭门羹的原因是: 22条件不符合.

其实还有很多其他的原因会导致吃闭门羹, 常用的有:

11 服务不支持

12 子功能不支持

13 报文长度错误

31 请求超出范围.....




















以上是关于can诊断的主要内容,如果未能解决你的问题,请参考以下文章

根据hex文件制作UDS统一诊断服务CAN多帧报文-python

基于CAN总线的汽车诊断协议UDS(ECU底层模块移植开发)

UDS诊断网络层ISO15765-2(CAN)

can诊断

详解UDS CAN诊断:DiagnosticSessionControl Service(SID:0X10)

详解UDS CAN诊断:DiagnosticSessionControl Service(SID:0X10)