Classic AUTOSAR专题| 诊断模块(上)

news2025/2/27 1:07:53

往期小怿向各位小伙伴介绍了Classic AUTOSAR专题之I/O模块,相信看过的小伙伴对Classic AUTOSAR的I/O模块已经有基本的认知了,本期为大家介绍《AUTOSAR模块之诊断模块》,内容超丰富,将分两期推出哦。

目录

1.概述

2.DCM

3.DEM

4.FIM

5.结语

01 概述

为了对车辆生命周期内的运行状态进行监测,车辆诊断技术应运而生。AUTOSAR的诊断模块可以对汽车控制系统进行远程或本地诊断。它提供了一系列的规范,包括Diagnostics Communication Manager(DCM),Diagnostic Event Manager(DEM)和Function Inhibition Manager(FIM),以实现完整的整车诊断功能。

图片

AUTOSAR诊断协议可帮助工程师进行车辆的故障诊断,定位和排查问题,并进行错误代码的管理和修复。诊断可应用于车辆制造商的生产线,车辆售后服务及维修等诸多场景。下面就为大家一一介绍不同诊断模块的主要功能。

02 DCM

DCM(Diagnostics Communication Manager)是底层的诊断通讯管理器模块,用于管理整个诊断通讯过程和处理诊断数据流。DCM模块的功能由三个子模块实现,分别是DSL(Diagnostic Session layer)用于处理诊断请求和诊断响应数据,并且对诊断的时序进行监控;DSD(Diagnostic Service Dispatcher)用于处理诊断数据流,以及DSP(Diagnostic Service Processing)用于分发不同的诊断服务请求。

图片

2-1  DSL

DSL与其他模块的交互

与PduR模块交互:

● PduR模块向DSL提供诊断请求数据输入

● DSL模块向PduR模块输出诊断响应数据

与DSD子模块交互:

● DSL子模块通知DSD子模块关于传入的请求并提供数据

● DSD子模块将触发诊断响应的输出

与SWC/DSP模块交互:

● DSL子模块提供了对安全性和会话状态的访问

与ComM模块交互:

● DSL子模块保证了ComM模块所需的通信行为

图片

DSL模块的功能

诊断请求处理

● 将从PduR模块发出的请求转发到DSD子模块。DSL子模块应调用Dcm_TpRxIndication并返回参数Result = E_OK后,才将接收到的数据转发到DSD子模块

● Tester在线保持(“保持有效逻辑”)。“Tester在线”命令可由Tester通过物理请求/响应发送,即ISO14229-1 [1]中定义的“keep alive logic”

诊断响应处理

DSD子模块应请求DSL子模块进行诊断响应数据的传输。

● 转发DSD子模块传入的诊断响应数据到PduR模块。DSD子模块应请求DSL子模块进行诊断响应数据的传输

● 保证对测试仪的响应时间。如果应用程序(或DSP子模块)能够执行请求的诊断任务,但需要额外的时间来完成任务和准备响应,那么DSL子模块应在达到响应时间时发送NRC0x78(Response Pending)

● 支持周期型传输方式。UDS服务通过ReadDataByPeriodicIdentifier(0x2A)周期性读取数据;Periodic Transmission通信方式只能在Full Communication Mode模式下进行

● 支持事件型传输方式。UDS服务通过 ResponseOnEvent(0x86)请求ECU开始/暂停传输诊断响应

● 支持分段响应

安全等级处理

管理安全等级。DSL子模块应保存当前活动安全级别的级别,为了访问Security Level,DSL子模块提供了两个接口:

① 获取当前安全等级:Dcm_GetSecurityLevel

② 设置当前安全等级:DslInternal_SetSecurityLevel

会话状态处理

● 管理会话状态。DSL子模块应保存当前活动会话的状态,为了获取当前会话状态,DSL模块提供了两个接口:

① 获取当前会话状态:Dcm_GetSesCtrlType

② 设置新的会话:DslInternal_SetSesCtrlType()

● 保持跟踪当前运行的非默认会话。当非默认会话处于活动状态,并且到达会话超时(S3Server)时,DSL子模块应重置到默认会话状态(“默认会话”,0x01)

● 允许修改定时参数。包括P2ServerMin, P2ServerMax,P2*ServerMin, P2*ServerMax, S3Server

诊断协议处理

● 处理不同的诊断方案

● 管理资源

通信模式处理

● 通信需求处理(Full- / Silent- / No Communication)

● 指示active / inactive diagnostic

● 启用/禁用各种诊断传输

2.2 DSD

DSD与其他模块的交互

与DSL模块交互:

数据传递方向

解释

双向

交换诊断信息(接收/传输)

DSD→DSL

获取最新的诊断会话和最新的安全级别

DSL→DSD

诊断消息传输确认

与DSP模块的交互:

数据传递方向

解释

DSD→DSP

委托诊断请求处理

诊断消息传输确认

DSP→DSD

处理已完成消息通知

图片

DSD模块的功能

