Autosar Dem模块之Debounce策略

事件Debounce策略概述

Dem模块提供了几个优化信号质量的Debounce策略,包括基于计数的Debounce算法、基于时间的Debounce算法以及特定的Debounce算法。Dem模块可以通过配置事件的DemDebounceAlgorithmClass容器来选择相应的Debounce算法。

基于计数的Debounce算法

Dem模块根据上报检查结果(Passed/Failed),内部Debounce计数增加/减少N(步长)。当内部Debounce计数达到失败阈值时,monitor会上报DEM_EVENT_STATUS_FAILED状态;当内部Debounce计数达到成功阈值时,monitor会上报DEM_EVENT_STATUS_PASSED状态。

若开启jump-down功能,当内部Debounce计数达到失败阈值后,内部Debounce计数设置为jump-down初始值。若开启jump-up功能,当内部Debounce计数达到成功阈值后,内部Debounce计数设置为jump-up初始值。下图为计数Debounce的示例:

Dem模块提供了DemDebounceBehavior参数,定义在Enable condition和ControlDTCSetting过程中上报的处理方案,具体配置和处理流程如下图所示:

DEM_DEBOUNCE_STATUS_FREEZE:在Enable condition和ControlDTCSetting过程中上报,内部Debounce计数保持不变;

DEM_DEBOUNCE_STATUS_RESET:在Enable condition和ControlDTCSetting过程中上报,内部Debounce计数清零。

Dem模块提供了DemDebounceCounterStorage参数,定义内部Debounce计数是否需要存储。若开启,Dem模块会在Dem初始化(Dem_Init)的时候重载之前存储的内部Debounce计数。

其中Autosar 配置如下:

  • 开启基于计数的Debounce算法(DemDebounceCounterBasedSupport = true)
  • 设置event的Debounce算法(DemDebounceAlgorithmClass = DemDebounceCounterBased)
  • 设置Failed阈值(DemDebounceCounterFailedThreshold)
  • 设置passed阈值(DemDebounceCounterPassedThreshold)
  • 设置内部Debounce计数步长(DemDebounceCounterIncrementStepSize)
  • 开启Jump down功能(DemDebounceCounterJumpDown = true)
  • 设置Jump down初始值(DemDebounceCounterJumpDownValue)
  • 开启Jump up功能(DemDebounceCounterJumpUp = true)
  • 设置Jump up初始值(DemDebounceCounterJumpUpValue)
  • 设置Debounce行为(DemDebounceBehavior)
  • 设置内部计数存储功能(DemDebounceCounterStorage)

基于时间的Debounce算法

Dem模块根据上报检查结果(Passed/Failed),开启Failed/Passed内部Debounce定时器。当内部Debounce定时器达到失败阈值时,monitor会上报DEM_EVENT_STATUS_FAILED状态;当内部Debounce定时器达到成功阈值时,monitor会上报DEM_EVENT_STATUS_PASSED状态。

具体Debounce流程如下图所示:

Dem模块提供了DemDebounceBehavior参数(同计数Debounce功能相同),定义在Enable condition和ControlDTCSetting过程中上报的处理方案,具体配置和处理流程如下图所示:

DEM_DEBOUNCE_STATUS_FREEZE:在Enable condition和ControlDTCSetting过程中上报,内部Debounce定时器保持不变;

DEM_DEBOUNCE_STATUS_RESET:在Enable condition和ControlDTCSetting过程中上报,内部Debounce定时器清零。  

具体Debounce Reset流程如下图所示:

其中Autosar 配置如下:

  • 开启基于计数的Debounce算法(DemDebounceTimeBasedSupport= true)
  • 设置event的Debounce算法(DemDebounceAlgorithmClass = DemDebounceTimeBase)
  • 设置Failed阈值(/DemDebounceTimeFailedThreshold)
  • 设置passed阈值(DemDebounceTimePassedThreshold)

特定的Debounce算法

针对一些有特殊需求的应用程序,Dem模块还扩展了其他的特殊Debounce算法。

Monitor Debounce 算法

Dem模块提供了一个monitor debounce算法,若配置成DemDebounceMonitorInternal,Dem模块不能为每个event使用内部debounce机制,其中monitor就不可以上报DEM_EVENT_STATUS_PREFAILED和DEM_EVENT_STATUS_PREPASSED状态。

当调用Dem_PreInit函数和清除DTC(14服务)时,Dem模块会复位内部debounce算法及相关参数。

总结

本章节主要描述了Dem模块Debounce策略和常用的几种Debounce算法的使用方法和Autosar配置。这些功能仅仅是Dem模块的一小部分,同时我们还需要了解Dem模块其他功能和Autosar工具的配置选项,这样才能灵活使用Autosar工具配置和调试相关的BUG。

本章节主要参考Autosar标准的Dem模块相关文档和ISO14229标准等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值