【车载开发系列】Autosar DCM诊断管理模块

2024-01-20 06:12

本文主要是介绍【车载开发系列】Autosar DCM诊断管理模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【车载开发系列】Autosar DCM诊断管理模块

【车载开发系列】Autosar DCM诊断管理模块

  • 【车载开发系列】Autosar DCM诊断管理模块
    • 一. DCM模块概念
    • 二. DCM模块与Autosar其他模块关系
      • 1)Dcm和PduR的交互
      • 2)Dcm和ComM模块的交互
      • 3)Dcm和Dem的交互
      • 4)SWC通过和RTE接口和Dcm交互
      • 5)BswM和Dcm模块的交互
    • 三. Dcm模块配置
    • 四. Dcm通用配置(DcmGeneral)

一. DCM模块概念

在AUTOSAR架构中,Dcm模块的全称是Diagnostic Communication Manager,它是诊断通信管理用的一个模块,位于通信服务层。
它的主要作用是负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。
从网络分层角度看,DCM模块属于上层模块,主要为应用层提供服务。主要包括5-7层,包括会话层服务及应用层等,会话层包括服务定时及服务分配等,应用层为具体的服务功能实现。
DCM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)。

二. DCM模块与Autosar其他模块关系

在这里插入图片描述
Dcm模块是诊断通信管理用的模块,它独立于具体的网络的(不依赖于具体的CAN,Lin,Eth,Flexray等网络来实现)。

1)Dcm和PduR的交互

PduR模块接收和发送诊断数据。PduR为Dcm模块提供一个与具体通信协议无关的接口。
PduR模块为Dcm模块提供独立于具体网络的接口。Dcm模块从PduR模块接收诊断信息,Dcm模块在内部处理和检查诊断消息。

2)Dcm和ComM模块的交互

Dcm模块可以指示状态“活动”和“非活动”用于诊断通信。Dcm模块提供了处理通信需求“完全/静默/无通信”的功能。此外,Dcm模块提供了在ComM模块要求时启用和禁用诊断通信的功能。

3)Dcm和Dem的交互

DEM模块提供了检索与故障内存相关的所有信息的功能,以便Dcm模块能够通过从故障内存中读取数据重新响应测试人员的请求,通俗的讲就是Dcm能够读取Dem记录的DTC信息

4)SWC通过和RTE接口和Dcm交互

Dcm模块在完成诊断功能的时候需要通过RTE接口来读写/函数调用其他SWC的数据/服务。
Dcm将与其他BSW模块或SW-Components(通过RTE)交互,以获取所请求的数据或执行所请求的命令。诊断服务处理与特定的服务请求强绑定(不同的诊断请求依赖于不同的一个或几个模块来实现)。通常,Dcm将汇集收集到的信息,并通过PduR模块发送回消息。

5)BswM和Dcm模块的交互

如果Dcm的初始化是从引导加载程序跳转的结果,则Dcm通知BswM应用程序已更新。Dcm也向BswM指示通信模式的改变。
在这里插入图片描述

三. Dcm模块配置

诊断通信管理(DCM)主要包括三个子模块:诊断服务层(Diagnostic Service Layer,DSL)、诊断服务调度(Diagnostic Service Dispatcher, DSD)、诊断服务处理(Diagnostic Service Processing, DSP)。在Vector Configurator Pro中,Dcm模块由以下五个容器组成。通过Vector Configurator Pro工具配置Dcm模块,并实现客户的需求。
DcmDsd:该容器配置诊断服务调度的所有参数
DcmDsl:该容器配置诊断会话层的所有参数
DcmDsp:该容器配置诊断服务处理的所有参数
DcmGeneral: 该容器配置Dcm模块的通用参数
DcmPageBufferCfg:该容器配置Dcm模块的缓存区参数
在这里插入图片描述
Diagnostic Service Layer:确定诊断数据请求和响应的数据流;监控和确保诊断请求和响应的时序,管理诊断状态(特别是诊断会话和安全状态)
Diagnostic Service Dispatcher:接收到的诊断请求转发给数据处理器;当数据处理器触发时,通过PDUR传输诊断响应。
Diagnostic Service Processing:处理实际的诊断请求。

四. Dcm通用配置(DcmGeneral)

