Dem(Diagnostic Event Manager)管理 ECU 内的诊断事件(DTC, Diagnostic Trouble Code)。Dem 与 SWC 配合:
Dem_SetEventStatus() 上报诊断事件(TestFailed/Passed/Prepassed/Prefailed);| 缩略语 | 描述 |
|---|---|
| DTC | Diagnostic Trouble Code(诊断故障码) |
| UDS | Unified Diagnostic Services(统一诊断服务,ISO 14229) |
| OBD | On-Board Diagnostics(车载诊断,ISO 15031) |
| IUMPR | In-Use Monitor Performance Ratio(使用中监测器性能比) |
| Freeze Frame | 快照数据(事件发生时的环境参数) |
| Extended Data | 扩展数据(事件附加信息) |
| Event Status Bits | 事件状态位(TestFailed/TestFailedThisOpCycle/ConfirmedDTC/PendingDTC/...) |
| Operation Cycle | 操作循环(Power/Ignition/Driving/...) |
| Aging | 老化机制(DTC 在无故障循环后自动清除) |
| Displacement | 位移机制(DTC 优先级) |
AUTOSAR_SRS_DiagnosticAUTOSAR_SWS_DiagnosticCommunicationManager(Dcm 配合)AUTOSAR_SWS_NvRAMManager(DTC 持久化)AUTOSAR_SWS_RTE(应用层接口)Dem 为 BSW 服务层模块;DTC 状态符合 ISO 14229 标准位定义;OBD IUMPR 符合 ISO 15031。
Dem 依赖 Dcm(诊断服务)、NvM(非易失存储)、FiM(功能抑制)、DET、DEM、SWC(应用层调用 SetEventStatus)。
SWS_Dem_NNNNN 规范项 ID 约 1000+ 条(编号 00001-91001)。
每个 DTC 有 8 个状态位(符合 ISO 14229):
| 位 | 名称 | 含义 |
|---|---|---|
| Bit 0 | TestFailed | 最后一次测试结果为失败 |
| Bit 1 | TestFailedThisOperationCycle | 当前操作循环内测试失败 |
| Bit 2 | PendingDTC | 待定 DTC(本次循环失败但未确认) |
| Bit 3 | ConfirmedDTC | 已确认 DTC |
| Bit 4 | TestNotCompletedSinceLastClear | 自上次清除以来测试未完成 |
| Bit 5 | TestFailedSinceLastClear | 自上次清除以来测试失败 |
| Bit 6 | TestNotCompletedThisOperationCycle | 当前操作循环内测试未完成 |
| Bit 7 | WarningIndicatorRequested | 警告指示灯请求(MI) |
IUMPR = 计数器(Numerator)/ 分母(Denominator),反映 OBD 监测器的实际使用情况:
事件发生时,Dem 捕获环境参数(车速/发动机转速/电池电压/环境温度/...)作为快照。Dem 支持:
Dem 支持多种操作循环:
DEM_E_UNINIT / DEM_E_ALREADY_INITIALIZED / DEM_E_PARAM_POINTER / DEM_E_PARAM_INVALID / DEM_E_PARAM_CONFIG / DEM_E_PARAM_DTC / DEM_E_PARAM_EVENT / DEM_E_PARAM_CONFIG_PTR 等 20+ 个。
DEM_E_NV_STORAGE_ERROR / DEM_E_MEMORY_ERROR 等。
| API | 功能 |
|---|---|
| Dem_Init | 初始化 Dem |
| Dem_Shutdown | 关闭 Dem(保存数据) |
| Dem_MainFunction | 主函数(事件处理调度) |
| API | 功能 |
|---|---|
| Dem_SetEventStatus | 设置事件状态(应用调用) |
| Dem_ResetEventStatus | 重置事件状态 |
| Dem_GetEventStatus | 获取事件状态 |
| Dem_ClearEventStatus | 清除事件状态 |
| Dem_GetEventFailed | 获取事件失败状态 |
| Dem_GetEventTested | 获取事件已测试状态 |
| API | 功能 |
|---|---|
| Dem_SetDTC | 设置 DTC 状态 |
| Dem_DisableDTCSetting | 禁用 DTC 设置 |
| Dem_EnableDTCSetting | 启用 DTC 设置 |
| Dem_ClearDTC | 清除 DTC |
| Dem_DisableDTC | 禁用单个 DTC |
| EnableDTCRecordUpdate | 启用 DTC 记录更新 |
| API | 功能 |
|---|---|
| Dem_SelectFreezeFrameData | 选择快照数据 |
| Dem_GetNumberOfFreezeFrameRecords | 获取快照记录数 |
| Dem_GetFreezeFrameData | 获取快照数据 |
| Dem_UpdateFreezeFrameData | 更新快照数据 |
| Dem_ClearFreezeFrameData | 清除快照数据 |
Dem_GetExtendedData / Dem_UpdateExtendedData / Dem_ClearExtendedData / Dem_GetSizeOfExtendedData 等。
| API | 功能 |
|---|---|
| Dem_SetIUMPRDenCondition | 设置 IUMPR 分母条件 |
| Dem_GetIUMPRDenCondition | 获取 IUMPR 分母条件 |
| Dem_RepIUMPRFaultDetect | 上报 IUMPR 故障检测 |
| Dem_RepIUMPRDenRelease | 上报 IUMPR 分母释放 |
| Dem_GetIUMPR | 获取 IUMPR 值 |
Dem_DcmReadDataOfPID01-91 / Dem_DcmGetDTCOfOBDFreezeFrame / Dem_DcmGetAvailableOBDMIDs / Dem_DcmGetNumTIDsOfOBDMID / Dem_DcmGetDTRData / Dem_SetDTR / Dem_GetDTCSeverityAvailabilityMask / Dem_GetB1Counter 等。
Dem_J1939DcmSetDTCFilter / Dem_J1939DcmGetNumberOfFilteredDTC / Dem_J1939DcmGetNextFilteredDTC / Dem_J1939DcmFirstDTCwithLampStatus / Dem_J1939DcmGetNextDTCwithLampStatus / Dem_J1939DcmClearDTC / Dem_J1939DcmSetFreezeFrameFilter / Dem_J1939DcmGetNextFreezeFrame / Dem_J1939DcmGetNextSPNInFreezeFrame / Dem_J1939DcmSetRatioFilter / Dem_J1939DcmGetNextFilteredRatio / Dem_J1939DcmReadDiagnosticReadiness1-3 等。
Dem_ReadDataOfPID01 / Dem_GetDataOfPID21 / Dem_SetDataOfPID21 / Dem_SetDataOfPID31 / Dem_SetDataOfPID4D / Dem_SetDataOfPID4E / Dem_GetCycleQualified / Dem_SetCycleQualified / Dem_SetPtoStatus 等。
共 52 个 API 函数(含 Init/VersionInfo/MainFunction + 各类接口)。
| 容器 | 描述 |
|---|---|
| Dem | 根容器(开发错误检测、版本 API) |
| DemGeneral | 通用配置(DTC 数、操作循环数、OBD 支持) |
| DemConfigSet | 配置集 |
| DemDTC | DTC 定义(ID/严重性/快照/扩展数据) |
| DemEvent | 事件定义(事件 ID → DTC 映射) |
| DemOperationCycle | 操作循环定义(Power/Ignition/Driving/...) |
| DemFreezeFrameClass | 快照类定义(快照数据元素) |
| DemExtendedDataClass | 扩展数据类定义 |
| DemIUMPRGroup | IUMPR 组定义 |
| DemRatioGroup | 比率组定义(OBD 比率) |
| DemOBDClass | OBD 类定义(OBD DTC/PID) |
| DemJ1939DTCClass | J1939 DTC 类定义 |
| DemJ1939SPNClass | J1939 SPN 类定义 |
| DemCallback | 回调函数(应用实现) |
| DemPublishedInformation | 发布信息 |
共 15+ ECUC 容器,含 200+ 配置参数。
Dem_SetEventStatus(EventId, Status) → Dem 更新 DTC 状态位 → 触发快照(如有);Dem_GetDTCStatusAvailabilityMask() → Dcm 构造响应 → Tester;Dem_ClearDTC() → Dem 清除状态/快照/扩展数据 → NvM 持久化;校对轮次:L1 自动校对(2026-06-13)