1、概述
Dem全称为Diagnostic Event Manager,负责故障事件的处理、故障数据的存储和管理。简单说其功能是故障事件确认前的故障debounce,故障事件确认时的故障数据存储,故障发生后的故障老化、故障替代(AUTOSAR的故障存储策略)。
AUTOSAR标准中对Dem模块最上层分了两菜单栏,分别是DemConfigSet,DemGeneral。其中DemConfigSet负责不同DTC、event等的配置,DemGeneral负责DTC、event的共用部分,包括冻结帧、扩展帧、使能条件等。
AUTOSAR规范里面规定如下:
思维导图如下
2、DemGeneral
该容器包含BSW Dem的配置(参数),区别与一般的通用配置,此配置参数较多,注意甄别用途。一般来说General配置好一次那么就无需后续考虑的。整体的思维导图显示如下。
除了通用配置参数,里面包含了很多小容器参数,如下图示
容器 | 多重性 | 范围与依赖 |
DemCallbackDTCStatusChanged | 0..* | 这个容器的存在表明,Dem可以访问“DTCStatusChanged”回调,Dem将调用该回调来通知其他组件DTC状态的变化。 如果存在DemCallbackDTCStatusChangedFnc,则该参数定义Dem将调用的函数的名称。如果没有DemCallbackDTCStatusChangedFnc,则Dem将具有需要该接口的R-Port CallbackDTCStatusChanged,其名称是使用唯一的回调前缀后跟事件名称生成的。 状态更改通知仅支持主内存中的DTC。 |
DemDataElementClass | 0..65535 | 这个容器包含配置(参数)用于内部/外部数据元素类。(一般都配置冻结帧数据) 用于配置扩展数据和快照数据的数据源 外部元素为C/S或S/R接口获取应用层的数据。 |
DemDidClass | 0..65535 | 该容器包含数据Id类的配置(参数)。它由一个或几个数据元素组装而成。 用于配置快照数据的Did |
DemEnableCondition | 0..255 | 该容器包含启用条件的配置(参数)。 |
DemEnableConditionGroup | 0..255 | 该容器包含启用条件组的配置(参数)。 |
DemExtendedDataClass | 0..* | 该类包含用于扩展数据类的扩展数据记录的组合。 |
DemExtendedDataRecordClass | 0..253 | 此容器包含扩展数据记录类的配置(参数)。它由一个或几个数据元素组装而成。 于配置扩展数据的ID、扩展数据触发储存条件和参考的DemDataElementClass。 |
DemFreezeFrameClass | 0..65535 | 此容器包含非OBD2和WWH-OBD相关冻结帧类的did组合。 配置快照数据包含的数据,数据来自DemDataElementClass |
DemFreezeFrameRecNumClass | 0..255 | 此容器包含分配给事件的专用不同冻结帧记录编号的列表。此列表中记录编号的顺序按照冻结帧记录的时间顺序分配。 依赖:DemTypeOfFreezeFrameRecordNumeration =DEM_FF_RECNUM_CONFIGURED |
DemFreezeFrameRecordClass | 0..255 | 这个容器包含了一个专用的,不同的冻结帧记录号码。 主要用于配置快照数据的触发存储条件以及快照id。 |
DemGeneralJ1939 | 0..1 | 该容器包含Dem模块的通用j1939特定配置(参数)。如果容器存在,则启用J1939支持。 |
DemGeneralOBD | 0..1 | 此容器包含Dem模块的一般obd特定配置(参数)。 |
DemGroupOfDTC | 0..255 | 这个容器包含DTC组的配置(参数)。 |
DemIndicator | 0..255 | 该容器包含指示器的配置(参数)。 |
DemMirrorMemory | 0..1 | 此容器包含Dem模块的镜像事件内存特定参数。 |
DemNvRamBlockId | 0..* | 该容器包含非易失性内存块的配置(参数),该内存块从Dem中使用。如果不需要事件内存项的永久存储,则不需要配置块。 所需块的数量取决于Dem模块的实现和配置(例如使用的事件存储器的数量)。 |
DemOperationCycle | 1..256 | 该容器保存与配置操作周期相关的所有参数。 |
DemPrimaryMemory | 1 | 此容器包含Dem模块的主要事件内存特定参数。 |
DemRatio | 0..65535 | 该容器包含特定于obd的在用监视器性能比率配置。它与特定事件、FID和IUMPR组相关。 |
DemStorageCondition | 0..255 | 该容器包含存储条件的配置(参数)。 |
DemStorageConditionGroup | 0..255 | 该容器包含存储条件组的配置(参数)。 |
DemUserDefinedMemory | 0..30 | 此容器包含Dem模块的用户定义的事件内存特定参数。 |
2.1、通用配置参数
DemAgingRequieresTestedCycle:定义是否每个老化周期都处理老化周期计数器,还是只考虑已测试的老化周期。
True:老化周期计数器只考虑经过测试的老化周期
False:每个老化周期处理老化周期计数器
DemAvailabilitySupport:这个配置开关定义了是否支持可用性。
Dem应提供将Event视为未配置为DemEventParameter的功能。配置参数DemAvailabilitySupport用于启用该功能(包括API Dem_SetEventAvailable)。
DEM_EVENT_AVAILABILITY | 支持Event的可用性 |
DEM_NO_AVAILABILITY | 可用性不支持 |
DemBswErrorBufferSize:用于处理BSW错误的缓冲区中元素的最大数量,个人理解对应着在初始化之前Dem使用。
DemClearDTCBehavior:定义易失性和非易失性存储器诊断信息的清除过程,以及Dcm模块的积极响应处理。定义Dcm回复肯定响应的时机。
DEM_CLRRESP_NONVOLATILE_FINISH | 清除易失性和非易失性事件内存数据后返回DEM_CLEAR_OK。 |
DEM_CLRRESP_NONVOLATILE_TRIGGER | 清除易失性事件内存数据并触发非易失性事件内存清除后返回DEM_CLEAR_OK |
DEM_CLRRESP_VOLATILE | 清除易失性事件内存数据后返回DEM_CLEAR_OK |
DemClearDTCLimitation:定义支持的Dem_<…>ClearDTC API范围。
DEM_ALL_SUPPORTED_DTCS | Dem_<...>ClearDTC清挂起的DTC |
DEM_ONLY_CLEAR_ALL_DTCS | Dem_<...>ClearDTC会清除所有的DTC |
DemDataElementDefaultEndianness:定义数据元素的端序
BIG_ENDIAN | 大端-摩托罗拉格式 |
LITTLE_ENDIAN | 小端-因特尔格式 |
OPAQUE | 不透明的数据端序 |
DemDebounceCounterBasedSupport:是都支持Count形式的消抖
DemDebounceTimeBasedSupport:是都支持时间形式的消抖
DemDtcStatusAvailabilityMask:Dem支持的DTC状态位的掩码。该掩码被UDS服务0x19使用。
DemEnvironmentDataCapture:定义了实际捕获数据的时间点。
DEM_CAPTURE_ASYNCHRONOUS_TO_REPORTING | 数据捕获被推迟到Dem_Mainfunction的下一个周期。(这意味着在报告故障和捕获数据之间有最小的延迟)。 |
DEM_CAPTURE_SYNCHRONOUS_TO_REPORTING | 立即捕获,最简单的时间点在调用函数 setEventStatus/reportErrorStatus的时候 |
DemEventCombinationSupport:此参数定义Dem支持的事件组合类型。
DEM_EVCOMB_DISABLED | 不支持组合类型 |
DEM_EVCOMB_ONRETRIEVAL | 检索组合类型 |
DEM_EVCOMB_ONSTORAGE | 存储组合类型 |
DemEventDisplacementStrategy:此配置开关定义是否支持事件置换,以及遵循哪种置换策略。
DEM_DISPLACEMENT_FULL | 通过考虑优先级、主动/被动状态和发生,启用事件内存项置换。 |
DEM_DISPLACEMENT_NONE | 事件内存项置换被禁用。 |
DEM_DISPLACEMENT_PRIO_OCC | 通过考虑优先级和发生(但没有主动/被动状态),启用了事件内存项置换。 |
DemEventMemoryEntryStorageTrigger:配置主触发器以分配事件内存项。
DEM_TRIGGER_ON_CONFIRMED | 事件当UDS DTC状态位3 (confirmedDTC)由0变为1时触发内存。 |
DEM_TRIGGER_ON_FDC_THRESHOLD | Event达到FDC阈值时触发内存表项。 |
DEM_TRIGGER_ON_PENDING | Event触发内存条目UDS DTC状态位2(pendingDTC)从0变为1。 |
DEM_TRIGGER_ON_TEST_FAILED | 事件当UDS DTC状态位0 (confirmedDTC)由0变为1时触发内存。 |
DemGeneralInterfaceSupport:假设DemGeneralInterfaceSupport为TRUE,那么API GeneralEvtInfo, GeneralCallbackEventDataChanged
与GeneralCallbackEventStatusChange可用。
DemImmediateNvStorageLimit:该参数定义了允许立即存储在NVRAM中的特定事件内存项的最大发生次数(参见DemlmmediateNvStorage)。
DemMaxNumberEventEntryEventBuffer:指定用于存储环境数据(冻结帧和扩展数据)的缓冲区的大小,直到它们被处理并存储到事件内存。
DemMaxNumberEventEntryPermanent:可存储在永久存储器中的事件的最大数量。事件对该内存类型的分配是动态的,并且仅用于与排放相关的事件。也就是讲使用OBD的时候才会配置此参数。
DemMaxNumberPrestoredFF:定义预存储冻结帧的最大数目。如果设置为0,则ECU不支持冻结帧预保存。
DemOBDSupport:此配置开关定义OBD支持和OBD ECU类型。
DEM_OBD_DEP_SEC_ECU | OBD Dependend /Secondary ECU |
DEM_OBD_MASTER_ECU | Master ECU |
DEM_OBD_NO_OBD_SUPPORT | 不支持OBD协议 |
DEM_OBD_PRIMARY_ECU | Pimary ECU |
DemOccurrenceCounterProcessing: 此配置开关定义了对发生计数器的故障确认过程的考虑。对于OBD和混合系统(OBD/非OBD,参见DemOBDSupport),配置开关应始终设置为DEM_PROCESS_OCCCTR_TF。
DEM_PROCESS_OCCCTR_CDTC | 如果故障确认成功(设置了ConfirmedDTC位),则发生计数器由TestFailed位触发。 |
DEM_PROCESS_OCCCTR_TF | 发生计数器仅由TestFailed位触发(并且不考虑故障确认)J1939时必选。 |
DemOperationCycleStatusStorage: 定义在电源周期内操作周期状态是否可用(存储的非易失性)
False:操作周期状态仅存储易失性(下电在一起存)
True:操作周期状态存储非易失性
DemResetConfirmedBitOnOverflow:这个配置开关定义,当事件内存项将被替换时,确认位是否被重置。
DemStatusBitHandlingTestFailedSinceLastClear: 该配置开关定义了老化和位移机制是否应用于“TestFailedSinceLastClear”状态。
DEM_STATUS_BIT_AGING_AND_DISPLACEMENT | “TestFailedSinceLastClear”状态位被重置为0。 |
DEM_STATUS_BIT_NORMAL | 老化和位移不影响"TestFailedSinceLastClear"状态位 |
DemStatusBitStorageTestFailed:激活/去激活“TestFailed”状态位的永久存储。就是到底存储不存储TestFailed,为了下次上电使用。
True:存储激活false:存储未激活
DemSuppressionSupport:此配置开关定义是否支持抑制。一般配置为不支持。
DEM_DTC_SUPPRESSION | 支持DTC的抑制 |
DEM_NO_SUPPRESSION | 不支持 |
DemTaskTime:允许配置周期任务的时间。请注意:此配置值应等于RTE模块的Basic Software Scheduler配置中的值。
DemTriggerDcmReports:激活/取消激活发送给诊断通信管理器的通知以进行ROE处理。ROE:ResponseOnEvent
true:激活Dcm ROE通知false:不激活Dcm ROE通知
当然Dlt与FiM也是可以触发的,看实际需求选择。
DemTriggerMonitorInitBeforeClearOk:定义是否必须在Dem模块返回DEM_CLEAR_OK之前或之后触发监视器重新初始化。true:在DEM_CLEAR_OK之前触发重新初始化false:在DEM_CLEAR_OK之后触发重新初始化。
DemTypeOfDTCSupported:此参数定义Dem_DcmGetTranslationType返回的格式,与所支持的Dem功能无关/不受影响。有以下类型,目前看来一般选择14229-1.
DemTypeOfFreezeFrameRecordNumeration:此参数定义为特定事件的冻结帧记录分配冻结帧记录编号的类型。项目工程里面选择时间顺序进行编号,考虑到替代存储与老化的原因。
DEM_FF_RECNUM_CALCULATED | 定格帧记录将按时间顺序从1开始连续编号 |
DEM_FF_RECNUM_CONFIGURED | 定格帧记录将根据给定的配置按时间顺序编号 |
DemHeaderFilelnclusion:包含使用的c回调声明的Dem模块要包含的头文件的名称。
DemMILIndicatorRef:该参数定义了代表MIL的指示器。MIL:Malfunction Indicator Light (SAE J1979) or Lamp (SAE J1939) 故障指示灯。
2.2、DemCallbackDTCStatusChanged
这个容器的存在表明,Dem可以访问“DTCStatusChanged”回调,Dem将调用该回调来通知其他组件DTC状态的变化。
如果存在DemCallbackDTCStatusChangedFnc,则该参数定义Dem将调用的函数的名称。在没有DemCallbackDTCStatusChangedFnc的情况下,Dem将有一个R-Port,需要接口CallbackDTCStatusChanged,其名称是通过使用唯一的回调前缀后跟事件名称生成的。。状态更改通知仅支持主内存中的DTC。
DemCallbackDTCStatusChangedFnc:原型的函数名“DTCStatusChanged”。自己可以命名,但是有个注意点:如果使能DemTriggerDcmReports参数,该参数不能为“Dcm_DemTriggerOnDTCStatus”。
生成的函数代码如下:
2.3、DemCallbackEventStatusChanged
这个容器的存在表明,Dem可以访问“EventStatusChanged”回调,Dem将调用该回调来通知其他组件事件状态的变化。如果有一个DemCallbackEvenStatusChangedFnc,这个参数定义了Dem将调用的函数的名称。在没有DemCallbackEvenStatusChangedFnc的情况下,Dem将有一个R-Port需要接口CallbackEventStatusChanged,其名称是通过使用唯一的回调前缀后跟事件名称生成的。
DemCallbackEventStatusChangedFnc:原型EventStatusChanged的函数名
以上两个回调会在Dem_Cfg_EventsCallback.h生成函数原型的,但是需要自己进行定义。
2.4、DemClients
这个容器包含可能使用Dem api的客户端
DemClientFunctionality:Dem为DemClient提供的功能。
DemClientUsesRte:如果设置为true,该客户端只能通过RTE使用DEM (DEM将提供C/S接口:CDDIf, EvMemOverflowlndication)。客户端不能对DEM执行任何C_API调用。
DemRbClientPriority:该参数定义了一个DemClient可以拥有的唯一优先级值,该值越低优先级越高。
DemEventMemorySetRef:对客户端分配的事件内存容器的引用,该容器包含客户端特定的设置和事件内存。
2.5、DemDataElementClasses
配置扩展数据和快照数据的数据源
DemExternalCSDataElementClass
它定义了Dem如何从SW-C或另一个BSW模块获取数据元素的值。是否使用客户端/服务器端口或C函数调用,由DemDataElementUsePort定义。CS接口用于同核。
DemDataElementDataSize:以字节为单位定义数据元素的大小。
DemDataElementReadFnc:在DemDataElementUsePort为false的情况下,该参数定义用于获取相应值的C函数“ReadDataElement”的原型。一旦为true那么就无需配置此参数。
DemDataElementUsePort:如果设置为True,则生成R-Port,以获取数据元素(接口DataServices_{data))。如果该参数设置为False,则通过C函数调用DemDataElementReadFnc参数指定的另一个BSW模块获取信息。
由于与ASW相交互,需要R-Port,所以此处配置成TRUE。
DemExternalSRDataElementClass
此容器包含基于外部发送方/接收方数据元素类的配置(参数)。它定义了Dem如何通过使用发送/接收端口从SW-C(只有SWC)获取数据元素的值。
DemInternalDataElementClass
该容器包含内部数据元素类的配置(参数)。
DemInternalDataElement:该参数定义dem内部数据值,该值映射到数据元素。
本处选择发生次数:DEM_OCCCTR :map -内部发生计数器,max。范围:1字节
2.6、DemDidClasss
该容器包含数据Id类的配置(参数)。它由一个或几个数据元素组装而成。
DemDidDataElementClassRef:参考引用数据元素,此引用包含指向数据元素类的链接。容器:DemDataElementClasses
DemDidIdentifier:数据ID的标识符。
2.7、DemExtendedDataRecordClass
此容器包含扩展数据记录类的配置(参数)。它由一个或几个数据元素组装而成。目前项目里面只有一个发生次数的扩展数据,与冻结数据一起存储了,假设需要还可以加入扩展数据:发生时间之类。
DemDataElementClassRef:此引用包含指向数据元素类的链接。数据来源DemDataElementClass。
DemExtendedDataRecordNumber:此配置参数为扩展数据记录指定唯一标识符。可以将一个或多个扩展数据记录分配给一个诊断事件/DTC。0x00由ISO保留(因此最小值等于1)0xF0到0xFF由ISO保留(因此最大值等于239)
DemExtendedDataRecordTrigger:定义用于存储ExtendedDataRecord的触发器。
DEM_TRIGGER_ON_CONFIRMED | 当事件状态确认位从0变为1时,存储ExtendedDataRecord,bit3 |
DEM_TRIGGER_ON_FDC_THRESHOLD | 当FDC达到阈值时,将存储ExtendedDataRecord。 |
DEM_TRIGGER_ON_MIRROR | ExtendedDataRecord将在事件传输到镜像内存时存储。 |
DEM_TRIGGER_ON_PASSED | 当事件报告为通过(testFailed位转换1-> 0)时,将存储ExtendedDataRecord。 |
DEM_TRIGGER_ON_PENDING | 当事件状态待定位从0变为1时,将存储ExtendedDataRecord。 |
DEM_TRIGGER_ON_TEST_FAILED | Bit0从0到1存储 |
DemExtendedDataRecordUpdate:如果满足“DemExtendedDataRecordTrigger”中配置的触发条件,则捕获扩展的数据记录。
DEM_UPDATE_RECORD_NO | 仅为新的事件内存项捕获此扩展数据记录。 |
DEM_UPDATE_RECORD_YES | 每次都会捕获这个扩展的数据记录。 |
2.8、DemExtendedDataClasses
该类包含用于扩展数据类的扩展数据记录的组合。假设存在多个扩展数据的时候怎么组合,需要几个扩展数据的选择。
DemExtendedDataRecordClassRef:索引扩展数据的容器,参考数据来源DemExtendedDataRecordClass。
2.9、DemFreezeFrameClass
此容器包含非OBD2和WWH-OBD相关冻结帧类的did组合。也就是UDS类的。
DemDidClassRef:参考应包含在冻结框架中的DID元素。参考容器:DemDidClass。
2.10、DemFreezeFrameRecordClasss
此容器包含专用的,不同的冻结帧记录编号的列表。其实这个容器主要配置冻结帧触发与更新的条件。
DemFreezeFrameRecordNumber:这个参数为一个定格帧记录定义一个记录号。此记录编号在每个冻结帧记录编号类别中是唯一的。与扩展帧类似。
DemFreezeFrameRecordTrigger:定义什么时候触发存储冻结帧。
DEM_TRIGGER_ON_CONFIRMED | 状态位bit3从0到1时候存储 |
DEM_TRIGGER_ON_FDC_THRESHOLD | Event达到FDC阈值时触发内存表项。 |
DEM_TRIGGER_ON_PENDING | Bit2从0到1时候存储 |
DEM_TRIGGER_ON_TEST_FAILED | Bit0从0到1时候存储 |
DemFreezeFrameRecordUpdate:什么时候进行更新冻结帧
DEM_UPDATE_RECORD_NO | 仅为新的事件内存项捕获此扩展数据记录。 |
DEM_UPDATE_RECORD_YES | 每次都会捕获这个扩展的数据记录。 |
2.11、DemFreezeFrameRecNumClass
此容器包含分配给事件的专用不同冻结帧记录编号的列表。此列表中记录编号的顺序按照冻结帧记录的时间顺序分配。
DemFreezeFrameRecordClassRef:索引冻结帧数据,参考容器:DemFreezeFrameRecordClass
2.12、DemNvRamBlocklds
该容器包含非易失性内存块的配置(参数),该内存块从Dem中使用。如果不需要事件内存项的永久存储,则不需要配置块。
所需块的数量取决于Dem模块的实现和配置(例如使用的事件存储器的数量)。
DemNvRamBlockIdRef:对NVM块的索引。例如需要存储状态字之类的,有多少个DTC,NVM的状态字长度应该在此基础上加上CRC,CRC是可选的。
2.13、DemPrimaryMemory
可以存储多少个event的设置。
DemMaxNumberEventEntryPrimary:可存储在主内存中的最大事件数,这个地方一般与DemNvRamBlocklds设置多少个是相等的。
3、DemConfigSet
此容器包含支持多个配置集的Dem模块的配置参数和子容器。配置思维导图如下所示。
3.1、DemDebounceCounterBasedClass
此容器包含基于类的Debounce Counter的配置
下面配置显示的是底层消抖。
DemDebounceBehavior:此参数定义在相关启用条件未满足或相关事件的ControlDTCSetting被禁用时,事件解密算法将如何表现。
DEM_DEBOUNCE_FREEZE | 事件消抖计数器将冻结当前值,并且在相关启用条件未满足或相关事件的ControIDTCSetting被禁用时不会更改。在满足所有相关的启用条件并再次启用相关事件的ControlDTCSetting之后,事件将继续与事件的下一个报告(即SetEventStatus)一起进行。 |
DEM_DEBOUNCE_RESET | 如果相关的启用条件未满足或相关事件的ControlDTCSetting被禁用,则事件消抖计数器将重置为初始值。事件的序列将随着下一个有效的事件报告而重新开始。 |
DemDebounceCounterDecrementStepSize:在PREPASSED时候定义内部衰减的步长计数器。
DemDebounceCounterFailedThreshold:定义消抖计数器失败时候的阈值。也就是FDC的最大值。
DemDebounceCounterIncrementStepSize:故障从prefailed状态跳转至failed的限值;
DemDebounceCounterJumpDown:是否使能JumpDown功能, JumpDown功能是指当上一次Diagnostic Monitor上报的状态是prefailed,而这次上报的是prepassed,且当前计数器的值大于DemDebounceCounterJumpDownValue,错误计数器的值会重置为DemDebounceCounterJumpDownValue。如果JumpDown功能禁止,计数器按照步长减少。DemDebounceCounterJumpDownValue:当Jump Down功能使能,改变量定义了计数器的重置值,一般设置为0。
DemDebounceCounterJumpUp:是否使能JumpUp功能, JumpUp功能是指当上一次Diagnostic Monitor上报的状态是prepassed,而这次上报的是prefailed,且当前计数器的值小于DemDebounceCounterJumpUpValue,错误计数器的值会重置为DemDebounceCounterJumpUpValue。如果JumpUp功能禁止,计数器按照步长增加。
DemDebounceCounterJumpUpValue:当JumpUp功能使能,该变量定义了计数器的重置值。
DemDebounceCounterPassedThreshold:故障从prepassed状态跳转至passed状态的限值。
DemDebounceCounterStorage:是否讲Debounce的值存储到NVM。
具体每个参数在实际应用中的含义如下:
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表示DemDebounceCounterlncrementStepSize,
16表示DemDebounceCounterDecrementStepSize,
假设由应用层实现,也就是不需要消抖,直接触发的形式,如下设置即可
采用Debounce由应用层做,则在Dem可简化,即INC = 255, DEC=256,FAIL = 1,PASS = -1。所有的DTC使用相同的BasedClass。不使能JumpUp与JumpDown
应用层消抖配置如下:
3.2、DemComponent
将相关联的DTC按SWC分组,并能过Dem_GetComponentFailed获取状态。
3.3、DemDTCAttributes
配置DTC的属性,此时的颗粒的是最小的单元了,例如过温、过压等DTC,属于单个DTC的配置。
配置界面展示一个如下:
DemAgingAllowed:是否允许老化,这个选项一般没啥争议,老化机制。
DemAgingCycleCounterThreshold:清除/删除事件所需的老化周期数。
DemAgingCycleCounterThresholdForTFSLC:复位testFailedSinceLastClear位所需的老化周期数。
DemDTCPriority:此DTC,也可以认为是Event的等级,数值越低,优先级越高。其实就是类似一级故障、二级故障、三级故障这里面的1、2、3.
DemDTCSignificance:事件的意义,表示与故障分类和解决有关的附加信息。它可以映射为dem内部数据元素。如果是事件相关数据的一部分,则需要配置。
DEM_EVENT_SIGNIFICANCE_FAULT | 故障,影响组件/ECU本身 |
DEM_EVENT_SIGNIFICANCE_OCCURRENCE | 问题,它指示有关系统行为不足的附加信息 |
DemEventMemoryEntryFdcThresholdStorageValue:分配事件内存条目和捕获冻结帧的阈值。
DemlmmediateNvStorage:开关以启用立即存储触发相应事件内存条目持久化到NVRAM。如果启用,事件内存中的立即存储将发生,例如,每次增加发生计数器和清除。
DemMaxNumberFreezeFrameRecords:这个参数定义了冻结帧记录的数量,可以为这个事件存储最多的记录。因此,所有这些冻结帧记录都具有相同的冻结帧类。
DemAgingCycleRef:老化周期参考,是一个上电周期还是点火周期之类,参考通用配置参数:DemOperationCycle。
后面的配置:冻结帧、扩展帧、冻结帧顺序参考均是来自DemGeneral的配置,不再一一赘述。
3.4、DemDTC
这个容器包含DemUdsDTC的配置(参数)。
举例参数如下:
DemDTCAttributesRef:该参数定义与DemDTC相关联的DTC属性。参考容器:DemDTCAttributes。
DemDTCFunctionalUnit:DTCFuncitonalUnit是一个1字节的值,它标识了相应的报告DTC的基本车辆/系统功能。上报严重性信息时需要设置该参数。无DTC时,不提供DTC功能单元信息。
DemDTCSeverity:DTC严重程度符合ISO 14229-1。此参数取决于汽车制造商。如果没有配置,则以“no severity”计数。如果不配置DTC,则不提供DTC的严重程度信息。
DEM_SEVERITY_CHECK_AT_NEXT_HALT | 下一轮检查 |
DEM_SEVERITY_CHECK_IMMEDIATELY | 立即检查 |
DEM_SEVERITY_MAINTENANCE_ONLY | 维护需求 |
DEM_SEVERITY_NO_SEVERITY | 没有可用的严重性信息 |
3.5、DemEventParameter
该容器包含事件的配置(参数)。
DemComponentClassRef:对被监视组件的引用。并没有配置DemComponent,所以此项暂时没有引用。
DemComponentPriority:指定组件内的优先级。值越小优先级越高。
DemDTCRef:引用的DTC是哪个,参考容器:DemDTC。
DemEventAvailable:此Event是否在整个Dem里面可用,一般此项配置为True。
DemEventKind:该参数用于区分SW-C事件和BSW事件。SW-C事件由Dem_SetEventStatus API报告,BSW事件由Dem_ReportErrorStatus API报告。
DEM_EVENT_KIND_BSW | BSW的Event |
DEM_EVENT_KIND_SWC | SWC的Event |
DemFFPrestorageSupported:是否支持预存储冻结帧数据。
DemEventFailureCycleCounterThreshold:定义基于事件的故障确认的故障循环次数。启用该参数,表示启用该事件的故障确认功能。由于项目在ASW进行故障的消抖,这里写1即可。
备注:类似于Dem的配置,建议使用脚本实现,规格比较统一,arxml相对来说好实现。