CAN诊断学习
Posted shinedaisiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAN诊断学习相关的知识,希望对你有一定的参考价值。
汽车CAN总线有动力总成PCAN,底盘控制CCAN,整车控制BCAN,娱乐ECAN,诊断DCAN五种。
CAN诊断,即是对CAN网络中各节点,各CAN总线,网关的故障进行检查与修复。
统一诊断服务(UDS),即ISO-14229标准,是绝大多数汽车厂商使用的诊断服务。
10:诊断会话请求服务
一般的诊断请求的输入格式为:710 02 10 01
帧ID为710,帧数据长度为8,数据长度为02,数据内容为10 01,其中10代表诊断会话发起服务,01表示默认会话
必须先发起诊断会话,类似于先建立握手。
2E:写入配置请求服务
对某个ECU写入配置项数据,也就是重新标定
常用帧格式:710 07 2E C0 01 01 03 22 FF
数据长度07,C0 01是一个DID数据标识符,代表某ECU节点的多个参数,01 03 22 FF代表ECU里的多个参数应该设定的值
11: 网关复位刷新请求服务
一般如果用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上的诊断故障码(包括故障码相关的快照等.))
诊断回应
肯定回应:718 06 50 01 00 32 01 F4 00
在ISO-14229中规定,ECU的诊断响应ID=ECU诊断请求ID+0x008;响应服务的ID=请求服务的ID+0x40
否定服务:718 03 7F 10 22 00 00 00 00
其中7F为否定码 22表示为否定原因条件不符合
其他原因:11服务不支持,12子功能不支持,13报文长度错误,31请求超出范围
例子:
诊断读取故障码:
7E1 03 19 02 FF 00 00 00 00
回应:
7E9 07 59 02 FF C1 21 20 DB
读取故障码19服务有01,02,04,06,0A等子服务,在01子服务中,第四个数据字节代表需要读取哪种状态的DTC,其中FF表示读取所有Bit置1位的DTC
响应服务59中,C1 21 20为DTC的内容,分为高位字节C1,中位字节21,低位字节20,DB表示这个DTC的状态。
在高位字节的8Bit中,又分为三个编码集合,first编码集合:Bit7-Bit6;second:Bit5-Bit4;third:Bit3-Bit0
first编码集合有00动力系统P,01底盘系统C,10车身系统B,11网络系统U
分析DTC信息C1 21 20 DB:
分解为二进制:1100 0001 0010 0001 0010 0000 1101 1011
可知是网络出了问题,即通信故障,与ABS通信丢失。
DB表示的DTC状态可根据状态位描述得到:DTC出现错误,且在当前驾驶循环下被确认
Bit 0 Test Failed DTC最近的一次诊断结果为失败
Bit 1 Test Failed This Operation Cycle 在当前驾驶循环中处于故障状态
Bit 2 pending DTC 在当前或者前一个驾驶循环DTC处于故障状态
Bit 3 Confirmed DTC DTC已经被确认
Bit 4 Test Not Completed Since Last Clear 自上一次清除故障码后测试没有完成
Bit 5 Test Failed Since Last Clear 自上一次清除故障码后测试结果为失败
Bit 6 Test Not Completed This Operation Cycle 在当前驾驶循环中测试没有完成
Bit 7 Warning Indicator requested 与DTC相关的报警指示请求
以上是关于CAN诊断学习的主要内容,如果未能解决你的问题,请参考以下文章
详解UDS CAN诊断:什么是UDS(ISO 14229)诊断?
根据hex文件制作UDS统一诊断服务CAN多帧报文-python