UDS诊断-19服务&14服务

1. DTC的一些基础知识

1.1常用几种功能的数据格式

子服务02:根据statusMask读取DTC
req:19 02 01 (02:reportDTCByStatusMask 01:StatusMask,当前DTC)
res:59 02 FF (02:reportDTCByStatusMask FF:DTCStatusAvailabilityMask)
req:19 02 AF (AF: 当前DTC+历史DTC)
res:59 02 FF D0 14 99 28 (D01499:DTC number 28:status,历史DTC)
子服务04:读取DTC的快照信息
req: 19 04 D0 14 99 FF
res: 59 04 D0 14 99 28 01 0B D000 20 F5 D001 18 D003…(01:DTCSnapshotRecordNumber 0B:DID的数量;D000:后面具体的DID)
子服务06:读取DTC的扩展信息
req: 19 06 D0 14 99 FF
res: 59 06 D0 14 99 28 01 06 03 06 04 00 10 80 (01:OCC1;03:OCC3;04:OCC4;10:FDC10)
清DTC:
req: 14 FF FF FF (All Groups)
res: 54

1.2 名词解释

Operation Cycle 操作循环:操作循环定义的是故障监控开始和结束的一个周期。不同的控制器的操作循环定义略有差异,以主机厂定义为准。常见的定义有:1. ECU上电下电为一个循环;2. 电源管理模式切换为一个循环(如OFF和ACC状态跳变)3:发动机点火和熄火,也称一个点火周期或一个驾驶循环。4.高压激活和不激活,即电车的Ready 和 非Ready状态。
Pending状态位的解释:pending 状态位指示的是当前操作循环或者上一次操作循环检测到有TestFailed结果。只有上一个循环没有检测到故障即TestFailed 为0,pending 的状态才会被置0.如果说一个DTC是当前DTC,bit0=1 bit2=1;如果这个DTC是上一个操作循环产生的,当前循环没有,则bit0=0 bit2=1;如果这个故障是上上个操作循环产生的,近两个操作循环都没有,则bit0=0 bit2=0, 即此时的状态位应为0x28.
Confirmation Threshold故障确认的阈值: 一般非排放类DTC,这个值为1,即bit0的testFaild触发了一次即为confirmed DTC,也就是bit3会同步置位。排放类的DTC,会有一个trip counter 去记录testFaild 的次数,只有达到一定次数才会记为confirmed DTC(bit3置位)。
Aging Threshold 老化阈值: 这个实际上是给bit3 confirmed DTC 从1重置为0设置的一个条件。即定义了在多少个驾驶循环内没发生过故障,bit3 从1置为0,即认为故障消除。
Test Run Critieria(TRC):定义的是可以开始DTC监控的条件。例如定义名确的电源模式,车辆模式,电压状态,没有bus off 。即明确在什么条件下才能开始Test Sample, 方式条件不满足导致的一些误报。
Fault Detection Criteria故障判断标准:名确定义一个test Sample的结果是fail还是pass的标准。

2.先说说DTC状态位

关于DTC中的7个状态位,重点是要把ISO-14229-1 规范中的下面几张图理解透彻。
在这里插入图片描述

现按示例做如下假设(下面的标准都是可以自己定义的),ECU上电后,该DTC满足了TRC(Test Run Criteria),按如图示例每50ms做一次故障检测,如果本次检查通过则Fault Detection Counter(后简称FDC) -15,如果本次检测到了故障则Fualt Detection Counter在非负数的基础上 +25,如果当前Counter值为负数,要先清0后再累加。
如图所示,前3次检测结果都为pass,FDC在刚上电的0初始值的基础上递减,此时FDC值为-45。第4次检测失败,此时FDC的值跳变为+25.再接下来的检测中都没有检测到故障,FDC会在+25的基础上以-15的步长递减,只到减到-128;同样的,如果后续每次都会检测到故障,FDC的值会逐渐累加,直到加到最大值127.此时算是完成了第一轮的Fault Detection。
也就是说在Fault Detection Counter 第一次达到-128 或 +127时才算是完成了第一轮的Fault Detection,也就是在此时Bit 0 才会记录一次结果。与此同时,由于刚上电时bit4 和 bit6 是等于1的,完成第一轮检测后,bit4和bit6也会变为0.举例说明
1.上一个循环无故障情况下,理论上DTC刚上电时的状态位:0 1 0 1 0 0 0 0 = 0x50
2.第一轮检测后无故障:状态位信息为0,此时应无DTC
3.上一个循环无故障情况下,第一轮检测有故障:0 0 1 0 1 1 1 1 = 0x2F
7.当前循环(第一)内FDC再次变为-128:0 0 1 0 1 1 1 0 = 0x2E
9.下一个循环(第二)完成第一轮检测结果为pass后: 0 0 1 0 1 1 0 0 = 0x2C
10. 假设再下一个循环(第三)完成第一轮检测结果为pass后:0 0 1 0 1 0 0 0 = 0x28
在这里插入图片描述
再看几个规范上的示例加深一下理解。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 再谈谈DTC老化计数

DTCAgingCounter 简单来讲就是截止你查询这个信息的时间点之前,有几个点火周期是没有发生故障的。为了便于分析问题,点火周期的记录策略稍有不同。在这里插入图片描述
举例如下:
每一个DTC都支持06子服务查询扩展信息。扩展信息中包含两种重要信息,操作循环计数器Operation cycle counters(OCC) 和 故障检测计数器(FDC)。每一个OCC或者FDC都会有一个记录号Record Number,具体的理解如下:
OCC1:主要记录最近一次发生testFailed 到目前为止有几个操作循环是没有检测到故障的。(包含那些未完成故障测试的操作循环)
OCC2:主要记录最近一次发生testFailed 到目前为止有几个操作循环是没有检测到故障的。
OCC3:主要记录最早一次记录DTC后经过的操作循环数。(包含那些未完成故障测试额操作循环)
OCC4:主要记录最早一次记录DTC后到目前为止有几个操作循环检测到了故障。
图片来源于CSDN作者汽车小T

  • 33
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值