一、架构与术语解释
首先简单介绍以下诊断(Diagnostics),由于百度百科中就有很好的解释,这里直接引用一下:
汽车诊断技术是凭借仪器设备对汽车进行性能测试和故障检查的方法和手段,它能够测试出汽车各项工作性能指标,并可在汽车或总成不解体的情况下发现故障及其产生的原因。主要用于汽车保养前的诊断和汽车维修后的质量检验。车辆监理部门也用来对车辆进行定期监督检验。
但是上文中讲的是诊断是做什么的,但是我们应该要了解诊断是如何实现的。
1. ECU故障发生了,那么在事后我们去维修的时候,维修师傅如何知道是什么出问题了呢?那么就需要将发生的故障记录下来,所以就要将故障的内容记录到EEP或者Flash中,所以下图中将会用到NVRAM Manager及其更底层的模块(由于之前介绍过,这里省略掉了)
2. 维修师傅是不可能直接读取EEP或者Flash中的内容的,因此还是需要用到CAN传输数据到维修师傅的诊断设备上的,因此这里就有了
communication的一些模块。但是这些信息并非是应用层直接下发,所以这里用的是DCM而非COM
3. 故障发生的时候,肯定是需要做出应急反应的,所以就还需要对故障做处理的功能
FIM: Function Inhibition Manager,功能禁止管理。也就是当一些error出现的时候,禁止一些功能。比如当检测到控制器过电流的时候,关闭MOS或IGBT,防止炸管。就是说有一部分SWC是需要使能条件的,这些条件取决于故障内容(就是来源于下面的DEM中),而FIM负责根据故障内容关闭一些SWC或执行一些SWC
DEM: Diagnostic EventManager,诊断事件管理。就是用来记录和存储诊断事件的,下面连接NVRAM Manager,就是将这些诊断事件记录到EEP或者Flash中
DCM: Diagnostic Communication Manager,诊断通信管理。实现诊断通信协议,我们通常说的UDS协议(即ISO14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又是发什么指令),就是在这里配置的
其他模块:
前面介绍过了,不再赘述,不清楚的还是再回头熟悉一遍:存储、通信
二、工作流程
1. 绿色箭头:就是对故障做出快速响应的功能。这里首先由应用层传输数据到DEM,DEM判断出是哪个故障,之后发送给FIM;FIM立即做出判断,通过回调函数通知SWC或者轮询的方式禁止SWC
2. 黄色箭头:就是将故障记录的功能。接上面故障由应用层传输数据到DEM,DEM一边是发送给FIM,另一边是发送给NVRAM Manager,然后将故障记录到EEP或者Flash中,方便以后维修诊断