AUTOSAR 入门教程 15:Diagnostic

理解 AUTOSAR 诊断栈四大模块——DCM、DEM、FIM、DET——各自的职责边界,以及它们如何协作完成从故障检测到功能抑制的全流程。

车载诊断 是汽车电子系统可靠性的最后一道防线。当传感器故障、通信超时或内存校验失败时,系统必须及时发现、记录并采取应对措施。AUTOSAR 把诊断能力拆分为四个模块,各管一段:DCM 管诊断请求的接收和响应,DEM 管故障事件的记录和生命周期,FIM 管故障后的功能抑制,DET 管开发阶段的错误追踪。这四个模块不是孤立的,而是通过事件和状态形成一条完整的数据流。

从故障检测到功能抑制

用一个实际场景串起四个模块的协作。假设 ECU 检测到某个温度传感器信号异常:

  1. 应用层 SWC 或 BSW 模块调用 Dem_ReportErrorStatus() 向 DEM 报告故障事件
  2. DEM 通过去抖动机制过滤瞬态抖动,确认故障后将 DTC 状态更新为"已确认"
  3. DCM 收到诊断仪的 0x19 服务请求后,从 DEM 查询 DTC 信息并返回给诊断仪
  4. DEM 通知 FIM 该故障事件已确认,FIM 查表发现有功能依赖该传感器,自动抑制相关功能

这条链路的关键在于:DEM 是信息中枢,DCM 是对外窗口,FIM 是安全守门人,DET 是开发助手。下面分别看每个模块的职责。

DCM:诊断请求的入口与出口

DCM(Diagnostic Communication Manager)是诊断服务的通信枢纽。它通过 PDU Router 接收来自诊断仪的请求(走 CanTp 通道),解析服务 ID 后分发处理,再把响应原路返回。DCM 采用网络无关设计——不管请求从 CAN、LIN 还是以太网来,处理逻辑都是一样的。

DCM 内部分为三个子模块:DSL 管理会话状态和安全级别,DSD 负责根据 SID(Service ID)调度到对应的处理函数,DSP 执行具体的诊断服务逻辑。这个三层结构让 DCM 可以同时处理多个诊断请求而不混淆。

DEM:故障事件的信息中枢

DEM(Diagnostic Event Manager)是四个模块中最核心的一个。它管理所有故障事件的生命周期:从事件上报、去抖动过滤、状态更新到 DTC 存储。DEM 使用 NvM 服务持久化 DTC 数据——即使 ECU 断电重启后故障记录依然存在。

DEM 将 DTC 信息存储在事件内存(Event Memory)中,通过 NvM 模块实现持久化。事件内存分为三类:主内存(Primary Memory) 存储所有已确认的 DTC,用户内存(User Memory) 由 OEM 自定义用途,镜像内存(Mirror Memory) 用于存储来自其他 ECU 的 DTC。每类内存有独立的大小限制。

DEM 对外提供两类关键接口:给 SWC/BSW 的事件上报接口(报告故障发生或恢复),以及给 DCM 的 DTC 查询接口(读取故障码和状态)。DEM 还会给 FIM 发通知——当某个故障确认后,FIM 需要知道以便决定是否抑制关联功能。

FIM 与 DET

FIM:故障后的功能抑制

FIM(Function Inhibition Manager)的核心概念是功能标识符(FID)。每个 FID 代表一个可控制的功能,配置时指定它依赖哪些故障事件。DEM 确认故障后通知 FIM,FIM 查表判断哪些 FID 受影响,然后把抑制状态通过 RTE 通知给对应的 SWC。

这个机制的价值在于解耦:SWC 不需要自己判断"传感器坏了所以我的功能不能用",FIM 根据配置自动完成这个判断。OEM 可以通过修改 FID 与故障事件的映射关系来调整抑制策略,不需要改应用代码。

DET:开发阶段的错误追踪

DET(Development Error Trap)与前三个模块不同,它只在开发阶段使用。DET 提供错误检测、可配置的错误钩子函数和错误信息检索接口。当 BSW 模块检测到参数越界、状态非法等开发错误时,通过 DET 记录错误信息,帮助开发者在集成测试阶段快速定位问题。

建议在项目初期就配置好 DET,包括错误钩子函数和错误计数器。开发阶段这些信息是排查问题的利器,量产时可以通过条件编译关闭。

四模块协作全景

再看一个更完整的场景:诊断仪发起 0x19 服务读取故障码。请求从 车载网络 到达 CanTp,经 PDU Router 路由到 DCM。DCM 的 DSD 解析出 SID 为 0x19(ReadDTCInformation),交给 DSP 处理。DSP 调用 DEM 接口查询 DTC 列表,DEM 返回已确认的故障码和状态,DCM 将结果封装为响应报文原路返回给诊断仪。

同时,DEM 在确认故障时已经通知了 FIM,FIM 抑制了依赖该传感器的功能。整个过程是自动化的:应用层上报故障,DEM 记录并通知,DCM 对外响应,FIM 执行抑制——四个模块各司其职,通过标准化接口协作。

实践建议