|
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策略 {jz:field.toptypename/}计数器的初始值为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的策略主要配置以下几个参数: 建站客服QQ:888888881、DebounceTimeBasedTaskTime:该变量定义基本的检测周期 2、DemDebounceTimeFailedThreshold:定义故障状态从prefailed跳转至failed需要多少个DebounceTimeBasedTaskTime周期; 3、DemDebounceTimeFailedThreshold:定义故障状态从prepassed跳转至passed需要多少个DebounceTimeBasedTaskTime周期; end 分享不易,恳请点个【再看】 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。 |



备案号: