DTC故障中Debounce策略

admin 2024年3月8日11:00:10评论6 views字数 3681阅读12分16秒阅读模式

1.Dem 中为什么用到 debounce

故障诊断通常由诊断事件管理Dem模块和SW-C共同完成,即先由SWC中的Monitor Function对故障条件实时监控,并不断将故障条件的判定结果上报给Dem模块,而在Dem为了防止所有的故障误报,在其处理过程中增加一个Debouncing(去抖动)环节,也就是采用Debounce算法来确定事件的最终状态,即确认事件是PASSED、是FAILED,还是 No Result,除此之外还包括PREFAILED和PREPASSED。Dem模块中提供2种Debounce算法,基于计数器的Debounce算法是通过计数器计数来完成对事件的确认;基于时间的Debounce算法则通过计时来完成对事件的确认。 

2. SWC 与 Dem 的故障诊断关系

故障诊断是由Dem模块和SWC共同完成的,SWC中的Monitor Function对故障条件进行实时监控,并实时将故障条件的判定结果反馈至Dem模块判断是否发生故障,因为故障诊断由SWC与Dem模块共同完成的,所以debounce策略即可在SWC中实现,也可在Dem模块中实现

DTC故障中Debounce策略

3. Dem 中实现的 debounce 策略

Dem中实现debounce策略有三种,如下图7.30所示

DTC故障中Debounce策略

3.1 基于计数器的Debounce策略

针对该算法,Dem模块为每一个事件提供一个Debounce计数器(范围为-128到127)用来记录判断的结果。

当一个事件上报一次PREFAILED状态,那么计数器(Fault Detection Counter)会按步长增加1,当达到设定的Failed限值时,故障状态就变成Failed。如下图t1时刻。

当一个事件上报一次PREPASSED状态,那么计数器按步长减少1,当达到设定的Passed限值时,故障状态就变成Passed,如下图t2时刻。

注释:Failed限值根据需求来定义,例如有的是3个event条件就会触发DTC的Failed状态。

DTC故障中Debounce策略

FDC(fault detection counter):错误计数器,其范围为-128~127;

DemDebounceCounterFailedThreshold:故障从prefailed状态跳转至failed的限值;

DemDebounceCounterPassedThreshold:故障从prepassed状态跳转至passed状态的限值;

DemDebounceCounterIncrementStepSize:当DiagnosticMonitor上报Prefailed,错误计数器的增加量;

DemDebounceCounterDecrementStepSize:当DiagnosticMonitor上报Prepassed,错误计数器减少量;

DemDebounceCounterJumpDown:是否使能JumpDown功能。JumpDown功能是指当上一次Diagnostic Monitor上报的状态是prefailed,而当前上报的是prepassed,且当前计数器的值大于DemDebounceCounterJumpDownValue,错误计数器的值会重置为DemDebounceCounterJumpDownValue。如果JumpDown功能禁止,计数器按步长减少;

DemDebounceCounterJumpDownValue:当JumpDown功能使能,该变量定义了计数器的重置值;

DemDebounceCounterJumpUp:是否使能JumpUp功能。JumpUp功能是指当上一次Diagnostic Monitor上报的状态是prepassed,而这次上报的是prefailed,且当前计数器的值小于DemDebounceCounterJumpUpValue,错误计数器的值会重置为DemDebounceCounterJumpUpValue。如果JumpUp功能禁止,计数器按步长增加;

DemDebounceCounterJumpUpValue:当JumpUp功能使能,该变量定义了计数器的重置值;

DTC故障中Debounce策略

注释:根据【AUTOSAR_SWS_DiagnosticEventManager】文档中说明,Dem 模块应通过 DemDebounceAlgorithmClass 来支持去抖算法的特定事件的配置。如图所示,所属的模块位置。

DTC故障中Debounce策略

3.2 基于时间的Debounce策略

针对该算法,Dem模块为每一个事件提供一个Debounce计时器(范围同样为-128到127)用来记录判断的结果。

