AutoSAR Dem配置项基础知识梳理

描述

Dem负责DTC的处理,包括冻结帧、扩展数据、运行循环、debounce策略等。

从最上层来看,Dem分别是DemConfigSet、DemGeneral两大部分。其中DemConfigSet是围绕Event的配置,DemGeneral负责DTC和Event的通用部分,包括冻结帧、扩展帧、使能条件、运行循环等。

计数器

DemGeneral

DemGeneral分小部分,通用配置、冻结帧配置、扩展数据配置。

通用配置:

DemAvailabilitySupport:定义是否支持通过 Dem_SetEventAvailable接口设置Event的有效性 ,用于在运行时切换事件的可用性。

DemBswErrorBufferSize:配置BSW Event的数量,在Event配置里,需要配置event是BSW_KIND还是SWC_KIND;

DemClearDTCBehavior:定义Dcm回复肯定响应的时机。

VOLATILE:Dem清除RAM中的DTC数据之后,Dcm回复肯定响应;

NONVOLATILE_TRIGGER:Dem清除RAM中数据并且启动NVM清除数据,Dcm回复肯定响应;

NONVOLATILE_FINISH:Dem清除RAM中数据,同时启动并完成NVM清除数据,Dcm回复肯定响应。

DemClearDTCLimitation:DTC清除配置;

ALL_SUPPORTED_DTCS:支持所有的DTC值;

ONLY_CLEAR_ALL_DTCS: 仅支持清除所有DTC;

ONLY_CLEAR_SINGLE_AND_ALL_DTCS:支持单个和所有DTC清除;

DemDataElementDefaultEndianness:定义数据元素的字节序;

DemDebounceCounterBasedSupport、 DemDebounceTimeBasedSupport :定义是否支持计数或计时debounce。这个配置限制了Event中debounce处理。

DemDtcStatusAvailabilityMask:设置0x19服务支持的状态位;

DemEnvironmentDataCapture:设置冻结帧和扩展数据的获取是同步还是异步,也就是在当前周期,还是下个周期;

•DemEventCombinationSupport:是否支持多个Event映射到一个DTC;

•DemEventDisplacementStrategy:配置DTC的替代策略,这AutoSAR提供了几种,也可以自定义。

•DemEventMemoryEntryStorageTrigger:定义冻结帧和扩展数据的触发存储的条件,一般是选test_fail,意味着test_fail从0—>1触发。

•DemGeneralInterfaceSupport:环境数据和eventstatus改变是否,提供callback接口,一般选择false;

•DemImmediateNvStorageLimit:定义NVM立即写的限制数量,DemGeneral/DemImmediateNvStorageSupport和DemConfigSet/DemDTCClass/DemImmediateNvStorage需要开启;

•DemMaxNumberEventEntryEventBuffer:定义环境数据缓存的大小;

•DemMaxNumberPrestoredFF:定义预存储快照的最大数量;一般存储的冻结帧里有快速变化的数据,需要配置;

•DemResetConfirmedBitOnOverflow:定义当事件存储被取代时,confirmed位是否复位,一般设置为true;

•DemStatusBitHandlingTestFailedSinceLastClear:定义老化和内存替代后是否设置“TestFailedSinceLastClear”状态位。

•DemStatusBitStorageTestFailed:定义testfail位是否存储;

•DemSuppressionSupport:定义是否支持DTC或者Event抑制;

•DemTypeOfDTCSupported:定义DTC的格式;

•DemTypeOfFreezeFrameRecordNumeration:定义如何分配快照号

•DemNvRamBlockIds:设置Event Memory数量,从NvM引用;

•DemOperationCycle:运行循环设置,这里虽然可以配置不同的运行循环,但是循环的控制还是需要在代码里去实现;

•DemStorageCondition:设置环境数据是否可以存储;用于Event引用;

•DemDTCofgroup:可以将DTC分成不同的组,后面会详细讲。

冻结帧配置:

1.DemDataElementClass:用于配置所需的冻结帧数据以及扩展数据,这些数据可以来自模块定义好的,也可以通过SR接口获取,

2.DemDidClass:定义冻结帧的数据的DID;

3.DemFreezeFrameClass:选择需要参考的DemDidClass;

4.DemFreezeFrameRecRecordClass:定义冻结帧的触发条件,以及是否更新;

5.DemFreezeFrameRecNumClass:对需要record的数据进行打包成一个冻结帧结构;

对于快照数据:可以选择一个DID映射一个数据,这样的好处是数据和DID明确的,解析也方便,当时劣势是占的空间大,每个DID需要占2个byte;另外一种方案是用一个DID定义一大块内存,上层软件去做数据打包,这样就节省空间,劣势就是需要自己打包,以及上位机按照下位机的格式进行数据解析。

扩展数据:

1.DemExtendedDataRecorderClass:选择DemDataElementClass中的数据,并设置更新策略以及数据ID;

2.DemExtendedDataClass:打包扩展数据,用于Event引用。

DemConfigSet

DemConfigSet这个菜单主要是围绕Event来展开配置的。首先来梳理一下Event和DTC的一些基础信息。

Event是指系统诊断事件,Dem用EventId来区分不同的诊断事件,通常使用来说Event和DTC是一一对应的,但是如果是使用Event combination,则可以多个Event对一个DTC。

Event的基础信息包括Event Priority、Event occurrence、Event Kind。

