发布日期:2024-12-21 13:24 点击次数:51
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:环境数据和event status改变是否,提供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,一种是在confirm bit为1的情况下,testfail bit 0—>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后才能处理。
图片
Event dependencies
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,APP开发公司14229为D50293。
2.DTC severity是指用于表示故障的严重程度,主要从售后的角度来看,分为,立即检查、下次检查、立即维修。
3.DTC significance 是用于区分是ECU或系统的fault还是外部fault。
4.Suppress DTC output是指DemGeneral中DemSuppressionSupport 配置参数,如果参数配置为true,则可以通过Dem_SetDTCSuppression 接口抑制某些DTC,抑制后对外是不可见的。
5.DTC group只需要一个参数就可以确定,就是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周期;
end
分享不易,恳请点个【再看】
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。