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底层模块移植开发)