在这里插入图片描述
1)DcmBswApiVersion:
指定BSW堆栈API的AUTOSAR版本。若参数为空,使用V4.XX.XX AUTOSAR版本
2)DcmCalibrationOfObdIdsEnabled:
是否支持标准OBD ID。
3)DcmCalibrationOfObdIdsMemoryType:
标准OBD ID数据的存储类型。
VOLATILE:生成RAM表。NON_VOLATILE:生成const区域表。默认使用NON_VOLATILE类型。
4)DcmDtrDataProvisionViaDemEnabled:
Dem是否处理OBD MID DTR数据采集。若设置enable,Dcm请求OBD MID DTR(Sid 0x06 or Did 0xF600)时与Dem数据交互;若设置disable,Dcm使用BSWMD文件定义OBD MID配置来获取DTR数据。
5)DcmDefensiveBehaviorEnabled:
指定Dcm是都监控API输入输出和内部行为,不通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
6)DcmDemApiVersion:
指定Dem API的AOTOSAR版本。若参数为空,使用V4.03.00 AUTOSAR版本
7)DcmDevErrorDetect:指定Dcm是都监控API输入输出和内部行为,并通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
8)DcmDspDataDefaultEndianness:
DSP层数据默认字节序
9)DcmFinalResponseToFblEnabled:
是否支持FBL最终的响应传输。若设置enable,Dcm调用“Dcm_GetProgConditions”函数决定是否发送最终响应。
10)DcmForeignDiagnosticRequestDetectionEnabled:
指定是否监听其他ECU的诊断请求。若设置enable,Dcm花费资源来处理这些诊断请求。
11)DcmKeepAliveTime
指定处理每个诊断请求后 Dcm 将保持 ComM 中的 Diag-Active 用户注册的时间(以秒为单位)。
12)DcmMainFunctionWorkerTaskTime:
配置诊断服务处理任务的周期时间。若设置为空,同时DcmSplitTasksEnabled为true,诊断服务处理任务周期会直接调用DcmTaskTime时间。
13)DcmMaxNumberIterationsPerTask:
每个Dcm_MainFunction任务的最大迭代次数。若设置为空,不限制次数;若设置大于0,对于比较复杂的诊断服务会造成运行时间增加。
14)DcmRequestManufacturerNotificationEnabled:
为制造商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。必须配置DcmDslServiceRequestManufacturerNotification参数。
15)DcmRequestSupplierNotificationEnabled
为供应商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。同时必须配置DcmDslServiceRequestSupplierNotification参数。
16)DcmResetToFblAfterSessionFinalResposeEnabled:
配置诊断会话切换肯定响应之前还是之后复位带FBL。若设置enable,Dcm会先回复肯定响应,再复位到FBL;若设置为disable,Dcm会先根据配置跳转到FBL,之后FBL会回复肯定响应。
17)DcmRespondAllRequest:
是否处理接收到的安全诊断请求。若设置enable,Dcm会接收并处理所有的诊断请求;若设置为disable,Dcm会接收所有请求,但是不处理[0x40,0x7F]U[0xC0, 0xFF]范围内的诊断请求。
18)DcmSafeBswChecks:
是否配置SafeBSW模式。若设置enable,Dcm不支持某些特定的功能(待深入理解);反之Dcm则支持全功能。
19)DcmSecurityLevelChangeNotificationEnabled:
安全等级改变时是否通知SWC。若设置enable,Dcm会在安全等级发生改变时调用RTE的接口。
20)DcmSplitTasksEnabled:
main-function任务是否分裂成worker+timer任务。若设置enable,Dcm会由Dcm_MainFunctionTimer和Dcm_MainFunctionWorker组成;反之Dcm只有一个Dcm_MainFunction任务。
21)DcmStateRecoveryAfterResetEnabled:
是否通过重置ECU保留一些Dcm内部状态。若设置enable,Dcm在Dcm_Init之后读取信息或者默认信息。反之Dcm不恢复信息直接启动。
22)DcmSupportedIDCalculationSuppressionEnabled:
是否抑制SupportedIDs的计算(待深入理解)。
23)DcmSuppressResponseOnCanTpFuncMixedAddrRequest
是否抑制由MixedAddressing CanTp连接的功能寻址的任何响应
24)DcmTaskTime:
Dcm主任务的周期时间
25)DcmUserConfigFile:
用户配置文件的路径。
26)DcmVersionInfoApi:
是否提供版本信息。若设置enable,Dcm提供“Dcm_GetVersionInfo”API接口来读取版本信息。
27)DcmVirtualRequestEnabled:
是否支持虚拟请求。

这篇关于【车载开发系列】Autosar DCM诊断管理模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625040

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优