• 漫谈车辆诊断之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

    其中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的状态位全是No,因为没有没有出现过;有些DTC 有些状态位Yes,是曾经出现过

    1.3 指令19 03

    先说一个DTC优先级的事情,DTC Event Priority 表示优先级,数字越小,存储优先级越高

    比如DTC Event Priority=1比 DTC Event Priority=10 优先级高

    如果当前有大于11个DTC的快照数据,则会把 DTC Event Priority高的DTC显示出来,其他超过10个DTC相同的优先级,则随机显示出来10个

    例如,当前有扬声器open的12个DTC,
    但是19 03 只显示了10个,欠压的DTC刚刚出现过,这会没有了,但是优先级比较高,也会显示出来

    1.4 指令19 04 

    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 读出来,看支持哪个DTCSnapshotRecord Number

    所以,要得到肯定反馈,指令可以是:19 04 EE 04 68 21

    19 04 EE 04 68 20 不一定有数据,但一定可以得到肯定反馈

    1.DTC每个状态bit的含义及作用:

    • Bit 0 - testFailed: 当前测试发现故障时置1,如果故障消失或执行了清除DTC指令(14 FF FF FF),则置0。

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

    • Bit 1 - testFailedThisOperationCycle: 如果在当前操作周期中出现过故障,则置1,新的操作周期开始或执行了清除DTC指令(14 FF FF FF)后置0。

    从上电到下电为一个操作周期,当前操作周期就是从上电到现在;

    • Bit 2 - pendingDTC: 如果在当前或上一个操作周期中出现过故障,则置1,如果在接下来的两个操作周期中故障不存在,则置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可能会更快地减少。

  • 相关阅读:
    《云南省水网建设规划》:数字孪生水网建设列入主要建设任务
    CentOS 搭建本地 yum 源方式 安装 httpd 服务
    复习单片机:8*8点阵--->点亮第一个点(内含:1LED 点阵介绍+2 硬件设计+3 软件设计+4.原始代码+5 实验现象)
    珈创生物上市再次失败:先后折戟科创板、创业板,郑从义为董事长
    leetCode 376.摆动序列 贪心算法
    Sentinel技术学习与总结待续
    Maven仓库地址(寻找Maven依赖)
    Intellij IDEA--常用的配置
    用于生物分子修饰的Alkyne NHS ester,906564-59-8
    【首阳首板之主升三域洗盘域】洞察洗盘突破典型形态,心中不慌
  • 原文地址:https://blog.csdn.net/mengenqing/article/details/138213674