前面
看了几篇AutoSAR方面的研究生论文,感觉学到了不少东西,这里做个总结分享。
今天分享这篇来自浙江大学 胡琦的《基于 AUTOSAR 的汽车故障诊断系统的设计与实现》。
背景知识
OBD(On-Board Diagnostic)诊断技术
OBD 诊断技术通过对故障码(Diagnostic Trouble Code,以下简称 DTC)的存储与读取,控制汽车仪表板上的故障指示灯的亮灭状态,反映系统的工作状况,并通过记录的故障码检测故障发生的位置和原因。
汽车电控诊断原理
汽车完整的故障诊断包括两个部分:
车内在线诊断系统—此系统用于监测车身内部的传感器和电子控制单元的工作情况,并根据这些数据信息自动检测系统故障,并将故障以故障代码的形式保存,同时点亮相应故障灯提醒驾驶人员。
车外离线诊断系统—此系统通过向车内在线诊断系统发送服务请求,读取相应的故障码信息以及清除故障码,并完成诊断协议提供的其他服务
说大白话: 车内在线诊断就是自检,出问题了赶紧亮起警示灯,然后把出现故障的代码以及相关的数据存起来(非易事存储器中); 车外离线诊断就是修车,维修工程师通过一些设备读取DTC来判断车哪里坏了,为啥会坏,核心难点在于诊断设备和ECU之间的通信方式,就是诊断协议该怎么搞。
诊断协议
ISO(International Standards Organization)
SAE(Society of Automotive Engineers)
美国使用 SAE 标准体系,美国之外的多数国家(包括中国)使用 ISO 标准体系。
AutoSAR的诊断功能
FIM 模块的作用是根据 DEM(Diagnostic Event Manager)报告的事件状态使
能或禁止软件组件内部的功能实体。
DEM 模块遵循的标准与 DCM 相同,负责直接处理与 DTC(Diagnostic Trouble Code)相关的服务。
当应用软件组件中的 Monitor Function(故障诊断算法)检测到故障时,将通知 DEM 模块处理和存储相应的故障诊断事件(由 Event ID 进行标识)。
如果经过判定确诊为故障,则调用 NVRAM Manager(非易失存储器管理器),提供的接口将其存取到非易失存储器中(如 Flash 或者 EEPROM),同时通知应用层软件点亮故障灯,提醒驾驶人员相应的故障信息。
HIL硬件在环
HIL 不是将 ECU 连接到实车上,而是连接到 HIL 仿真设备上进行测试。
(就是我没有车,但我可以用HIL设备模仿车的状态)
下面这个图更准确:
诊断系统流程
诊断功能模块DCM\DEM
DCM收到AUTOSAR支持的OBD服务请求时,通过调用DEM 、应用层软件组件或者其他基础软件模块提供的接口,进行相应的故障诊断处理操作。
DCM
为了定义DCM的功能,AUTOSAR 将DCM 划分成3个子模块:DSL、DSD和 DSP 子模块。
DSL 子模块确保诊断请求和响应的数据流,监控诊断协议的时间和管理诊断状态。
DSD 子模块处理诊断数据流,其主要负责从网络上接收一个新的诊断请求并转发给一个数据处理器,在数据处理结束以后,发送诊断响应到网络。
DSP 子模块主要处理相应的诊断服务的请求。
DEM
DEM 负责对故障诊断数据(如故障冻结),进行处理、保存以及管理。
为了读取和保存故障信息,DEM 需要通过 NM 提供的服务访问非易失存储器。同时,DEM 向 DCM 提供访问故障数据的接口,如读取和清除故障码。
故障诊断算法
故障诊断算法,也称故障监测算法,其要点是不断检测系统的异常之处,从中找出故障:
一方面采取临时补救措施,使汽车能够跋行回家;
一方面将故障信息记录在非易失存储器上,使得维修人员使用离线诊断工具检查故障原因,必要时还点亮故障指示灯告诉驾驶员。
故障诊断算法不断地将ECU 的指令和系统的反应结果进行比较,同时检查各个传感器的信号是否可信借此确定是否存在某一种故障。
通讯协议
AUTOSAR COM 从上到下包括五层协议,分别是 COM 层、PDU Router 层、CAN TransPort 层、Interface 层、Driver 层,其中 Driver 层包括了控制器与收发器的驱动。
DCM 通过调用 PDU Router 提供的服务接口,将诊断数据发送给 AUTOSAR COM。AUTOSAR COM 负责转发 DCM 与上位机诊断软件之间的诊断数据,不对数据进行任何修改。
主要内容
探索汽车故障诊断系统软件开发的新方法:使软件开发人员不需要关注底层硬件和通信的实现细节,只需要专注于软件本身功能的设计。
诊断功能模块的具体实现
诊断通信管理
首先使数据结构,其他模块与自己模块的。
其次是关键功能的操作流程:DCM启动传输、DCM处理当前请求、返回的积极与消极响应、重要接口的设计。
诊断事件管理
诊断机制:
DEM 对一个事件的诊断是由 DEM 模块和 SWC共同完成的。
SWC 中的Monitor Function对需要检测的部分进行实时监控,当检测到错误时,就需要将这个错误报告给 DEM 模块并判断是否出现故障。
诊断事件的处理与存储:
当一个事件的状念发生了变化时,DEM 需要通知相关的SWC 指示模块和一些软件模块来显示或处理故障。DEM 也需要能够使其他模块能够随时查询和改变事件的状态。
在诊断出故障之后,DEM 会根据收集到的一些信息和相关标准生成一个DTC,从这个 DTC 可以得到这次故障的一些相关信息,DCM 要取得故障的一些数据时也是通过 DTC 来获取的。
仿真测试环境
针对对象有点老了,氧传感器故障检测,就是燃油车上经常安装三元催化器对汽车排放的废气进行净化,但混合气的空燃比要保证在理论值附近,也就是说要能实时的检测到排气中的氧含量,所以各大厂商都加装了氧传感器。
所以针对这个氧传感器有一套故障模拟算法模型。
…………
更细节的就不说了,毕竟是时代的产物。
最后
其实中间很多的细节,但自己看的也不是很明白,这里只记录了一些简单的知识点。