资讯详情

AUTOSAR 诊断协议栈介绍

概述

AUTOSAR包括诊断协议栈DCM(Diagnostic Communication Manager)和DEM(Diagnostic Event Manager)其中两个模块DEM负责DTC实现相关参数DCM主要实现模块UDS和OBD可参考诊断服务ISO14229相关标准。

DCM模块位于AUTOSAR BSW中。DCM为诊断服务提供公共服务API。DCM的作用贯穿于ECU研发、生产到售后全生命周期。

DEM负责处理和存储诊断事件(包括外部可见)DTCs和其他BSW模块报告内部事件)及相关环境数据。DEM给DCM从memory读取所有存储的DTC。DEM应用层等BSW提供接口的模块。

DCM模块介绍

image-20211217135349957

DCM确保诊断数据流和管理诊断状态,特别是诊断会话和安全状态。DCM检查要求的服务是否支持,相应的服务请求是否可以在当前会话中执行。DCM提供了OSI如下表所示,5-7层

在OSI-Layer 7,DCM广泛提供ISO1429-1服务。此外,还提供了部分服务OBD服务。在OSI-Layer 5,DCM处理以下规范的网络独立部分:

  • ISO15765-3[4]:实现统一诊断服务(UDSonCAN)
  • ISO15765-4[5]:排放相关系统的需求,Chapter 5"Session Layer"

DCM在AUTOSAR该架构位于通信服务层,如下图所示

DCM模块是网络独立的,所有网络规范的功能,如CAN,LIN,FlexRay都在DCM之外处理。PduR模块为DCM该模块提供独立的网络接口。DCM模块从PduR模块接收诊断信息。作为诊断服务的一部分,DCM会与其他的BSW模块或通过RTE与SWC交互获取请求数据或执行请求命令。服务非常特定。通常,DCM收集到的信息并通过PduR模块发回消息。

DCM模块与其他模块模块

  • DEM模块提供检索所有与故障存储器相关的信息的功能Dcm该模块可以通过从故障存储器读取数据来响应测试者的要求。
  • PduR模块提供发送和接收诊断数据的功能。
  • ComM模块提供了一些功能,比如Dcm模块可以指示“活动”和“非活动”状态,以便进行诊断通信。DCM模块提供处理通信请求Full-/Silent-/No-Communication"的功能。
  • DCM能够分析接收到的诊断请求数据流,处理所有与诊断通信相关的功能,如协议处理和时间序列。
  • 如果Dcm初始化是引导加载程序跳转的结果Dcm通知BswM更新了应用程序。Dcm也向BswM指示通信模式的变化。
  • Csm加密服务模块提供各种加密算法。Csm用于认证计算。
  • 密钥管理器模块支持证书处理api,认证诊断通过证书实现。

功能规范

通用设计组件
DCM模块组成

DCM由三个子模块组成

  • Diagnostic Session Layer(DSL)子模块:确保诊断请求和响应的数据流,监督和确保诊断协议的定期性,并管理诊断状态
  • Diagnostic Service Dispatcher(DSD)子模块:负责相应数据处理器的收发诊断请求
  • Diagnostic Service Processing(DSP)子模块:处理真实的诊断服务

下图给出了DCM模块中三个子模块的接口关系

负响应码NRC

标准为UDS服务和OBD服务定义了NRCs。这些NRC在数据类型中定义。NRC需要遵循发送顺序ISO14229-1[1]。

参考如下

如有侵权,可联系删除。

存储非易失信息

因为诊断需要存储故障,所以DCM能够访问非易失性存储的能力。

诊断会话层(DSL)
概述

DSL应符合功能ISO14229-1[1]规范和ISO15765-3[4]网络无关部分。

用例

DSL模块应提供以下功能

  • 会话处理(需求来自)ISO14229-1[1]和ISO15765-3[4])

  • 应用层时序处理(需求来自)ISO14229-1[1]和ISO15765-3[4])

  • 标准响应行为(需求来自)ISO1429-1[1]和15765-3[4]

  • 各诊断连接的身份验证状态处理(需求来自ISO14229-1:2018)

    — 提供每个连接的验证状态

    — 转移管理验证状态

与其他模块交互
  • PduR模块

    — PduR模块提供接收服务请求的数据

    — DSL模块触发诊断响应的输出

  • DSD子模块

    — DSL模块通知DSD模块输入请求和数据

    — DSD模块触发诊断响应的输出

  • SW-Cs/DSP子模块

    DSL该模块提供安全性和访问会话

  • ComM模块

    DSL模块保障ComM所需的通信行为

功能描述

DSL提供以下功能

  • 请求处理

    — 从PduR转发请求到DSD模块

    — 并发“TestPresent"

  • 响应处理

    — 从DSD转发响应到PduR模块

    — 确保响应顺序

    — 支持周期发送

    — 支持ResponseOnEvent发送

    — 支持分割响应

    — 支持应用触发ResponsePending响应

  • 安全等级处理

    — 管理安全等级

  • 会话状态处理

    — 管理会话状态

    — 追踪激活的非默认会话

    — 允许修改时序

  • 处理诊断协议

    — 处理不同的诊断协议

    — 管理资源

  • 通信模式处理

    — 处理通信请求(Full-/Silent-/No Communication)

    — 诊断激活和非激活指示

    — 发送所有类型的诊断

分发诊断服务(DSD)
概述

DSD模块负责检查输入诊断请求的有效性(诊断会话/安全访问等级/应用权限验证),并跟踪请求服务的执行过程。

