AUTOSAR是由全球汽车OEM和供应商共同定义的一套支持分布式、功能驱动的汽车电子软件开发方法和电子控制单元上的软件架构标准化方案,其目的是为了应用于不同的汽车和平台,提高软件复用,降低开发成本。
AUTOSAR aims to improve complexity management of integrated E/E architectures through increased reuse and exchangeability of SW modules between OEMs and suppliers.
AUTOSAR aims to standardize the software architecture of Electronic Control Units (ECUs). AUTOSAR paves the way for innovative electronic systems that further improve performance, safety and environmental friendliness.
AUTOSAR体系结构
AUTOSAR BSW
BSW 细化分层
AUTOSAR 中相关的诊断软件模块处于服务层中 ,其主要有FIM(根据诊断结果使能或禁止软件构件内部的功能实体 )、ECU State Manager(ECU 状态管理 )、DCM(诊断通信管理 ) 、DEM(诊断事件管理)、NVRAM Manager(非易失性存储器管理) 。DEM和DCM是诊断中的核心模块 :DEM将故障的故障码和冻结帧存储到存储器中 ,在需要 时将数据提供给DCM;DCM为诊断提供通信服务以及根据外部诊断工具的要求和DEM共同提供诊断服务 ,它会将外部诊断工具所需要的信息从DEM中获取并传递过去。
汽车诊断分为在线诊断(Onboard)和离线诊断(Offboard)两类。
在线诊断通过车内诊断系统对ECU的状态进行监控,故障发生时通过仪表显示告知驾驶员,并在ECU内存储对应的故障码DTC(Diagnostic Trouble Codes)、冻结帧等信息。
离线诊断通过外部诊断工具连接车辆的OBD接口,实现读取或清除ECU内的故障码和冻结帧、复位ECU等功能。
错误处理、报告和诊断是AUTOSAR标准中的重要部分,这些功能和软件模块分布在AUTOSAR的系统服务和通信服务中。
与诊断功能相关的核心软件模块是Diagnostic Event Manager(DEM)和Diagnostic Communication Manager(DCM)。
DCM依据ISO 15765-3和ISO 14229-1标准描述,实现诊断请求报文的解析,响应(正响应和负响应)等功能,负责确保诊断通信数据流,管理诊断会话(Session)和安全访问,用于在设计开发、生产制造、售后运行维护过程中对车内诊断系统和外部诊断工具(如诊断仪)诊断请求的接收、解析处理、响应等功能。
DCM实现OSI 7层模型中5-7层的功能。
在第7层,DCM提供ISO 14229-1道路车辆统一诊断服务(即UDS)。同时,DCM还提供基于SAE J1979和ISO 15031-5的主要与排放相关的OBD $01 - $0A服务,满足轻型车辆OBD法规要求。
在第5层,DCM提供ISO 15765-3(即UDS on CAN)和ISO 15765-4(排放相关的诊断需求)。
在AUTOSAR标准中,DCM模块位于通信服务层,通过PDU Router接收诊断报文,独立于具体网络。
上图5.1中Function Inhibition Manager (FIM) 根据DEM报告的事件状态,确定授权的SWC或者BSW是否使能或禁止对应软体构件内部的功能实体功能。ECU State Manager (EcuM) 负责实现包括DEM在内各基础软件模块的初始化、启动、运行、关闭以及ECU休眠、唤醒等运行状态管理。
故障的诊断是由DEM模块和SWC共同完成的。SWC是AUTOSAR中位于应用层中的软件模块,其中有专门的监测模块对需要检测的部分进行实时监控 ,如果检测到错误,就会将这个错误报告给DEM模块,并判断是否出现故障。
确认一个故障有两种方法:
由监测模块完成,其中有专门的算法进行判断,判断结束之后通过一个参数将结果传递给DEM,如果出现故障,DEM会通过NVRAM Manager将诊断事件存储到FIASH中并通知相关模块;
由DEM来完成 ,和第 1 种方法的主要区别是在监测模块的判断结束之后,这个确诊过程不会立即结束,监测模块会重新进行判断并将结果通知DEM,DEM中有1个Counter 存储判断结果,而且每个诊断事件都会有1个timer,当 timer时间结束或Counter到达某个阈值时,DEM 会确认这个诊断事件是否是故障。此方法可以确保在出现突发状况时不会被诊断为故障而存储下来 ,提高了故障诊断的准确性 。
在AUTOSAR诊断中,相关信息的存储是由DEM负责的。
Event(诊断事件)是DEM对事件的诊断和其相关数据存储的基本单位,不同的Event通过EventID来区分,每个Event都有1个独立的EventID。在SWC报给DEM一个错误并确诊为发生了故障之后,DEM会把这个事情的一些信息和数据存储到FLASH中。每个诊断事件包含的一些基本属性如下:
事件的状态。每个事件都有一个当前状态,DCM、FIM和SWC在采取一些行动时都要先从DEM中获取事件的状态;
DTC(故障码)。DEM会根据故障的信息生成1个DTC,这是诊断标准中对故障的编码,DCM从DEM中获得事件的数据时都是通过DTC进行的,通过DTC,维修人员可以初步了解故障的元件或线路,以及故障的类型;
事件产生的来源;
OBD错误的定义;
故障的指示器和指示方式;
故障相关的数据。
在一个事件确认为故障之后,DEM须将事件的一些相关信息和数据存储到NVRAM中去,需要存储的数据包括FreezeFrame(冻结帧)和Extended Data Record(扩展数据记录),扩展数据记录包括一些软件模块内部的信息(如频率时钟)。冻结帧是一个串行数据的单帧快照,能够准确地指出存储故障码的瞬间汽车的一些运行状态,是故障诊断中非常重要的数据,存储的数据主要包括发动机转速 、冷却水温传感器 ( ECT)信号 、进气温度传感器 (IAT) 信号 、计算发动机负荷和进气压力传感器 ( VSS)信号等 ,冻结帧中存储的数据可以根据制造厂商的要求来配置 。这些数据对故障诊断非常有价值,维修人员在取得这些数据后,根据前面所得到的资料进行对比分析,可准确地判断出具体的故障,从中也可发现一些汽车容易发生的间歇性故障。
如果DEM模块在存储事件信息时使用了镜像内存,在DCM从DEM中取得数据时须进行区分,由于读取数据时的区域是任意选定的,所以在读取事件数据时须确定是从主内存中读取还是从镜像内存中读取。
AUTOSAR诊断系统下位机与外界的通讯由DCM负责。DCM模块的主要功能在于保证诊断的数据流管理诊断状态,尤其是诊断会话和安全状态。此外,DCM模块需要检查所请求的诊断服务是否支持以及所请求的服务是否能在当前会话状态下执行,当收到AUTOSAR支持的OBD诊断服务的请求时,DCM会通过DEM或SWC模块提供的接口来响应。
DCM由3个功能块组成:
DSL(诊断会话层)子模块。负责确保诊断请求和响应的数据流,监控诊断协议的时间和管理诊断状态。其主要功能有:请求处理,转发诊断请求给DSD子模块;响应处理,转发DSD子模块的响应给上位机;通讯安全等级管理;会话状态管理,在会话状态改变时通知相关模块;诊断协议管理,能够处理不同的诊断协议,管理相关资源;通讯模式处理。
DSD(诊断服务分配)。主要负责检查从网络上接收到的诊断请求的合法性,并将其转发给一个数据处理器。当DSL确认收到了一个诊断请求时,会通知DSD子模块,这时DSD会对这个请求进行分析,确认诊断会话的合理性,是否达到了允许的服务安全等级,然后分析诊断请求信息中的诊断服务标识来启动相应的处理,将诊断请求转发给对应的数据处理器,如DSP,当数据处理器完成数据的处理后,会触发DSD发出一个响应信息。
DSP(诊断服务处理)。主要处理相应的诊断服务请求,这是DCM中最核心的模块。当收到DSD发来的请求时,DSP会处理这个诊断服务,主要包括以下几步:分析这个诊断请求信息;检查请求的格式,并且确认这个请求是否支持;从DEM、SWC或AUTOSAR中的其他的模块中请求所需要的数据,主要是DEM和SWC;收集好所有数据后,按标准组织好返回信息。
[1]. 普华基础软件股份有限公司官网
[2]. BS ISO 14229-1:2013 Road vehicles — Unified diagnostic services (UDS) Part 1: Specification and requirements.pdf
[3]. AUTOSAR CLASSIC PLATRORM 4.3.1 AUTOSAR_SWS_DiagnosticCommunicationManager.pdf
[4]. AUTOSAR CLASSIC PLATRORM 4.3.1 AUTOSAR_SWS_DiagnosticEventManager.pdf
[5]. 《汽车工程》2012年(第34卷)第2期 “基于AUTOSAR的汽车电子诊断系统的开发”,罗端…等
[6]. 《基于AUTOSAR的功能禁止管理器与J1939通讯系统设计》硕士论文,电子科技大学,陈海立
[7]. AUTOSAR Introduction.pdf