Autosar诊断基础——诊断通信管理
1 诊断通信管理(DCM)的概念
诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。
主要功能贯穿汽车的开发生产及售后等过程,如开发过程中EMC、ESD等实验均可使用诊断服务实现,生产过程中的软件下载更新、ECU产线EOL、汽车产线EOL等、售后过程中读取DTC、控制输出调试功能等。(下图来源于Autosar软件开发标准文档AUTOSAR_SWS_DiagnosticCommunicationManager)
DEM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)
2 DCM及关联模块关系
从网络分层角度看,DCM模块属于上层模块,主要位应用层提供服务。主要包括5-7层,包括会话层服务及应用层等,会话层包括服务定时及服务分配等,应用层为具体的服务功能实现。
DCM模块主要负责处理诊断数据流和管理诊断状态,包括诊断会话和安全状态,DCM模块能检查诊断服务的请求是否满足条件。DCM在AUTOSAR架构中与其他模块之间的关联关系,其他未提及关系可以查询autosar文档。
1、DCM模块不直接与TP层关联,经过PDUR然后进入DCM模块
2、ComM主要包括Dem模块的初始化、诊断会话管理
3、DEM模块包括诊断数据的传输(0x14(清除DTC)、0x19(读取DTC))
4、DET模块可以在开发阶段读取获取DCM模块的配置或运行错误
5、Rte(Application)包含一些诊断服务的实现(0x22(读取数据或状态)、0x2E(写数据或状态)、0x2F(功能IO控制)、0x31(例程控制))
6、BSW包括网络通信管理(0x28服务)
3 DCM模块子模块介绍
诊断通信管理(DCM)主要包括三个子模块:诊断服务层(Diagnostic Service Layer,DSL)、诊断服务分配(Diagnostic Service Dispatcher, DSD)、诊断服务进程(Diagnostic Service Processing, DSP)
Diagnostic Service Layer:确定诊断数据请求和响应的数据流;监控和确保诊断请求和响应的时序,管理诊断状态(特别是诊断会话和安全状态)
Diagnostic Service Dispatcher:接收到的诊断请求转发给数据处理器;当数据处理器触发时,通过PDUR传输诊断响应
Diagnostic Service Processing:处理实际的诊断请求
3.1 诊断会话层(DSL)
DSL模块主要用于诊断请求的处理及诊断时序的控制等,具体存在几个功能如下:
1、处理诊断请求:收到请求时,PDUR会将数据诊断请求数据从下层的Buffer中Copy到诊断的接收Buffer中,DSD会从此Buffer中取出数据进行处理
2、处理诊断响应:收到发送数据时,PDUR会将数据诊断请求数据从DSL的发送Buffer中Copy到PDUR的发送Buffer中,具体后续处理由CAN的协议栈进行处理
3、管理安全等级:用于获取或者设置安全等级
3.2 诊断服务调度层(DSD)
DSD模块主要用于诊断服务的分配、服务执行环境及条件,会从接收的数据识别请求的服务类型(0x10、0x27、0x22),主要功能:
1、检查诊断服务:用于检查诊断服务执行的条件,如当前会话模式、诊断服务是否支持、安全访问等级。当判断条件不支持是会相应0x7F和具体的NRC否定响应码,通过后会由上一层处理服务(具体处理也可以给出否定响应)
2、汇总响应数据:将判断得到的响应数据或者由DSP发送的响应数据发送给DSL,由DSL向外发送数据
3.3 诊断服务处理层(DSP)
DSP为诊断服务的处理,当接收到DSD请求处理诊断服务,服务处理过程:
1、分析处理接受的请求数据
2、根据分析结果调用不同的处理函数
3、其他模块给出响应数据,将数据发送给DSD
4 相关文档下载
Autosar软件标准:
1、Autosar官网下载:ClassicAutosar标准文档下载地址
2、CSDN下载链接:AUTOSAR_SWS_DiagnosticEventManager
ISO 14229:
ISO14229_2013(1-7)标准文档下载:ISO14229 1-7
ISO 15031:ISO 15031 (1-7)