车载软件架构 --- AUTOSAR AP/CP中诊断的区别
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:
周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧!
旧人不知我近况,新人不知我过往,近况不该旧人知,过往不与新人讲。纵你阅人何其多,再无一人恰似我。
时间不知不觉中,来到新的一年。2024结束,2025开始新的忙碌。成年人的我也不知道去哪里渡自己的灵魂,独自敲击一些文字算是对这段时间做一个记录。
一、什么是诊断
首先,举个一个简单的例子来说明诊断的重要性:
想象你的汽车是一个经常生病的孩子,每当它出现问题时,它会哭泣(警告灯亮起)。而诊断技术就像是医生的听诊器,帮助你准确找出宝宝为什么哭泣,从而迅速治疗。
职责划分:在实际开发过程中,OEM的电子电器架构部门(EE),会在某个项目节点之前向各ECU的供应商提供相应的诊断调查表作为诊断开发的需求输入。供应商内部的系统工程师则负责根据诊断调查表设计ECU内部诊断架构和细节实现。
诊断调查表里一般包括通讯地址、DID、DTC、RID、快照等等一些服务要求,这些基本概念不多赘述。诊断依赖于通讯进行实现,下面主要聊聊这些需求在AP和CP中的实现。
一、DEM DCM FIM
在CP中,诊断主要依赖DCM/DEM/FIM来实现。在车载Classic AUTOSAR(汽车开放系统架构)中,诊断功能主要依赖DCM(Diagnostic Communication Manager,诊断通信管理器)、DEM(Diagnostic Event Manager,诊断事件管理器)和FIM(Function Inhibition Manager,功能抑制管理器)三个核心模块协同实现。以下详细解析各模块的功能及协作机制:
1、 DCM(诊断通信管理器)
作为诊断系统的“通信中枢”,负责管理与外部诊断工具(如诊断仪)的交互。支持UDS(统一诊断服务,ISO 14229)协议,提供读取故障码(DTC)、清除故障码、读写数据等服务。控制诊断会话的安全等级(如默认会话、编程会话)和通信模式(如全通信、静默通信)。:确保诊断请求与响应的时序正确性,避免通信阻塞。
子模块如下:
-> DSL(Diagnostic Session Layer):处理诊断请求/响应数据,监控时序。
-> DSD(Diagnostic Service Dispatcher):分配诊断服务请求至对应处理单元。
-> DSP(Diagnostic Service Processor):执行具体的诊断服务逻辑。
2、DEM(诊断事件管理器)
作为诊断系统的“故障大脑”,负责故障事件的检测、记录与状态管理。
-> 故障码(DTC)管理:接收来自传感器或软件组件(SWC)的故障上报,生成标准DTC(如P0101表示空气流量传感器故障);
-> 故障状态跟踪:监控故障的生命周期(如故障发生、确认、恢复),记录故障发生时的环境数据(如车速、温度)作为“冻结帧”;
-> 存储与恢复:将故障信息存储至非易失性存储器(NVM),确保下电后数据不丢失。
当DCM收到外部工具的“读取DTC”请求时,DEM提供故障码列表及关联数据。清除故障码操作通过DEM更新NVM中的故障状态。
3、FIM(功能抑制管理器)
作为诊断系统的“安全卫士”,在故障发生时抑制关键功能,避免进一步风险。
功能:
-> 功能抑制决策:根据DEM上报的故障严重程度,决定是否禁用相关功能(如发动机扭矩限制、辅助驾驶关闭);
-> 抑制规则配置:通过预定义的“故障-功能”映射表(如“电机过热故障”触发“动力输出限制”),实现灵活的策略管理。
与DEM协作:
DEM检测到严重故障后,通知FIM触发功能抑制。FIM通过修改功能权限状态(如设置FID标志位),阻止相关软件组件(SWC)执行危险操作。
协同工作流程示例
-> 故障检测:车载传感器检测到电机温度超限,软件组件(SWC)向DEM上报故障事件;
-> 故障记录:DEM生成DTC(如P1234),记录冻结帧数据,并更新NVM存储;
-> 功能抑制:DEM通知FIM故障等级,FIM根据规则禁用电机全功率输出;
-> 外部诊断:维修技师通过诊断仪(DCM接口)读取DTC及冻结帧,定位故障根源。
总结
DEM (Diagnostic Event Manager):
想象DEM是一个“日记作者”,每当车辆中的某个部分出现问题,它就会在日记中记下这个问题(诊断事件)。DEM会记录这些问题,并将它们传递给NVRAM Manager来保存。
在我们的类比中,NVRAM Manager就像是一个“书柜”,专门存放DEM写的日记。这样,即使车辆关机,这些日记(诊断事件)也不会丢失,因为它们被保存在EEP或Flash中。
DEM(诊断事件管理器)