支持检查诊断服务标识符并调整诊断消息

如果识别出新的诊断消息,DSL子模块应触发DSD子模块。DSD子模块将通过分析接收到的诊断消息中包含的诊断服务标识符进行相应的处理。

suppressPosRspMsgIndicationBit

如果“suppressPosRspMsgIndicationBit”为真,DSD子模块不得发送正响应消息。只有在服务具有子功能时才可用。

验证功能

在执行接收到的诊断服务之前,DSD会执行一组验证。只有当所有验证都成功通过,DSD才会接受服务。验证项包括:

● 验证制造商许可

● 验证SID

● 验证当前认证状态下的服务访问控制

● 诊断会话的验证

● 验证服务安全访问级别

● 验证供应商许可

● 验证服务ID的模式规则

检查格式和子功能支持:

在执行所请求的命令之前,DSD子模块会检查是否支持特定的子函数。如果未配置子服务,则DSD应发送负响应NRC:0x12(子功能不支持)。DSD子模块将在执行所请求的命令之前会检查最小消息长度。

将诊断信息分配到DSP子模块

DSD子模块收集DSP子模块新接收的诊断服务标识符的可执行功能,并调用相应的DSP服务解释器。

组装Positive/Negative Response:

当DSP子模块完成了所请求的诊断服务的执行时,DSD子模块应组装诊断响应报文。

启动传输

DSD子模块应将诊断响应信息转发给DSL子模块。

2.3 DSP

概述

当接收到来自DSD子模块的调用请求时,DSP总是执行以下基本的处理步骤:

● 分析接收到的诊断请求消息

● 检查格式以及是否支持携带的子功能

● 在DEM、SW-Cs或其他BSW模块上获取数据或执行所需的函数调用

DSP模块功能

检查格式和子功能支持

DSP子模块将在执行所请求的命令之前检查合适的消息长度和结构。当分析诊断请求格式或长度有误时,DSP子模块应触发具有NRC:0x13(消息长度错误或无效格式)的负响应。

组装诊断响应报文

DSP子模块应组装不包括响应服务标识符的响应消息,并确定响应消息的长度。

负响应代码处理

当没有特定的NRC时,如果API调用执行服务未返回OK,DSP子模块应返回NRC: 0x10的负响应(一般拒绝)。如果请求消息包含不支持的参数时,DSP子模块应触发具有NRC:0x31的负响应(请求超出范围)。

诊断模式管理

● DcmDiagnosticSessionControl (service 0x10)

● DcmEcuReset (partly service 0x11)

● DcmSecurityAccess (service 0x27)

● DcmModeRapidPowerShutDown (partly service 0x11)

● DcmCommunicationControl_. (service

0x28)

● DcmControlDTCSetting (service 0x85)

● DcmResponseOnEvent_(service 0x86)

支持UDS服务

下表定义了DCM支持的UDS服务:

图片

支持OBD服务

下表定义了DCM支持的OBD服务:

图片

2.4 DID Configuration

Dcm的配置包含支持的DID列表,可以通过两种方式配置:

● Individual DID configuration:需要每个DataElement(数据元素)单独配置一个连接来访问数据(读取、写入和控制)

● DID range configuration:用来处理在SWC中统一位于一个PortConnection内并且具有相同行为的DID

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

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

相关文章

upgrade pip报错:def read(rel_path: str) -> str: syntaxerror

命令行执行以下命令就可以大功告成! wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install --upgrade setuptools最后大功告成:

微信小程序基于移动端的个人博客系统的设计与实现

博客系统是能够让网民记录分享和学习的一个网站,在博客中我们可以发表文章对感兴趣的事情进行讨论。而基于移动端的个人博客系统的设计是就为了迎合广大用户需求创建的一个界面简洁、有定向内容、业务逻辑简单易操作的博客系统。本文以博客系统的设计与实现为例&…

【Axure教程】调用日期选择器并筛选中继器表格

今天教大家在Axure里怎么调用代码调用浏览器的日期选择器并对对中继器表格进行日期区间的筛选。调用浏览器日期选择器的好处是,可以选择真实的日期,包括某年某月某日是星期几,哪个二月是29天……都是真实的,那不同的浏览器日期选择…

腾讯云服务器多少钱一年?一个月或1小时费用价格明细表

腾讯云服务器租用费用表:轻量应用服务器2核2G4M带宽112元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天,腾讯云服务器网长期更新腾讯云轻量…

vs2017 错误 RC1015 cannot open include file ‘afxres.h‘.

问题场景: WINDOWS在VS2017环境下编译项目,报错vs2017 错误 RC1015 cannot open include file ‘afxres.h’. 问题排查: 首先,定位到include的文件目录,发现没有这个头文件: 解决方法: 第一种…

【java】【springboot】【idea】springboot项目pom.xml 灰色下划线

解决方案: 这里我们找到了原因,就是因为选择了Ignored Files导致pom.xml文件被设置在maven忽略文件清单中,所以我们将打勾的选项取消,点击Apply,然后点击OK

