【车载开发系列】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:
是否支持虚拟请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ常见面试题及答案梳理

1、RocketMQ有什么作用? 异步:数据的产生方不需要关心谁来使用数据,只需要将数据发送到broker,后续需要管消费流程,Rocket也有保证消息可靠性的方案消峰:正常业务系统当流量激增时,有可能会将系统压垮,有了…

ChatGPT正确打开方式与GPT-4.5的key最新获取方式

前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

【2015~2024】大牛直播SDK演化史

大牛直播SDK的由来 大牛直播SDK始于2015年,最初我们只是想做个低延迟的RTMP推拉流解决方案,用于移动单兵等毫秒级延迟的场景下,我们先是实现了Android平台RTMP直播推送模块,当我们用市面上可以找到的RTMP播放器测试时延的时候&am…

网络设备的分类和功能、机柜布局、网络设备安装

网络互连设备根据不同层实现的机理不一样,又具体分为五类: 1、网络传输介质互联设备 2、网络物理层互联设备 3、数据链路层互联设备 4、网络层互联设备 5、应用层互联设备 常用设备 网络互联设备--互联设备 1、中继器 中继器是局域网互连的最简单…

恒创科技:云存储和网盘怎么区分出来?

随着互联网的发展,数据存储已成为人们日常生活中不可或缺的一部分。云存储和网盘是经常被人们提及的两种存储方式,均通过网络进行数据存储和访问的服务。但,它们在技术实现、数据安全性、访问方式和数据容量等方面存在一定的差异。要区分&…

三甲医院预约挂号系统源码,具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序

随着医疗行业的不断发展,预约挂号管理系统已成为医院管理中不可或缺的一部分。 预约挂号管理系统是一款综合性的预约挂号管理系统,帮助医院实现全方位的信息化管理,提高医疗服务质量和效率。支撑公众号、小程序、手机网上预约。 一款服务适用…

企业用户注册阿里云账号:为何选择企业实名认证及其五大优势

在数字化时代,云计算已成为企业运营不可或缺的一部分。阿里云,作为领先的云服务提供商,为企业用户提供了丰富的云产品和解决方案。但在享受这些服务之前,企业用户需要完成阿里云账号的注册和实名认证。本文将深入探讨为何企业用户…

小程序打包发行流程

工具 HBuilder X 、微信开发者工具、微信公众平台地址(微信公众平台) 配置 一、manifest.json 配置 通过 HBuilder X 打开 manifest.json 文件,找到 微信小程序配置,填写 微信小程序AppID,此 AppID 必须是本人有权…

Jvm相关知识(面试高级必备)

类的实例化顺序 先静态、先父后子 先静态:父静态>子静态 优先级:父类>子类 静态代码块>非静态代码块>构造函数 一个类的实例化过程: ①.父类的static代码块,当前类的static; ②.顺序执行…

freeswitch on centos dockerfile模式

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式。 环境 docker engine:Version 24.0.6 centos docker:7 freeswitch:v1.6.20 dockerfile 创建空目录…

力扣电话号码的组合

文章目录 题目说明做题思路代码实现代码解析 题目链接 题目说明 首先我们先分析一下这个题目题目中说呢先给出一个字符串这个字符串其实就是这个九键数字我们要按照要求将数字所代表的字符进行自由组合形成一个字符串并且这个字符串的长度和输入的数字字符串长度相同&#xff0…

第11章 GUI Page500~504 步骤三十二:打开画板文件02

各个图元类新增GetTypeName_Static(),并将原来的GetTypeName()改为调用静态方法实现: 直线: 圆: 十字: 矩形: 文字: tool_4_save_load.hpp添加两行 tool_4_save_load.cpp增加: 增加…

【资治通鉴】古代纪年法 ( 天干地支纪年法 | 木星纪年法 | 太岁纪年法 | 星次 | 天球 | 黄道带 | 四象二十八星宿 )

文章目录 一、天干地支纪年法二、木星纪年法1、星次2、天球3、黄道带 三、太岁纪年法四、四象二十八星宿1、四象与二十八星宿关联2、二十八星宿与星次关联3、西游记中的二十八星宿 2024 年 使用 天干地支纪年法是 甲辰年 , 使用 太岁纪年法是 阏逢执徐 ; 一、天干地支纪年法 天…

建筑能源管理系统

建筑能源管理系统是一种集成了先进的监测、控制、分析和优化技术的智能化系统,旨在提高建筑能源效率,降低能源消耗,减少环境污染,并为用户提供舒适、安全的建筑环境。通过监测建筑内的各种能源消耗情况,如电力、热水、…

arthas(阿尔萨斯)日常java代码调优使用命令

官方项目文档:https://gitee.com/arthas/arthas (最权威的教学还是得官网,这里仅作简单记录) 1:启动 java -jar arthas-boot.jar 2:查看cpu占用排名前三 thread -3 3:查看指定id thread 203 4:查…

数据结构day1

1.思维导图 2.定义一个简单宏或宏函数,实现两个数交换。 3.定义字符类型指针,指针指向n个连续堆区内存,输入,计算字符串长度 定义函数,实现内存申请 定义函数,解释字符串长度 定义函数,释放内…

河南文旅火爆出圈,来了解小魔推短视频矩阵的魅力!

最近几天四川文旅的抖音账号,1天发视频六十多条,增长粉丝20w,另外河北文旅抖音账号,一天发视频七十多条,增长粉丝30w,更有河南文旅抖音账号,单日发布上百条视频,实现涨粉15w&#xf…

最长上升子序列模型(LIS)

最长上升子序列模型就像它的名字一样,用来从区间中找出最长上升的子序列。它主要用来处理区间中的挑选问题,可以处理上升序列也可以处理下降序列,原序列本身的顺序并不重要。 模型 895. 最长上升子序列(活动 - AcWing&#xff0…

mysql原理--事务的隔离级别与 MVCC

1.事前准备 为了故事的顺利发展,我们需要创建一个表: CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number) ) EngineInnoDB CHARSETutf8;然后向这个表里插入一条数据:INSERT INTO hero VALUES(1, 刘…

如何才能拥有比特币 - 01 ?

如何才能拥有BTC 在拥有 BTC 之前我们要先搞明白 BTC到底保存在哪里?我的钱是存在银行卡里的,那我的BTC是存在哪里的呢? BTC到底在哪里? 一句话概括,BTC是存储在BTC地址中,而且地址是公开的,…