用例
  • 接收请求信息发送正响应信息
  • 接收请求消息抑制响应消息
  • 接收请求消息抑制负响应消息
  • 接收请求消息发送负响应消息
  • 发送正响应信息,但没有相应的请求
  • 分割响应
DSD与其它模块交互

DSL当子模块收到诊断信息时,调用DSD并执行以下操作

  • 处理委托请求DSP模块或者DCM的外部模块
  • 处理跟踪请求
  • 向应用程序发送响应DSL模块
诊断服务处理(DSP)
概述

当收到DSD需要调用模块的函数DSP在模块处理诊断服务请求时,DSP通常按照以下基本处理步骤进行处理

  • 分析接收到的请求信息
  • 检查格式以及是否支持寻址功能
  • 在DEM、SW-C或其他BSW在模块上获取数据或调用执行所需的函数
  • 组装响应数据
UDS服务

DCM支持以下模块UDS服务

[外链图片存储失败,源站可能有防盗链机制,建议直接保存图片(img-CQEMYy9Z-1654562839786)(AUTOSAR DCM模块介绍.assets/image-20220331154331929.png)]

交互用例

DCM支持管理从Application跳转到Bootloader的功能。

Jump to Bootloader

跳转到Bootloader有4种不同的用例,如果所有前置条件都满足且假设设置为

  1. 应用立即发送一个最终的正响应并且跳转到Bootloader
  2. 应用首先发送一个NRC 0x78的负响应,然后发送最终的正响应,之后跳转到Bootloader
  3. 应用立即跳转到Bootloader,在Bootloader里面发送一个最终的正响应
  4. 应用首先发送一个NRC 0x78的负响应,然后跳转到Bootloader,在Bootloader里面发送一个最终的正响应

注:如果设置为,用例1和3不会发送正响应

Jump due to ECUReset

当接收到ECUReset服务0x11的请求后,如果配置参数设置为,DCM会在Reset之后发送回应;如果配置参数设置为,DCM会在Reset之前发送回应;如果Dcm发起Reset并且设置为TRUE, Dcm将在Reset前触发NRC 0x78 (Response pending)传输。

Jump from Bootloader/ECUReset

在Dcm初始化时,Dcm调用Dcm_GetProgConditions来知道初始化是否是从Bootloader或者ECUReset跳转的结果。

DEM模块介绍

概述

Diagnostic Event Manager(DEM)负责处理和存储诊断事件(包括外部可见的DTCs和其他BSW模块报告的内部事件)和相关的环境数据。DEM给DCM(Diagnostic Communication Manager)模块提供错误信息,比如从memory读取所有存储的DTC。DEM为应用层和其他BSW模块提供接口。

DEM和其他模块的依赖

如下图,DEM和其他模块有以下交互:

  1. FiM(Function Inhibition Manager)模块对Dem的某些功能进行抑制
  2. Dcm模块负责UDS服务的执行和诊断通信的处理
  3. SW-C (Software- components)和BSW (Basic Software)模块可以对Dem进行交互,更新和/或检索当前监控状态和UDS状态信息。
  4. NVRAM提供存储数据的block,比如DTC或者软件版本号等信息。
  5. ECU State Manager负责DEM模块的初始化和去初始化
  6. RTE负责BSW的调度状态机

功能介绍

DEM处理和存储SW-Cs和BSW中diagnostic monitors检测的事件。存储的事件信息通过接口提供给BSW或者SW-Cs使用。这里所说的事件往往是一种错误或者是故障。

诊断事件定义

一个诊断事件表示可以由DEM模块处理的原子单元。诊断事件的状态表示了监控的结果,DEM从SW-C或者BSW模块接收监控的结果。

DEM模块使用事件ID管理诊断事件的状态,执行诊断事件结果需要的动作,比如存储快照信息等。

事件优先级

事件优先级根据事件的重要性进行排序。其用于确定在存储的事件数量超过最大内存条目数量(事件内存已满)的情况下,可以从事件内存中删除哪些故障条目。

优先级值1表示最高优先级。

事件发生计数

DEM每一个事件提供事件发生的计数功能。

事件类型

有两种事件类型,每一个事件的类型可以配置

  • BSW相关的事件(通过C-API Dem_SetEventStatus上报事件信息)
  • SW-C相关的事件(通过RTE的操作 SetEventStatus上报事件信息)

诊断监测器定义

诊断监测器是一个由组件确定功能的例程实例。监测功能为监测路径识别特定的故障类型(如短路接地、开路负载等)。监控路径表示被监控的物理系统或电路(如传感器输入)。

由于监测器会执行消抖,所以只有在确认结果(通过或失败)后才会调用报告API。但是如果监测器使用DEM内部消抖状态机,则当检查功能执行被执行后都会调用上报API。

诊断故障码定义

诊断故障码即DTC定义了唯一的ID,与诊断事件一一对应。DEM模块为DCM模块提供DTC相关信息。

DTC类型

有两种类型的DTC

  • UDS相关的DTC
  • OBD相关的DTC
DTC格式

DTC的格式参考以下标准

  • ISO-14229-1[2]
  • SAE J2012 OBD DTC(aka 2-byte DTC)[13]
  • SAE J1939-73[14]
  • ISO 11992-4[15]
  • SAE J2012 WWH-OBD DTC(aka 3-byte DTC)[13]

总结

DCM和DEM模块的实现主要是满足ISO15765以及ISO14229相关标准,在熟悉诊断协议栈之前大家先要熟悉相关标准,之后再熟悉此部分内容就比较容易理解。

标签: dsl传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台