1.DCM和UDS
DCM是诊断通信管理(Diagnostic Communication Manager, DCM),是AutoSar软件架构下的一个模块及重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。
UDS(Unified Diagnostic Services)是一种诊断协议,DCM基于UDS协议实现了汽车诊断的功能。除此之外,还有一种常见的诊断协议是OBD(On-Board Diagnostic)也在DCM中实现。
UDS协议是通过ISO 14229规范定义,并描述了多种常见的诊断服务及其通信流程。
2.DCM和其他模块的关系

DEM:DEM模块提供了检索与故障内存相关的所有信息的功能,以便Dcm模块能够通过从故障内存中读取数据重新响应测试人员的请求。DEM主要是存储与DTC相关的内容,与UDS有关的是14和19服务,比如读取故障码,快照信息等等。
PDUR:PduR模块接收和发送诊断数据。PduR为Dcm模块提供一个与具体通信协议无关的接口。DCM拿到的通信报文,是由PduR转发过来的。
3.DCM子模块
Dcm 模块由以下子模块组成:
诊断会话层 (DSL) 子模块:DSL 子模块确保有关诊断请求和响应的数据流,监督和保证诊断协议计时,并管理诊断状态(尤其是诊断会话和安全性)。
诊断服务调度器 (DSD) 子模块:接收到的诊断请求转发给数据处理器;当数据处理器触发时,通过PDUR传输诊断响应。
诊断服务处理 (DSP) 子模块:DSP 子模块处理实际的诊断服务(分别为子服务)请求。

3.1 诊断会话层 (DSL) 子模块
请求和响应处理
- 将请求从PduR模块转发到DSD子模块;
- 并发TesterPresent(“保持活动逻辑”);
- 将响应从DSD子模块转发到PduR模块;
- 保证对测试人员的响应时间;
- 支持定期传输;
- 支持响应事件(ROE)传输;
- 支持分段响应;
- 支持应用程序触发的ResponsePending响应;
安全级别处理
- 管理安全级别;
会话状态处理
- 管理会话状态;
- 跟踪活动的非默认会话;
- 允许修改计时;
诊断方案处理
- 处理不同的诊断协议;
- 管理资源;
通信模式处理
- 通信要求的处理(完全/静默/无通信);
- 指示活动/非活动诊断;
- 启用/禁用各种诊断传输;
3.1.1将请求从PduR模块转发到DSD子模块
3.1.2保持非默认会话处于活动状态并重置S3计时器
保活,进入非默认会话会开始计时,5秒后会返回默认会话,持续发送3E 80可以保持在非默认会话下。
3.1.3将响应从DSD子模块转发到PduR模块
3.1.4通用连接处理
Dcm应能够处理由DcmPdus识别的通用连接,其MetaDataItem类型为SOURCE_ADDRESS_16和TARGET_ADDRESS_16。这些连接在运行时携带实际的测试仪地址。根据ISO 15765 -2 [15],通过IP和FlexRay诊断以及使用正常固定或混合29位寻址格式的CAN诊断支持通用连接。根据CAN ID的实际布局,通用连接也可以用于扩展或正常和混合的11位寻址格式。Dcm不知道CanTp使用的实际寻址格式。多个连接可以引用相同的DcmPdus。
3.1.5通过发送忙碌响应来保证测试人员的时间
NRC78,OTA中的31擦除例程常用。
3.1.6支持定期传输
2A服务,此前没做过。
3.1.7支持分段响应
NRC14
3.1.8支持应用程序触发的响应挂起
3.1.9管理安全级别
DSL子模块应保存当前活动安全级别的级别。
3.1.10管理会话状态
3.1.11管理验证状态
在生产中的某些用例中,执行频繁的通电/断电序列。为了在断电时保持已实现的身份验证状态,有一个专用模式规则要求Dcm保持已验证状态。
3.1.12非默认会话
3.1.13允许修改计时
P2ServerMin, P2ServerMax,P2*ServerMin, P2*ServerMax, S3Server
3.2 诊断服将响应从DSD子模块转发到PduR模块务调度器 (DSD) 子模块
DSD子模块负责检查传入诊断请求的有效性(诊断会话/安全访问级别/应用程序权限的验证),并跟踪服务请求执行的进度。
如果识别到新的诊断消息,则DSD子模块应由DSL子模块触发。DSD子模块将通过分析包含在接收到的诊断消息中的诊断服务标识符来开始处理。
3.2.1支持检查诊断服务标识符和调整诊断消息
如果识别到新的诊断消息,则DSD子模块应由DSL子模块触发。DSD子模块将通过分析包含在接收到的诊断消息中的诊断服务标识符来开始处理。
3.2.2验证功能
在执行接收到的诊断服务之前,DSD执行一组验证。DSD只会接受一项服务,如果所有验证成功通过。
3.2.3验证制造商应用环境/许可
NRC22,不如高压状态下不能进入编程会话进入OTA
3.2.4向DSP子模块分发诊断消息
3.2.5积极或消极的回应
3.3 诊断服务处理 (DSP) 子模块
具体的UDS服务,详见14229协议;
4.DCM工作流程

图中第一个矩形中的DcmRxPduId指的是物理寻址的数组或者功能寻址的数组,当有请求在处理中时,如果收到了来自外部的TesterPresent诊断请求,无论与正在处理的请求是否源自同一通道,都会被接受(Dcm_StartOfReception返回BUFREQ_OK),但是都不会进行处理(即:不进行S3Server timer的重制)。
Dcm_StartOfReception返回值有三种情况:
BUFREQ_OK:连接已被接受。bufferSizePtr指示可用的接收缓冲区;继续接收。如果没有所请求大小的缓冲区可用,则接收缓冲区大小0将由bufferSizePtr指示。
BUFREQ_E_NOT_OK:连接已被拒绝;接收已中止。bufferSizePtr保持不变。
BUFREQ_E_OVFL:无法提供所需长度的缓冲区;接收被中止。bufferSizePtr保持不变。



1527

被折叠的 条评论
为什么被折叠?



