什么是诊断
首先,举个一个简单的例子来说明诊断的重要性:想象你的汽车是一个经常生病的孩子,每当它出现问题时,它会哭泣(警告灯亮起)。而诊断技术就像是医生的听诊器,帮助你准确找出宝宝为什么哭泣,从而迅速治疗。职责划分:在实际开发过程中,OEM的电子电器架构部门(EE),会在某个项目节点之前向各ECU的供应商提供相应的诊断调查表作为诊断开发的需求输入。供应商内部的系统工程师则负责根据诊断调查表设计ECU内部诊断架构和细节实现。
流程简笔画 图来源于作者
诊断调查表里一般包括通讯地址、DID、DTC、RID、快照等等一些服务要求,这些基本概念不多赘述。诊断依赖于通讯进行实现,下面主要聊聊这些需求在AP和CP中的实现。
1.DEM DCM FIM
在CP中,诊断主要依赖DCM/DEM/FIM来实现。
Diag在CP中的位置 图来源于Vector
DEM (Diagnostic Event Manager):
想象DEM是一个“日记作者”,每当车辆中的某个部分出现问题,它就会在日记中记下这个问题(诊断事件)。DEM会记录这些问题,并将它们传递给NVRAM
Manager来保存。
在我们的类比中,NVRAM Manager就像是一个“书柜”,专门存放DEM写的日记。这样,即使车辆关机,这些日记(诊断事件)也不会丢失,因为它们被保存在EEP或Flash中。
DCM (Diagnostic Communication Manager):
DCM可以被视为一个“翻译官”。当外部设备(如OBD扫描器)想要与车辆通信并获取诊断信息时,它们会发送特定的命令或请求。DCM的任务是确保这些命令被正确解读和执行。
在UDS协议中,比如当你想要读取故障码,你需要发出特定的请求。DCM就会根据这个请求,从“日记作者”(DEM)处获取相应的信息,并翻译成外部设备能够理解的语言(通讯方式这里比较复杂)返回。
FIM (Function Inhibition Manager):
FIM就像是一个“警卫”。当“日记作者”(DEM)记录到某些特定的问题时,FIM会确保车辆的某些功能被禁用,以防止进一步的损害。
例如,如果控制器检测到故障,FIM就像一个负责安全的警卫,它会迅速关闭可能导致问题的部分(如shutdown某个SWC),以防止更大的损坏。
故障响应流程:首先,应用层SWC将数据传递给DEM。随后,DEM分析并确定具体的故障,进而通知FIM。FIM在接到通知后,迅速判定并选择直接回调SWC或采用轮询方式来禁用SWC。
故障存档流程:应用层的SWC首先传递故障数据至DEM。DEM不仅会转发给FIM,还会与NVRAM
Manager交互,确保将故障信息储存在EEP或Flash内,这有助于未来的维护和诊断工作。
2.DM
在AP中,诊断主要依赖DM实现,简单来说DM集成了DCM/DEM/FIM的功能。
DM是AUTOSAR AP的诊断管理器。它是一个中介,负责接收和发送诊断信息,包括处理来自外部工具的诊断请求和与车辆内部其他系统的交互。简单说,就像医院的接待员,负责与患者通讯并根据病情给出处理建议或者引导到相关科室。