当一个事件上报一次PREFAILED状态,那么计时器(Fault Detection Counter)开始计时,在一段时间t failed,如果都没有出现PREPASSED或PASSED状态,那么到达t failed时,故障状态就变成Failed,如下图t1时刻;在t failed内,如果出现FAILED状态,那么故障状态就直接变成Failed,如下图t4时刻。

当一个事件上报一次PREPASSED状态,那么计时器(Fault Detection Counter)开始计时在一段时间t passed内,如果都没有出现PREFAILED或FAILED状态,那么到达t passed时,故障状态就变成Passed,如下图t2时刻;在t passed内,如果出现PASSED状态,那么故障状态就直接变成Passed,如下图t3时刻。

DTC故障中Debounce策略

对于基于时间debounce的策略主要配置以下几个参数:

DebounceTimeBasedTaskTime:该变量定义基本的检测周期;

DemDebounceTimeFailedThreshold:定义故障状态从prefailed跳转至failed需要多少个DebounceTimeBasedTaskTime周期;

DemDebounceTimeFailedThreshold:定义故障状态从prepassed跳转至passed需要多少个DebounceTimeBasedTaskTime周期;

3.3 基于SWC中Debounce策略

在SWC中,可以通过手写代码来实现上面两个的逻辑,比如说DTC判断的需求是每10ms判断一次,如果三次判断都是Failed,则DTC set Failed,否则是 PASSED。

现在,我创建了一个Task,这个Task每10ms就会执行一次,我可以将DTC的判断条件放在这个Task里,如果判断(Failed)条件成立三次,就会set Failed状态。否则 PASSED。

4. Debounce 对UDS DTC状态的影响

通过 <ISO 14229> UDS服务中的 0x19服务,可以读取到此时DTC的状态,

依据AutoSAR描述,当event report的EventStatuse为passed或者failed或者bounce counter到达debounce counter的阈值时UDS Status的bit0(TestFailed),bit1(TestFailedThisOperationCycle)和 bit6(TestNotCompletedThisOperationCycle)会发生变化.

根据ISO14229-1_2013规定,bit4(testNotCompletedSinceLastClear)由“1”变为“0”的条件是“DTC测试的结果为passed或者failed。

bit5(testFailedSinceLastClear)由“1”变为“0”的条件是“从上一次诊断信息被清除之后的DTC测试结果为failed”。

DTC故障中Debounce策略

注意:具体可参考《AUTOSAR_SWS_DiagnosticEventManager》中第 7.7 章 <Event memory description>

bit0

DTC故障中Debounce策略

bit1

DTC故障中Debounce策略

bit2

DTC故障中Debounce策略

bit3

DTC故障中Debounce策略

bit4

DTC故障中Debounce策略

bit5

DTC故障中Debounce策略

bit6

DTC故障中Debounce策略

bit7

DTC故障中Debounce策略

在经过 debounce 或者 no debounce 滤波之后的结果为 failed 时,bit4 和 bit6 会被清零,bit5 应当被置 1 ;

在经过 debounce 或者 no debounce 滤波之后的结果为passed时,bit4 和 bit6 会被清零。而 bit2(pendingDTC)、bit3(confirmedDTC)和 bit7(warningIndicatorRequested)是需要在Fault memory中其他的条件去判断(具体的可以在Fault Memory章节和UDS Status大总结中看到),所以这3个位和debounce影响的4个UDS状态位是异步置位。由于诊断事件report故障及状态是独立于DEM模块,所以为了保存debounce之后的故障状态,可以给每个故障再给配一个变量记录debounce的状态。

5. 需求参考

DTC故障中Debounce策略

版权声明:本文为CSDN博主「梅尔文.古」的原创文章

原文链接:https://blog.csdn.net/xiandang8023/article/details/129752705

End

原文始发于微信公众号(汽车电子嵌入式):DTC故障中Debounce策略

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月8日11:00:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DTC故障中Debounce策略http://cn-sec.com/archives/2558153.html

发表评论

匿名网友 填写信息