【车载开发系列】Autosar DEM基本概念
Autosar DEM基本概念
- 【车载开发系列】Autosar DEM基本概念
- 一. 诊断事件管理(DEM)概念
- 二. DEM的主要作用
- 1、汽车检修提供数据
- 2、汽车错误状态处理提供依据
- 三. DEM模块及关联模块关系
- 1. 功能禁止模块FIM
- 2. SWC和BSW
- 3. NvM非易失性存储
- 4. 诊断通信管理DCM
- 5. EcuM
- 四. DEM各种子功能
一. 诊断事件管理(DEM)概念
诊断事件管理(Diagnostic Event Manager, DEM)模块作为AutoSar诊断模块的重要组成部分,主要负责处理和存储诊断事件(错误)和关联数据。
DEM模块相关的标准主要包括两部分:ISO 14229(UDS,汽车诊断遵循的主要标准)和ISO 15031(OBD,该标准制定较早主要针对排放相关的诊断)。
二. DEM的主要作用
DEM模块主要目的是为汽车制造商和零部件供应商定义通用的诊断故障存储功能(diagnostic fault memory)。
1、汽车检修提供数据
汽车售后会通过诊断仪去读取诊断仪读取诊断数据,主要包括诊断故障码(DTC)、扩展数据及冻结帧等。根据故障码能够判断出出现故障的汽车部件,根据具体的关联数据可以读到出现故障的时间以及当时的ECU的一些状态数据(记录易于判断故障原因的数据)
2、汽车错误状态处理提供依据
故障信息是ECU的运行重要依据,出现影响功能的故障时,应对功能禁止或功能降级以保护ECU或者负载。下面举两个例子:
1)功能禁止:当电机出现短地这种情况时,处于保护负载及ECU的目的应该关断输出
2)功能降级:如车窗反复操作时,车窗电机出现温度升高的情况,处于保护会将温度分为几个保护level,在这几个level中分别禁止相应的功能(如自动上升、自动下降等)
3)汽车重要故障显示:某些重要组件出现出现问题,需要警示用户(仪表盘上显示或者中控屏显示等)避免出现安全事故,主要看OEM如何定义这些故障等级。
三. DEM模块及关联模块关系
DEM模块向DCM模块提供故障信息(DTC),DEM模块给应用层和BSW的其他模块提供了接口。
诊断事件管理模块(DEM)是Autosar架构的重要组成部分,各功能模块之间存在依赖关系,对于各部分完整关系可以查阅AUTOSAR_SWS_DiagnosticEventManager文档,及相关联部分的文档(ClassicAutosar标准文档下载地址)。
诊断事件管理器(Dem)在软件组件(SWC)和基本软件(BSW)模块中处理和存储监视器检测到的事件。存储的事件信息可通过与软件组件(SWC)和基本软件(BSW)模块的接口访问。
1. 功能禁止模块FIM
功能禁止模块(FIM, Function Inhibition Manager)
在监控状态发生变化时,Dem通知和更新功能抑制管理器(FiM),根据指定的依赖关系停止或释放功能实体。简而言之,就是根据检测到的DTCs来确定是否禁用或者打开某些功能模块。
2. SWC和BSW
在软件组件(SWC, Software components)和基础软件模块(BSW, Basic Software)检测到监控对象状态变化时,通知DEM模块更新数据,以及将错误状态数据通知给监控器以警示状态呈现给用户(状态位warning Indicator)。
简而言之,SWC和BSW可以充当错误检测的功能,还有就是Monitror模块可以通过渠道把一些重要错误(OEM或者标准规定)呈现给用户。BSW也会给DEM报故障。标准接口给DEM报故障,故障内容如NVM写入失败或者排队任务数溢出或者校验错误。该类故障在DEM中的debounce方式是no debounce,不需要debounce,所以故障状态只有DEM_EVENT_STATUS_FAILED或者DEM_EVENT_STATUS_PASSED。
3. NvM非易失性存储
非易失性存储管理(NVM, NVRAM Manager)
NVRAM块分配给Dem,由Dem使用以实现永久存储UDS状态信息和相关数据(例如,开机后复位)。
简而言之,NVM给存储DTCs提供永久空间,避免在断电或者复位的过程中造成诊断数据丢失。
DEM中又有大量数据需要存储在非易失性存储模块(如Dflash、EEPROM)中,但两者的交互关系都发生在上电初始化(startup)和下电(shutdown)过程中,当然,如果没有NvM_WriteAll的过程,也可以在运行过程中写入。
DEM需要存储在非易失性存储模块的数据包括19服务中会用的相关数据(如第一次出现的故障,第一个confirm的故障、最新的故障等等)、primary fault memory中的数据、mirror memory中的故障、OBD相关的数据、冻结帧、预存的数据、Debounce的状态(甚至是debounce counter)等,这些数据会在NVM_Readall的时候读取到DEM的RAM中,下电的时候会在NVM的writeall时从DEM的target RAM写入非易失性存储区(non-volatile memory)。
4. 诊断通信管理DCM
诊断通信管理(DCM, Diagnostic Communication Manager)。
DCM模块处理来自外部测试人员或机载测试系统的诊断请求,转发来自外部诊断扫描工具的请求,并进一步负责响应消息的组装(DTC,状态信息等),之后将传输到外部诊断扫描工具。
简而言之,两个主要功能:
1)读取DTC(0x19服务)
2)清除DTC(0x14服务)
DCM中有ReadDTCInformation和ClearDiagnosticInformation这两个服务都是都是要从DEM中读取信息或者传递命令
在19服务的自服务的处理函数里面,首先给DEM传递DTC和该DTC所属的memory类型,来获得DTCStatus;然后获得冻结帧(快照)的数据大小,因为数据大小和数据内容是提前配置好的,也可标定。最后调用
获取冻结帧。但是DCM和DEM是两个不同的任务,所以一般是异步执行,DCM只负责把请求命令和写入目标给到DEM,在DEM任务中轮询DCM的任务请求,并实现数据的填充,后通知DCM任务完成。DCM再通过肯定相应回复数据。
5. EcuM
它的全称是ECU State Management。用来管理ECU的状态。
ECUM主要负责在不同时序调用DEM的初始化工作,DEM初始化应包括对每个故障的debounce status做处理;初始化fault memory相关数据;初始化DEM中存储的BSW的故障数据。
四. DEM各种子功能
DEM内部又分为很多子模块,每个子模块分工不同,任务明确。INIT负责对DEM内部变量根据配置内容进行初始化。debounce负责对事件发生故障的有效性和事件表现正常的有效性的做滤波判断。
primary fault memory负责存储当前发生的故障的DTC及相关数据,如冻结帧、扩展数据等。Operational Cycle Management负责管理各种操作循环的判断,如对于OBD-related ECU中OBD drving cycle开启时才能故障状态才能进入confirm的状态,这也和项目配置有关