目录
Bit 1 - testFailedThisOperationCycle:
Bit 4 - testNotCompletedSinceLastClear:
Bit 5 - testFailedSinceLastClear:
Bit 6 - testNotCompletedThisOperationCycle:
Bit 7 - warningIndicatorRequested:
搞车辆诊断测试的,离不开对DTC的状态位的测试
DTC的状态位是8个bit,每个bit代表不同的意思,每个bit置1或者置0都要满足一定的条件
初学者,很容易被这个搞得头很大
今天我们就来详细拆解一下,扫除你心中的疑惑
我们以欠压故障为例进行说明,假设欠压故障(DTC code为EE0468)发生的条件如下:
1. 车辆模式(CarModSts1)处于Normal(0)或者Dyno(5)
2. 当电源可用性不受限制时,即ElPowerLevel (有PwrLvlElecMai 和PwrLvlElecSubtyp组成)不等于1,也就是PwrLvlElecMai 不等于1
3. 供电电压小于8V
1.读DTC指令的含义:
1.1 指令19 02 XX (根据Mask读取DTC)
其中XX的取值可以是01~FF,是一个mask的作用,DTC的状态位Bit0~Bit7,任何一个Bit位设为1,也就是Yes, 表示当前系统里,如果存在这个Bit位为1,就会被读取出来
举个例子:
执行19 02 FF,所有DTC中,只要有一个Bit位为yes,都会被读取出来
执行19 02 10,所有DTC中,Bit 4 - testNotCompletedSinceLastClear位为yes的,都会被读取出来
如下图:
1.2 指令19 0A (读取所有支持的DTC)
这个指令会把当前系统,所有支持的DTC的状态都读出来,读出来的值是每个DTC此时此刻的状态,是实时的,如下图,有些DTC的状态位全是No,因为没有没有出现过;有些DTC 有些状态位Yes,是曾经出现过
1.3 指令19 03 (读取当前系统中快照记录)
先说一个DTC优先级的事情,DTC Event Priority 表示优先级,数字越小,存储优先级越高
比如DTC Event Priority=1比 DTC Event Priority=10 优先级高
如果显示 不足以显示所有的快照数据时,DTC Event Priority高的DTC会优先显示出来
0x21是首次检测到失败就存,也就是DTC的bit位testFailed=1的时候就存
0x20是confirmedDTC=1的时候才会存,如下图,confirmedDTC=1,只有两个,所以0x20 只有两条数据
另外0x20 和0x21 各个空间只能最多存储11条DTC的数据,如果同一个空间有超过11条数据,会只显示后面出现的DTC 快照数据
如下图,0x21 里面对于speaker#快照数据时从speaker#3开始的,speaker#1和speaker#2被丢弃了
怎么判断是否被丢弃了,可以通过19 04 9A 01 13 21读取,你会发现读不到,如下图
而你用19 04 9A 05 13 21读取,你会发现可以读到,如下图
下图显示的11个数据是记录在0x21里,2个confirmedDTC数据记录在0x20里面
1.4 指令19 04 (读取每个DTC详细的快照数据)
19 04+DTCcode+Snapshot Record No.
以欠压故障为例,DTCcode为EE 04 68
Snapshot Record No.,看每个车厂的定义,例如:
Snapshot Record No. | Number (hex) | Name |
20 | Snapshot Record 20 | |
21 | Snapshot Record 21 |
也可以通过19 03 读出来,看当前DTC支持哪个DTCSnapshotRecord Number
所以,要得到肯定反馈,指令可以是:19 04 EE 04 68 21
19 04 EE 04 68 20 不一定有数据,但一定可以得到肯定反馈
1.5 指令19 06 (读取DTC扩展数据记录)
看到这里,你可以会有疑问,19 06和19 04 读出来的数据有什么不一样呢,我们来详细比较一下:
1. 19 04(读取DTC快照数据):
- 功能:用于获取故障码(DTC)的快照数据,这些数据记录了在特定事件(例如故障发生)时的车辆状态,如电压、发动机转速、时间戳等。
- 应用场景:通常由诊断工程师和维修人员使用,以便在解决问题时了解故障的历史和实时信息
- 数据类型:主要是故障状态位和快照数据。
2. 19 06(读取DTC扩展数据记录):
- 功能:用于获取DTC扩展数据记录,这些数据存储了有关故障的更多信息,例如故障发生次数、老化次数、故障持续时间和故障后行驶里程。
- 应用场景:通常由开发人员、测试人员和系统工程师使用,以便在解决问题时提供额外的上下文信息
- 数据类型:包括DTC状态位、故障发生次数、老化次数等。
总之,19 04主要关注故障状态和快照数据,而19 06则提供更全面的故障信息,包括扩展数据记录
19 06 服务格式是:19 06 +DTC code+DTC Extended Data Record Number
19 06 具体支持哪些功能,要看客户定义,不支持的,无法得到肯定反馈,如下图CANoe 显示的功能很多,具体支持哪些,要看客户的定义
如上图,我们读取DTC D14C51的OCC2扩展数据记录的发送指令是19 06 D1 4C 51 02
2.操作循环(operation cycle )的理解
- 上下电作为一个操作循环
这里的上下电,不是指直接给ECU上电或者断电,而是指,:ECU上电后,正常发报文,到停发所有报文的情况下,ECU自动进入休眠模式,电流接近0为一个操作循环
- warm-up作为一个操作循环
注:warm-up是指发动机预热达到某个预设温度。warm-up循环一般是针对排放相关DTC所设定的循环周期。
在诊断自恢复过程中,往往我们会定义30个或255个操作循环作为自恢复的条件。原因是,在一个相对较长的过程中,如果车辆没有发生这个故障,我们可以认为这个故障是一个偶发的现象,也可以认为现在的车辆处于一个相对稳定的状态。因而,可以将这个故障码清除。
3.DTC每个状态bit的含义及作用:
欠压故障例子:
假设车辆的电压监控系统检测到电压低于正常范围(例如低于8V),这将触发欠压故障的DTC。以下是参数设置和状态位变化的详细说明:
- confirmedDTCLimit: 10
- agedDTCLimit: 255
- Test Period (ms): 100
- TestFailedLimit: 127
- TestPassedLimit: -128
- unconfirmedDTCLimit: 6
- Step up: 3
- Step down: 6
- FDC10 Max value: 127
- agingCounter: OCC2
- TestFailedInhibit: Yes
- Jump down: Yes
unconfirmedDTCLimit的意义
在这篇文章里讲得比较详细,主要是触发存储快照数据,在故障发生前,提前开始存储数据,以便进行故障分析,因为故障分析最有效的数据往往是故障发生前一段时间的数据,而不是故障已经发生的时候的数据