事件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标准等。

Autosar Dem模块之Debounce策略相关推荐

  1. DTC故障中Debounce策略

    1. Dem 中为什么用到 debounce 故障诊断通常由诊断事件管理Dem模块和SW-C共同完成,即先由SWC中的Monitor Function对故障条件实时监控,并不断将故障条件的判定结果上报 ...

  2. 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...

  3. Autosar Dcm模块介绍

    DCM模块介绍 诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话. ...

  4. AUTOSAR从入门到精通100讲(二十四)-AUTOSAR通信篇—AUTOSAR COM模块

    AUTOSAR COM是AUTOSAR通讯的重要组成部分,它是从OSEK COM标准的基础上发展而来的.它提出了一个不同速率的总线网络之间进行数据交换的方法,为汽车控制单元应用软件提供了统一的通信环境 ...

  5. Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)

    背景 之前简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置DSD子模块,并实现客户的需求. DSP子模块配置 1.DSP子模 ...

  6. AUTOSAR ComM模块介绍

    AUTOSAR ComM模块介绍 Autosar ComM概述 Autosar ComM 全称是 Autosar Communication Manager,顾名思义就是用来管理通讯的,ComM 模块 ...

  7. AUTOSAR DET模块解析

    作者:Stephen Du 免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性.复制/转发请注明来源/作者. 欢迎添加微信交流学习. AUTOSAR DET模块解析 参考文档: ...

  8. AUTOSAR DEM Configuration

    本文只介绍AUTOSAR DEM配置,目的在于指导DEM快速开发,对于AUTOSAR DEM 功能请参见AUTOSAR DEM Introduction 一文 Workflow Step Action ...

  9. AUTOSAR DEM Introduction

    General DEM 是用来处理,存储Diagnosis Event以及相关的环境数据的AUTOSAR 模块 DTC Status Bit0 - TestFailed(TF) Test Result ...

最新文章

  1. OpenCV3.3中逻辑回归(Logistic Regression)使用举例
  2. iptables利用ipt_recent做防刷限制
  3. 多租户数据库设计方法:共享数据库表
  4. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]
  5. Unity大密度建筑场景加载解决方案
  6. 阿里云黄海宇:窄带高清2.0——让直播更惊艳的魔术
  7. optimized mysql_MySQL解释计划中“Select tables optimized away”的含义
  8. 在线JSon格式显示工具
  9. python科学坐标系绘制分析_python数据可视化案例——平行坐标系(使用pyecharts或pandas)...
  10. 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。
  11. java mybatis配置,mybatis配置——Java版
  12. chrome浏览器关闭百度热搜——AdBlock插件
  13. 浙大pat | 浙大pat乙级 1005~1008
  14. 编译原理-词法分析-上下文无关文法
  15. android模拟器横屏显示,安卓模拟器bluestacks怎么横屏显示
  16. 小牛电动为何沉迷于打造“社区文化”?
  17. TI15.4STACK协议栈解读
  18. JAVA:JDBC数据库编程
  19. 便携智能音箱小问mini发布,李志飞:要做苹果一样的公司
  20. 动动同步微信无法连接服务器,动动运动,动动计步器加到微信可是不能连接到微信运动...

热门文章

  1. [转]问题解决:安装ESET NOD32 5无法进入系统及无法激活解决办法
  2. 出来了,真三国无双3PC版的破解。
  3. 《沉默的真相》观后理解
  4. 面对疾风吧,如何搭建高协同的精准告警体系?
  5. A Tale from the Dark Side of The Moon
  6. Path之贝塞尔曲线
  7. Photoshop如何使用通道之实例演示?
  8. 二维数组九宫格的翻转
  9. Spark系列四:Spark的经典入门案列之ip地址归属地查询
  10. 2021深圳高考成绩查询时间,2021深圳高考时间表