【精度丢失】后端接口返回的Long类型参数,不同浏览器解析出的结果不一样

1、业务背景 有个同事找我帮他看一个问题,他给前端提供了一个接口。 这个接口是用来反查id的,他这里这个参数正常的返回值应该是 283232039247028226。 但前端反馈他,前端在浏览器(火狐)获取的值是 283232039247028…

云上百世慧|公开研讨会|WMS仓储物流管理分享(我们在8月31日等你)

市场趋势 在新能源电池行业的迅猛发展中,新能源企业在仓储物流管理中可能面临一系列挑战和问题,这些问题可能因企业规模、产品类型、供应链结构等因素而有所不同。 主要问题包括:物料追溯困难、库存管理复杂、库存过剩或短缺、生产与库存耦…

长胜证券:沪指探底回升涨0.47%,券商、酿酒板块拉升,传媒板块活跃

24日早盘,沪指盘中震动回落,接近午盘快速拉升走高;深成指、创业板指强势上扬;北向资金今天转向,早盘积极出场,半日净买入近30亿元。 到午间收盘,沪指涨0.47%报3092.88点,深成指涨1.1…

Android 热修复核心原理

dexopt 在Dalvik中虚拟机在加载一个dex文件时,对 dex 文件 进行 验证 和 优化的操作,其对 dex 文件的优化结果变成了 odex(Optimized dex) 文件,这个文件和 dex 文件很像,只是使用了一些优化操作码。 dex2oat ART 预先编译机制&a…

Redis概述安装

Redis概述&安装 什么是RedisRedis的应用场景Redis安装Redis常用命令前台启动(不推荐)后台启动(推荐)客户端关闭Redis 什么是Redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库&…

如何提高企业生产效率与安全性?设备报修管理系统有什么用?

随着现代工业技术的不断发展,企业生产设备变得越来越复杂,出现故障的可能性也随之增加。设备故障不仅会降低企业的生产效率,还可能导致生产安全事故的发生。为了更好地管理维护生产设备,提高生产效率和安全性,本文将向…

【Python Flask+Nginx】实现HTTP、WS (两步实现,简单易懂)

目录 一、创建Flask应用 二、部署Nginx 2.1 下载Nginx 2.2 修改Nginx配置文件 2.3 启动Nginx 三、测试 一、创建Flask应用 首先我写了如下一个基于Flask的Demo,该Demo包含两个接口一个是HTTP接口(http://127.0.0.1:5000)&#xff0c…

容器内执行命令

上篇文章向读者介绍了一个Nginx的例子,对于Nginx这样一个容器而言,当它启动成功后,我们不可避免的需要对Nginx进行的配置进行修改,那么这个修改要如何完成呢?且看下文。 依附容器 docker attach 依附容器这个主要是…

问道管理:年中业绩预报规则?

跟着市场经济的发展,成绩预告已经成为股市中最重要的信息之一。在股票投资范畴,咱们通常以为,股票价格受到市场供求关系的影响。供求关系取决于投资者对该股票的预期。因此,猜测股票价格要重视公司的成绩预告。 那么,年…

苹果等公司被迫放弃修复安全漏洞,英国法规:发布安全更新需报备

此外,根据《调查权力法 2016》修订的提议,不仅设备制造商需要事先通知英国部门发布重要安全更新,还要按照政府的要求放弃修复安全漏洞。这意味着,苹果等公司可能会面临来自政府的压力,被迫放弃修复安全漏洞&#xff0c…

openapi中job提交

openapi中job提交 创建job查看job查看job 的描述查看job 的日志 创建job protocolVersion: 2 name: lenet_gpu_pytorch112_jiaxiaolei_20230825_1013 type: job jobRetryCount: 0 prerequisites:- type: dockerimageuri: nvcr.io/nvidia/pytorch:22.05-py3name: docker_image_0…

华为OD机试 - 最佳植树距离 - 二分查找(Java 2023 B卷 100分)

目录 一、题目描述二、输入描述三、输出描述四、备注说明五、二分查找六、解题思路七、Java算法源码八、效果展示1、输入2、输出3、说明 一、题目描述 按照环保公司要求,小明需要在沙化严重的地区进行植树防沙工作,初步目标是种植一条直线的树带。 由于…

RIP配置与协议分析

一、实验目的: 通过该实验学习RIPv1和RIPv2协议,能够通过GNS3模拟环境并用wireshark抓包分析RIPv1和RIPv2协议的报文格式。 二、预备知识: 三、实验过程: part1: 对GNS3进行配置,配置如下这个实验环境: 操作步骤如下…

【Linux】网络层之IP协议

IP协议 网络层网络层协议的作用IP协议的格式IP协议是如何管理地址的特殊的IP地址公网IP和私网IP 网络层 在整个互联网中,为了能够标识每台机器,所有连接互联网的机器都会被分配一个IP地址,实现端到端之间的数据透明传送,具体功能…