• 600查看
  • 0回复

[Autosar] AUTOSAR诊断栈分析(三):DTC状态位

[复制链接]


该用户从未签到

发表于 21-1-2024 09:59:50 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录
1.DTC状态位定义

2.DTC状态位迁移分析
2.1 testFailed2.2 testFailedThisOperationCycle2.3 pendingDTC 2.4 confirmedDTC  2.5 testNotCompletedSinceLastClear2.6 testFailedSinceLastClear  2.7 testNotCompletedThisOperationCycle2.8 warninglndicatorRequested
3.常见DTC 状态位一览

4.小结
1.DTC状态位定义

前面,我们详细描述了在AUTOSAR中Event的状态定义,实际上在AUTOSAR中DEM还支持ISO-14229-1 附录D中定义的UDS状态位,想必这个状态位,各位诊断工程师就非常熟悉了,该状态主要是用于定义DTC(Diagnostic Trouble Code )的状态,具体有如下8位:
bit
描述(缩写)
含义
0
testFailed(TF)置1表示最近一次测试故障
1
testFailedThisOperationCycle (TFTOC)置1表示当前操作循环上报过故障
2
pendingDTC (PDTC)置1表示当前或者上一完成的操作循环上报过故障
3confirmedDTC (CDTC)
置1表示故障已确认,存到NvM中
4
testNotCompletedSinceLastClear (TNCSLC)置1表示自上次清除后未完成测试
5testFailedSinceLastClear(TFSLC)
置1表示自上次清除后又上报过一次故障
6testNotCompletedThisOperationCycle(TNCTOC)
置1表示当前操作循环未完成测试
7
warningIndicatorRequested(WIR)
置1表示请求故障指示灯
值得一提的是,对于bit的使用,每家主机厂的定义都不太一样,有的会用到bit2、有的直接不使用,但是一般都是bit0和bit3配合使用,bit3作为历史故障,特别当bit0置1时,有些主机厂会直接将bit3置位,立即确认故障存储到NvM中。2.DTC状态位迁移分析

那么回过头来,在DEM中是如何通过设置Event状态来影响UDS DTC status各个bit置位情况?我们挨个来分析。2.1 testFailed

初始状态下,testFailed为“逻辑0”,开启测试后,分为如下情况:
1. 监视器设置Event状态为PASSED,testFailed = 0;    示例:Dem_SetEventStatus(eventID,PASSED)2. 监视器设置Event状态为FAILED,testFailed = 1;    示例:Dem_SetEventStatus(eventID,FAILED)3. testFailed = 1的情况下,监视器设置PASSED或调用清除诊断信息
具体状态迁移如下图描述:
AUTOSAR诊断栈分析(三):DTC状态位w1.jpg
值得注意是,该状态置1,DTC相关信息不一定会存到NvM里,还需要结合bit2、3;但是在AUTOSAR中勾选配置项 DemStatusBitStorageTestFailed,bit0的状态会被存到NvM。2.2 testFailedThisOperationCycle

这一比特就比较简单了,当前操作循环的测试失败,参考状态迁移如下:
AUTOSAR诊断栈分析(三):DTC状态位w2.jpg
与bit0区别在于,该bit是报告当前操作循环里存在过故障,有可能这时候bit0已经置0了,但bit1仍旧置1,表示从当前操作循环或者从上次清故障后已经发现了一次故障。 2.3 pendingDTC

pengdindDTC理解起来相对抽象,准确讲它是处于 testFailed和confirmedDTC的一种中间状态。如下图:
AUTOSAR诊断栈分析(三):DTC状态位w3.jpg
标准上解读,该bit的设置条件与TFTOC一样,清除条件区别在于TFTCO是操作循环开启后清0,PDTC是需要操作循环完成、至少上报过一次PASS且没有任何失败清0,此外调用故障清除也可以清0。可以这样理解,该bit用于检测到某个故障,但是还没有达到确认条件,因此出现了这么一种中间状态。但实际上开发中,遇到的基本都是粗暴地有testFailed就立即确认。2.4 confirmedDTC  

该状态位不管是开发还是售后应该都非常熟悉,该状态置位后DTC相关信息都会按指定顺序存到NvM中。既然是要存到NvM中,那么该bit置位的条件就比较严格,如下:

AUTOSAR诊断栈分析(三):DTC状态位w4.jpg
监视器调用 Dem_SetEventStatus(eventID,FAILED)且失败次数已经超过了确认阈值,该bit置1。需要提出的是,在AUTOSAR中有一个特定参数DemEventConfirmationThreshold,该使用case如下:
AUTOSAR诊断栈分析(三):DTC状态位w5.jpg
2.5 testNotCompletedSinceLastClear

该bit从字面意思可以很容易理解,即上次清除后还没有完成测试,因此其状态迁移也比较简单,如下:
AUTOSAR诊断栈分析(三):DTC状态位w6.jpg
初始化状态,该位置1,但只要上报过PASS或者FAIL,该位置0。 2.6 testFailedSinceLastClear  

通常该bit置1表示自上次清除后至少检测到一次故障。
AUTOSAR诊断栈分析(三):DTC状态位w7.jpg
从逻辑1到逻辑0的迁移有三种方式:内存溢出、老化、清DTC。该bit通常与bit4一起使用。2.7 testNotCompletedThisOperationCycle

与bit4很像,但是该bit用于指示当前操作循环测试未完成。
AUTOSAR诊断栈分析(三):DTC状态位w8.jpg
初始状态或者清除DTC之后,该bit均置1. 2.8 warninglndicatorRequested

该bit用于请求警告灯指示,在仪表上用的比较多,因此不是所有的DTC都会使用到该bit。该bit一般与bit3协同使用,当故障确认后,该bit也要置1。
AUTOSAR诊断栈分析(三):DTC状态位w9.jpg
3.常见DTC 状态位一览

序号状态值含义
10x00monitor在清除DTC和操作循环切换后只上报过passed。
                        这个状态是最常见的,是未监控到故障的稳定状态
20x50状态清除后未上报过,且本次操作循环也还未上报过状态
30x60状态清除后已经上报过错误,但本次操作循环还未上报过状态,同时,上次上报的错误由于优先级被替换。
                        这个状态常见于DTC的优先级不够且当前发生的DTC超过20个以后,被替换的情况。
40x2B监测到故障,并且故障正在发生且已经确认
50x2A当前操作循环发生过故障,但已经恢复正常这里出现confirmedDTC就是之前提到的,一上报就确认,与确认阈值配置有关
60x23当前监控到故障,故障正在发生,但未确认故障。
                        目前这种状态主要是由于当前在发生故障,但由于DTC优先级不够,未被记录造成。
70x22当前操作循环发生过故障,但已经恢复正常,故障未确认。
                        目前这种状态主要是由于当前操作循环发生过故障,但由于DTC优先级不够,未被记录造成的
4.小结

通过前三篇文章,我们对DEM和故障处理有了一个基础认识,但还远达不到做诊断栈开发的程度,还需要熟读标准,结合配置工具和代码进一步熟悉,如果有时间的话,手撸一遍DEM(实在不行就抄)会有新的理解。下一节我们继续聊DEM的去抖处理,这也是做诊断开发必备的知识。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 5-3-2025 01:05 , Processed in 0.502676 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.