背景
之前简单介绍了Autosar Dem模块,接下来我们直接切入主题,如何通过VectorConfigurator Pro工具配置Dem模块的通用设置,并实现客户的需求。
Dem通用配置
(1)DemCallbackDTCStatusChanged
该容器包含DTC状态变化时的回调函数,通常通过RTE端口调用该函数。
DemCallbackDTCStatusChangedFnc:定义DTC状态变化时的回调函数。
(2)DemClient
该容器包含有可能用到的Dem API客户端。
DemClientId:定义客户端唯一标识。
(3)DemDataClass
该容器包含数据元素的配置,这些数据元素主要包括扩展数据和快照记录。
DemDataElementDataType:定义外部数据的类型,包括BOOLEAN、SINT32、SINT16、SINT8、SINT8_N、UINT32、UINT16、UINT8、UINT8_N。若配置为空,Dem会根据数据长度自动分配数据类型。
DemDataElementEndianness:定义外部数据的字节序。
DemDataElementReadFnc:定义外部数据的函数接口。
DemDataElementStoreNonVolatile:定义数据是否需要存放到NvRam。若开启,Dem会在DTC存储时将数据存放到NvRam中,19服务直接读取NvRam中的数据;若禁用,19服务读取时,Dem都需要去读取相应的数据。
DemDataElementUsePort:定义数据元素的访问接口。USE_DATA_FUNCTION_CALL:调用外部数据;USE_DATA_INTERNAL:调用Dem提供的内部数据。
DemDataElementDataSize:定义数据的长度(字节)
DemDataElementSystemTemplateDiagnosticDataElementRef:引用DiagnosticDataElement
DemDataElementInternalData:定义内部数据
AGINGCTR / AGINGCTR_UPCNT:老化计数器的当前值(递增)
AGINGCTR_INVERTED / AGINGCTR_DOWNCNT:老化计数器的当前值(递减)
OCCCTR:故障计数器当前值(1个字节)
OCCCTR_2BYTE:故障计数器当前值(2个字节)
OVFLIND:主内存溢出标识
SIGNIFICANCE:事件的重要性标识
PRIORITY:DTC的优先级
CURRENT_FDC:DTC故障检测计数器的当前值
MAX_FDC_SINCE_LAST_CLEAR:从清除DTC到现在,DTC故障检测计数器到达的最大值
MAX_FDC_DURING_CURRENT_CYCLE:当前循环周期内,DTC故障检测计数器到达的最大值
CYCLES_SINCE_FIRST_FAILED:从第一次testfailed到现在,经过了多少个操作周期。
CYCLES_SINCE_LAST_FAILED:从最后一次testfailed到现在,经过了多少个操作周期。
FAILED_CYCLES:DTC产生testfailed的操作周期。
CONSECUTIVE_FAILED_CYCLES:连续DTC产生testfailed的操作周期。
CYCLES_TESTED_SINCE_FIRST_FAILED:从第一次testfailed到现在,完成测试的操作周期数
CYCLES_TESTED_SINCE_LAST_FAILED:从最后一次testfailed到现在,完成测试的操作周期数
HEALINGCTR_DOWNCNT:直到WIR bit被清除,完成测试的操作周期数
ROOTCAUSE_EVENTID:造成dtc数据改变的EventId
OBDDTC:UDS DTC对应的OBD II DTC
OBDDTC_3BYTE:UDS DTC对应的OBD II DTC
OBD_RATIO:OBD II DTC附加了一个比率
FAULT_PENDING_COUNTER:DTC连续测试testfailed的次数
AGED_COUNTER:老化计数器的当前值
WUC_SINCE_LAST_FAILED:从第一次testfailed到现在,完成预热的操作周期数
(4)DemDidClass
该容器包含DID数据类。
DemDidIdentifier:DID标识符,19 04服务返回的DID ID。
DemDidSystemTemplateDiagnosticDataIdentifierRef:引用DiagnosticDataIdentifier
DemDidDataClassRef:DID类包含的数据元素
(5)DemEnableConditionGroup
该容器包含DTC产生的使能条件组
DemEnableConditionRef:引用DemEnableCondition中的使能条件
(6)DemEnableCondition
该容器包含DTC产生的使能条件
DemEnableConditionId:enable condition的内部标识ID
DemEnableConditionStatus:定义enable condition的初始状态
(7)DemExtendedDataClass
该容器包含DTC的扩展数据组
DemExtendedDataRecordClassRef:引用DemExtendedDataRecordClass中的扩展数据
(8)DemExtendedDataRecordClass
该容器包含DTC的扩展数据
DemExtendedDataRecordTrigger:定义记录扩展数据的时机。
FDC_FIRST_IN_CYCLE:当故障计数器达到阈值时记录扩展数据,同时一个运行周期只会记录一次数据。
TESTFAILED:当testfailed标志位由0置1时记录扩展数据
CONFIRMED:当confirmed标志位由0置1时记录扩展数据(不支持)
PASSED:当testfailed标志位由1置0时记录扩展数据
DemExtendedDataRecordNumber:定义扩展数据的标识符,19 06服务返回该值。
DemExtendedDataRecordUpdate:定义扩展数据更新机制。UPDATE_RECORD_NO:只记录一次扩展数据;UPDATE_RECORD_YES:只要触发器触发就要更新记录扩展数据。
DemDataClassRef:引用DemDataClass中的数据元素
(9)DemFreezeFrameClass
该容器包含DTC的快照数据组
DemDidClassRef:引用DemDidClass中的DID类
(10)DemFreezeFrameRecNumClass
该容器包含事件的快照记录号配置列表
DemFreezeFrameRecordNumber:引用快照数据的记录编号
DemFreezeFrameRecordTrigger:定义快照数据的触发机制
FDC:当故障计数器达到阈值时获取快照数据
CONFIRMED:当confirmed状态标志位由0置1时获取快照数据
PENDING:当pending状态标志位由0置1时获取快照数据
TESTFAILED:当testfailed状态标志位由0置1时获取快照数据
TESTFAILED_FIRST_IN_CYCLE:当testfailed状态标志位由0置1时获取快照数据,一个运行周期只会记录一次快照数据
FDC_FIRST_IN_CYCLE:当故障计数器达到阈值时获取快照数据,一个运行周期只会记录一次快照数据
DemFreezeFrameRecordUpdate:定义快照数据的更新机制。
DEM_UPDATE_RECORD_NO:只记录一次快照数据
DEM_UPDATE_RECORD_YES:只要触发器触发就要更新记录快照数据
(11)DemGroupOfDTC
该容器包含多个DTC组
DemGroupDTCs:定义DTC组的DTC值。若清除DTC只有14 FFFFFF服务,则不需要配置DTC组;其他需要根据OEM规范来实现清除相应的DTC组功能。
(12)DemIndicator
该容器包含警告指示器
DemIndicatorID:定义警告指示器的内部标识符。
(13)DemMILGroup
该容器包含MIL组
(14)DemNvRamBlockId
该容器包含NvRam块,前提是开启NvRam写功能
DemNvRamBlockIdIndex:定义NvRam块的编号。若DemNvRamBlockIdType为ADMIN、STATUS、MIRROR、PERMANENT、FREEZEFRAME、OBDIUMPR、DEBOUNCE、AVAILABILITY、DTR、CYCLECOUNTER、AGING类型,不需要配置该参数。若DemNvRamBlockIdType为PRIMARY、SECONDARY、TIMESERIES类型,需要配置该参数,同时每个类型的ID标识都是完整连续的。
DemNvRamBlockIdRef:引用Nvm模块
DemNvRamBlockIdType:定义NvRam块的类型。
ADMIN: 必须配置
STATUS: 必须配置
MIRROR: 当DemMaxNumberEventEntryMirror数量大于0时才需要配置
PERMANENT: 当DemMaxNumberEventEntryPermanent数量大于0时才需要配置
FREEZEFRAME: 当DemOBDSupport==true&& DemOBDLegislation == OBDII时才需要配置
OBDIUMPR: 当DemOBDSupport ==true&& 配置DemRatioId容器时才需要配置
DEBOUNCE: 当事件为计数消抖同时DemDebounceCounterStorage==TRUE时才需要配置
AVAILABILITY: 当event availability status存储在Nvm中(DemAvailabilityStorage==TRUE)时才需要配置
DTR: 当DemOBDSupport ==true&&(配置DemDtr容器|| DemMaxNumberEventEntryPermanent > 0)时才需要配置
AGING: 当老化数据存储在Nvm(demsupportagingforalldtc ==TRUE)中|| DemDataElementInternalData == AGED_COUNTER时才需要配置
CYCLECOUNTER: 当周期计算器数据存储在Nvm(DemSupportStorageIndependentCycleCounters ==TRUE)中时才需要配置
下面的三个类型可以多次存在
PRIMARY: DemMaxNumberEventEntryPrimary存在时需要配置,同时ID需要连续
SECONDARY: DemMaxNumberEventEntrySecondary存在时需要配置,同时ID需要连续.
TIMESERIES: DemMaxNumberTimeSeriesSnapshots存在时需要配置,同时ID需要连续.
(15)DemOperationCycle
该容器包含dem的运行周期
DemOperationCycleAutomaticEnd:定义是否支持自动结束运行周期。若开启,在Dem_Shutdown或Dem_Init中会自动结束运行周期;若关闭,Dem必须通过Dem_SetOperationCycleState设置DEM_CYCLE_STATE_END才能结束运行周期。
注:只有DemOperationCycleStatusStorage设置为true时,该配置才有效。
DemOperationCycleAutostart:定义是否支持自动开启运行周期。(不支持该配置)
DemOperationCycleType:定义运行周期的类型。
(16)DemRatioId
该容器包含OBD特定的比率Id配置
(17)DemStorageConditionGroup
该容器包含存储DTC数据的条件检测组,前提是开启存储条件检测功能
DemStorageConditionRef:引用DemStorageCondition容器
(18)DemStorageCondition
该容器包含存储DTC数据的条件检测
DemStorageConditionId:定义StorageCondition标识符
DemStorageConditionStatus:定义StorageCondition初始状态
(19)DemEventMemorySet
该容器包含Dem事件内存的相关信息
DemClearDtcNotificationFnc:定义清除DTC的通知函数
DemClearDtcNotificationTime:定义清除DTC的通知时机。FINISH:清除完成后通知;START:开始清除时通知。
(20)DemPostbuild
该容器包含实现变量PostBuild相关配置,仅对实现PostBuild-Loadable有意义。
DemEventAvailableDefaultSupport:定义是否使用Available默认值。若开启,Dem_Init会调用DemEventAvailable配置的默认值。若禁用,Dem_Init不改变Available状态。
DemMaxNumberDtr:定义扩大存储DTR元素的最大数量
DemMaxSizeFreezeFrame:定义扩大存储快照数据的最大数量
DemMaxSizeGlobalFreezeFrame:定义扩大存储全局快照数据的最大数量
总结
以上是Dem模块通用容器配置,我们仅仅用到其中一部分配置,很多配置还需具体实践。