1.Event Priority是指事件的优先级,其中1表示优先级最高,数据越大优先级越低;

2.Event occurrence主要是根据DemGeneral中配置的DemOccurrenceCounterProcessing来处理,一种是testfailbit 0—>1,一种是在confirmbit为1的情况下,testfail bit0—>1,两者统计的大小会相差1.

3.Event kind主要是将Event分为BSW和SWC两种,在DemGeneral中也配置了BSWerror的buffer大小。其两者的区别是,BSW kind是通过配置来关联到Dem模块,比如在Busoff故障,可以直接在CANSM中直接关联Dem。

4.BSW和SWC的区别在与,在Dem_PreInit后,就可以处理BSW kind故障,而SWC kind需要在Dem_Init后才能处理。

计数器

Eventdependencies

Event之间的依赖目的是过滤部分级联故障以及节省存储。其主要通过DemComponent来实现的,比如传感本身发生故障,这时控制器读取的数据也应该无效。

一个DemComponent是若干event的集合,在DemComponent内部,故障事件有优先级,当一个DemComponent内部最高优先级的故障事件状态为Failed导致其他故障事件状态也为Failed,或者父节点DemComponent的状态为Failed导致子节点DemComponent内的故障事件状态Failed,这种故障叫做连续错误(CONSECUTIVE FAULT),其他被认为是偶发错误(CAUSAL FAULT)。

另外如果DemComponent内部故障事件优先级被忽略,那么仅有当父节DemComponent的状态为Failed导致子节点DemComponent内的故障事件状态变成Failed被称作是连续错误(CONSECUTIVE FAULT)。连续故障则不会记录环境数据。

计数器

1.DTC  format是指DTC的格式,分别为15031和14229两种,15031的格式为U150293,14229为D50293。

2.DTC severity是指用于表示故障的严重程度,主要从售后的角度来看,分为,立即检查、下次检查、立即维修。

3.DTCsignificance 是用于区分是ECU或系统的fault还是外部fault。

4.SuppressDTC output是指DemGeneral中DemSuppressionSupport 配置参数,如果参数配置为true,则可以通过Dem_SetDTCSuppression 接口抑制某些DTC,抑制后对外是不可见的。

5.DTCgroup只需要一个参数就可以确定,就是DTC的界限(下界),上图中两个DTC组它们的各自参数就是该组DTC的下界,一个DTC组中的包含的DTC是该组配置的DTC界限与本组紧接的下一组的界限之间的DTC,但是不包括这两个界限。这就可以用于0x14或0x85服务进行单独操作。当前内部预制了两个组如下。

计数器

DemConfigSet-Debounce策略

基于计数器的Debounce策略

在这种策略下,Dem模块会提供一个计数器(fault detection counter)用来记录判断的结果,当Diagnostic Monitor上报至dem的状态为prefailed,计数器会按步长增加,当上报状态为prepassed,计数器按步长减少。

计数器

1、5表示JumpDown功能,

3、4表示JumpUp功能,

2表示当前计数器小于DemDebounceCounterJumpDownValue ,所以JumpDown功能没有激活,

6表示DemDebounceCounterJumpDownValue ,

7表示DemDebounceCounterJumpUpValue,

8表示DemDebounceCounterFailedThreshold ,

9表示DemDebounceCounterPassedThreshold ,

10、12表示故障确认,由于计数器的值达到了fail的限值,

11故障恢复,由于计数器的值达到pass的限值,

13表示Dem接收的状态为failed,所以故障直接置位;

14表示Dem接到的状态为passed,所以故障恢复;

15表示DemDebounceCounterIncrementStepSize,

16表示DemDebounceCounterDecrementStepSize,

基于次数的debounce涉及的配置项含义如下:

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

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

3、DemDebounceCounterPassedThreshold:故障从prepassed状态跳转至passed状态的限值。

4、DemDebounceCounterIncrementStepSize:当Diagnostic Monitor上报Prefailed,错误计数器的增加量;

5、DemDebounceCounterDecrementStepSize:当Diagnostic Monitor上报Prepassed,错误计数器减少量;

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

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

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

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

基于时间的Debounce策略

计数器的初始值为0,其范围为-128~127,当Dem接收到Diagnostic Monitor发送的状态值开始计数,计数器的增长方向有接收到的状态决定,当计数器的值在一定时间达到阈值,完成此次判断,如果在未达到阈值之前,Dem收到的状态发生变化,计数器会重新开始计数,并且计数方向也发生转变。

计数器

t failed:表示故障failed需要的时间,该值等于DebounceTimeBasedTaskTime乘以DemDebounceTimeFailedThreshold;

t passed:表示故障passed需要的时间,该值等于DebounceTimeBasedTaskTime乘以DemDebounceTimePassedThreshold;

1、表示Diagnostic Monitor传至Dem的状态为prefailed;并经过t failed时间故障状态编程failed;

2、表示Diagnostic Monitor传至Dem的状态为prepassed;此时计数器重新开始计数;

3、由于2时刻开始计数未达到阈值时,Dem接收的状态发生变化,此时计数器开始重新计数,并计数方向发生变化,经过t failed时间后,故障状态编程failed。

4、Dem接收到的状态为failed,所以故障直接置位了;

5、Dem接收到的状态为passed,所以故障直接恢复了;

6、表示故障已发生;

7、表示故障未发生;

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

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

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

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





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分