漫谈车辆诊断之DTC的状态位

搞车辆诊断测试的,离不开对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
20Snapshot Record 20
21Snapshot 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的含义及作用:

  • Bit 0 - testFailed: 当前请求的时候故障还在时置1,如果故障消失或执行了清除DTC指令(14 FF FF FF),则置0。

这里说的故障消失,不是说DTC消失的意思,不是DTC的所有状态位都为0,而是指不满足DTC产生的条件了,比如不能同时满足上面三个条件

  • Bit 1 - testFailedThisOperationCycle: 如果在当前操作周期中出现过故障,则置1,新的操作周期开始并且没有出现故障后置0

注意:如果当前操作周期发生过故障,执行了清除DTC指令(14 FF FF FF)也是无法把这个位置0 的

  • Bit 2 - pendingDTC: 如果在当前或上一个操作周期中出现过故障,则置1,如果在当前或上一个操作周期中故障不存在,则置0。

另外还有一种情况,就是当前周期发生故障的条件满足,发生了故障,然后断电,使故障的条件不满足,然后上电,这个时候pendingDTC位也是0

例如:当前周期电压小于8V,发生了故障,pendingDTC=1,然后给ECU断电,然后把电压调到8V以上再给ECU上电,这个时候pendingDTC=0

  • Bit 3 - confirmedDTC: 如果故障满足被确认的条件并存储到非易失性内存中,则置1,执行清除DTC指令后置0。
  • Bit 4 - testNotCompletedSinceLastClear: 如果自从上次清除DTC后还没有完成过针对该DTC的测试,则置1,完成测试后置0。
  • Bit 5 - testFailedSinceLastClear: 如果自从上次清除DTC后该DTC出过错,则置1,没有出过错则置0。
  • Bit 6 - testNotCompletedThisOperationCycle: 如果在当前操作周期中还没有完成过针对该DTC的测试,则置1,完成测试后置0。
  • Bit 7 - warningIndicatorRequested: 如果ECU请求激活警告指示,则置1,不请求或该DTC不支持警告指示则置0。

欠压故障例子

假设车辆的电压监控系统检测到电压低于正常范围(例如低于9V),这将触发欠压故障的DTC。以下是参数设置和状态位变化的详细说明:

  • confirmedDTCLimit: 10
  • agedDTCLimit: 255
  • Test Period (ms): 50
  • TestFailedLimit: 127
  • TestPassedLimit: -128
  • unconfirmedDTCLimit: 6
  • Step up: 127
  • Step down: 128
  • FDC10 Max value: 127
  • agingCounter: OCC2
  • TestFailedInhibit: Yes
  • Jump down: Yes

在每个50ms的测试周期中,如果电压低于阈值,故障检测计数器(Fault Detection Counter, FDC)会增加,直到达到TestFailedLimit(127),此时testFailed置1。如果电压恢复正常,FDC会减少,直到达到TestPassedLimit(-128),此时testFailed置0。

如果在一个操作周期内,FDC达到confirmedDTCLimit(10),则confirmedDTC置1,表示故障已被确认。如果故障持续不存在超过agedDTCLimit(255个操作周期),则该DTC将被老化,即不再被视为活跃故障。

如果在一个操作周期内,FDC达到unconfirmedDTCLimit(6),则pendingDTC置1,表示故障需要进一步观察。如果在接下来的两个操作周期中故障不存在,则pendingDTC置0。

TestFailedInhibitJump down是特定的制造商参数,它们可能会影响故障码的记录和清除。例如,如果TestFailedInhibit设置为Yes,那么在某些条件下可能不会记录故障,即使测试失败。如果Jump down设置为Yes,那么在故障消失时,FDC可能会更快地减少。

正在持续更新中....

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 车辆 did 是指车辆的唯一识别码,全称为“车辆识别号码”,包括了车辆厂家、车辆型号、车身特征等重要信息,是车辆身份的唯一标识。每个车辆都有一个唯一的 did,经过电子设备扫描后可以对车辆信息进行全面了解,比如车辆品牌、车系、车型、发动机参数等。 而 dtc 是指“故障码”,全称为“Diagnostic Trouble Code”,是指汽车电子控制系统检测到车辆发生故障后所生成的代号。DTC 是通过车辆上的故障诊断接口(OBD)读取的故障码,每个故障码代表着不同的故障。可以通过故障码查找故障出现的置和原因,并修复故障。在维修车辆时,技师可以通过 OBD 接口读取车辆的故障码,帮助诊断和解决车辆故障。 ### 回答2: 车辆DID(诊断识别码)是指车辆诊断信息。它是车辆诊断系统在进行故障诊断时生成的一个代码,用于识别车辆故障的类型、置和严重程度。 DTC(故障码)是指车辆诊断系统所记录的一组数字或字母,可以用来描述车辆的问题。当车辆出现故障时,诊断系统会在车辆的控制模块中记录DTC,并通过故障指示灯或者车辆诊断工具进行显示。 通过车辆的DID可以获得车辆的基本信息、故障码等诊断信息,而通过DTC则可以知道车辆的故障类型和置,从而对车辆进行相应的修理和维护。因此,DID和DTC对于保障车辆的安全和可靠性具有非常重要的作用。 ### 回答3: 车辆 DID和DTC都是汽车电子控制系统(ECU)中的重要概念。 DID指Data Identifier(数据标识符),是一种用于标识车辆系统或组件数据的名称或代码。每个汽车制造商都有自己的DID标识符。例如,在汽车制造商的诊断工具中,可以使用DID来获取车辆的基本信息,例如车速、发动机转速、冷却液温度等。简单来说,DID是用于诊断车辆及其电子控制系统的一个标识符。 DTC指Diagnostic Trouble Code(诊断故障码),是指存储在ECU中的一个代码,用于指示车辆系统或组件存在故障。当车辆系统或组件出现故障时,ECU会将相关故障码存储在其内存中,以提示车主或修理技师。通过读取故障码,故障维修人员可以更快速地确定故障原因,并进行修理。简单来说,DTC是用于帮助修复车辆诊断工具。 总之,DID和DTC是汽车电子控制系统中两个重要的概念,对于车辆的故障诊断和维修至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值