AUTOSAR-UDS诊断

news2024/10/6 16:23:40

目录

一.AutoSAR 诊断功能概述 

二.UDS 服务分类

诊断报文格式

(1)带有子服务的请求报文

(2)不带子服务的请求报文

(3)含有子服务正响应报文

(4)不含子服务正响应报文

(5)负响应报文

三.诊断的寻址方式

(1)物理寻址

(2)功能寻址

四.UDS 常用诊断服务

0x10服务(诊断会话控制)

0x11服务(ECU 复位)

0x27服务(安全访问)

0x28服务(通讯控制)

0x3E服务(待机在线)

0x85服务(诊断故障码设置控制)

0x22服务(读 DID 数据)

0x2E服务(写DID 数据)

0x14服务(清除故障码)

0x19服务(读故障码信息)

0x2F服务(通过 DID 控制输入输出)

0x31服务(例程控制)

0x34服务(请求下载)

0x36服务(传输数据)

0x37服务(传输数据)

NRC(负响应码)


一.AutoSAR 诊断功能概述 

从图中可以看出,诊断服务属于 AutoSAR 服务层,诊断数据流通过CAN驱动CANIF 层 CANTP PDUR DCM 给到 DCM 模块,DCM 模块处理诊断数据,并执行对应的具体诊断服务。
DCM: Diagnostic Communication Manager,诊断通信管理。实现具体的诊断协议,比如 UDS、 OBD。这里具体定义了各种不同的诊断服务,比如读取 ECU 故障码、写入 DID 数据等。
DEM:Diagnostic Communication Manager 诊断事件管理,用来记录和存储诊断事件的,在诊断故障码写入的时候会加入防抖策略。
FIM:Function Inhibition Manager,功能禁止管理。当一些错误出现的时候,禁止一些功能,比如检测到电流过大的时候,关闭继电器。就是有些 SWC是需要使能条件的,这些条件取决于故障内容(源于 DEM),而 FIM 负责根据故障内容关闭一些 SWC 或执行一些 SWC、DCM 和 DEM 直接交互,只要在 0x19 0x14 等与 DTC 相关服务的时候进行交互。
故障响应:应用层传输数据到 DEM, DEM 判断出是哪个故障,之后发送给 FIM;FIM 立即做出判断,通过回调函数通知 SWC 或者轮询的方式禁止 SWC。
故障记录:应用层传输数据给 DEM, DEM 一边发送给 FIM,另一边发送给 NVM,NVM 会将 DTC 存储到 FLASH 中。

二.UDS 服务分类

UDS 服务(Unified Diagnostic Service)统一诊断服务协议, ISO 14229 对UDS 服务分成了几大类
• 诊断和通信管理功能组
• 数据传输功能组
• 存储数据传输功能组
• 输入输出控制功能组
• 例行程序功能组
• 上传下载功能组
其中诊断服务有支持子服务和不支持子服务之分。

诊断报文格式

下面缩写字母解释
M:强制的 必须的
S:强制的,需从参数列表中选择一个
U:用户自定义,可选的

(1)带有子服务的请求报文

由服务 ID,子服务 ID,数据参数(可选)组成

例如: 10 01(请求切换到默认会话模式)
例如: 19 02 FF(请求读取以 0xFF 为 Mask 的故障信息)

(2)不带子服务的请求报文

由服务 ID,数据参数(可选)组成

例如: 22 F0 90(请求读取 DID 为 0xF090 的数据)
例如: 37(请求数据传输退出服务)

(3)含有子服务正响应报文

由响应 ID,子服务 ID,数据参数(可选)组成,其中响应 ID 值为对应请求ID+0x40

例如:
请求: 10 01(切换默认会话模式)
响应: 50 01 xx xx xx xx(成功切换默认会话模式)

(4)不含子服务正响应报文

由响应 ID,数据参数(可选)组成,其中响应 ID 为对应请求 ID+0x40

例如:
请求: 22 F0 90(读取 DID 为 0xF090 的数据)
响应: 62 F0 90 11 11 11 11 11 11 11 11 11 11(返回 DID 为 0xF090 的数据为 11 11 11 11 11 11 11 11 11 11)

(5)负响应报文

例如:
请求: 10 02(切换编程会话模式)
负响应: 7F 10 7E(切换编程会话服务执行失败 错误码 NRC 为 7E)
 

三.诊断的寻址方式

CAN 总线是广播形式的通信,即一条报文发送后, CAN 网络中的所有节点都可以收到该报文,诊断仪在发送诊断请求报文后,具体是想跟网络中的哪个 ECU 进行诊断会话呢,这个是通过什么方式判断的?这就引出了寻址方式的概念。
寻址方式有两种, 物理寻址和功能寻址。

(1)物理寻址

是诊断仪和单个 ECU 之间的诊断,也就是诊断请求报文发出去后,根据报文ID, CAN 网络中只会有对应的一个 ECU 进行诊断响应。

(2)功能寻址

是诊断仪和多个 ECU 之间的诊断,也就是诊断请求报文发出去后, CAN 网络中支持该功能寻址报文 ID 的 ECU,一般功能寻址报文 ID 为 0x7DF,这些 ECU 都会执行诊断服务,并且发出诊断响应。


一个 ECU 内部一般会定义 3 条诊断报文:
• 诊断请求接收报文(物理寻址 报文 ID 用户自定义 同一网络中的每个 ECU 不一样)
• 诊断请求接收报文(功能寻址 一般为 0x7DF)
• 诊断应答发送报文(同一网络的每个 ECU 的 ID 不一样)


例:整车同一网络中有 ECU A, B, C, D 多个节点,假设他们的物理请求消息 ID 为 0x701, 0x702,0x703,0x704,响应消息地址分别为 0x70A,0x70B,0x70C,0x70D,所有 ECU 的功能寻址 ID 为 0x7DF。


物理寻址时:
0x701 0x10 0x01 (对 ECU A 进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx (仅 ECU A 响应)


功能寻址时:
0x7DF 0x10 0x01 (对所有 ECU 进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx (ECU A 响应)
0x70B 0x50 0x01 xx xx xx xx (ECU B 响应)
0x70C 0x50 0x01 xx xx xx xx (ECU C 响应)
0x70D 0x50 0x01 xx xx xx xx (ECU D 响应)
 

四.UDS 常用诊断服务

• 诊断会话控制 DiagnosticSessionControl(0x10)
• ECU 复位 ECUReset(0x11)
• 安全访问 SecurityAccess(0x27)
• 通讯控制 CommunicationControl(0x28)
• 待机在线 TesterPresent(0x3E)
• 诊断故障码设置控制 ControlDTCSetting(0x85)
• 读 DID 数据 ReadDataByIdentifier(0x22)
• 写 DID 数据 WriteDataByIdentifier(0x2E)
• 清除故障码 ClearDiagnosticInformation(0x14)
• 读故障码信息 ReadDTCInformation(0x19)
• 通过 DID 控制输入输出 InputOutputControlByIdentifier(0x2F)
• 例程控制 RoutineControl(0x31)
• 请求下载 RequestDownload(0x34)
• 传输数据 TransferData(0x36)
• 请求数据传输退出 RequestTransferExit(0x37)
 

0x10服务(诊断会话控制)

请求格式

 

正响应格式

负响应格式
 

NRC

会话模式有默认会话模式(default session)和非默认会话模式(non-default session),非默认会话模式包含编程会话模式(ProgrammingSession)、拓展诊断会话模式(extendedDiagnosticSession)及其余会话模式。会话模式可以理解为诊断的功能模式,即在不同的会话模式下,能够支持不同的诊断功能,如在默认会话模式下,一般情况下不允许支持写服务(WriteDataByIdentifier0x2E),也不允许支持请求下载服务(RequestDownload0x34),而在拓展诊断会话模式下,就允许支持写服务
(WriteDataByIdentifier0x2E),在编程会话模式下,就可以支持(RequestDownload0x34)。
DiagnosticSessionControl(0x10)为控制切换各个会话模式的服务。


如下图,为三种常用会话模式的转换图
• 默认会话模式(default session 0x01)
• 编程会话模式(ProgrammingSession 0x02)
• 拓展诊断会话模式(extendedDiagnosticSession 0x03

注意:默认会话模式不能直接进入拓展诊断会话模式,必须先进入编程会话模式再进入拓展诊断会话模式。

0x11服务(ECU 复位)

ECU 复位 ECUReset(0x11)是控制 ECU 端执行复位的服务。诊断仪发送 11 01 复位请求后, ECU 复位动作执行前,正响应需先发送给诊断仪,然后 ECU 执行复位操作,成功复位后, ECU 需进入默认会话模式。

请求格式

子功能

正响应格式

负响应格式

NRC

0x27服务(安全访问)

seed 请求格式

 seed 正响应格式

 key 请求验证格式

 

 key 验证正响应格式格式

 负响应格式

 

安全访问 SecurityAccess(0x27),此服务是提供访问 ECU 内部数据或者出于安全因素需被限制的诊断服务的请求权限。常见的如读服务(0x22)读取非安全信息时能够直接读取,不需要利用 27 服务进行安全访问,而通过写服务(0x2E)写入数据时,则通常需要通过 27 服务进行安全访问才可以写,刷新程序也需要利用 27 服务通过相关的安全等级才能够对 ECU 进行程序下载,显然这些都是需要利用 27 服务进行权限管控,从而保障 ECU 的安全可靠。
 

安全访问序列如下图所示,一共 4 步组成:
• 诊断仪先发送请求 seed 的报文(27 01)
• ECU 响应 seed(67 01 xx xx xx xx)
• 诊断仪根据返回的 seed 按照约定算法计算 key 值,并发送给 ECU 请求验证(27 02 xx xx xx xx)
• ECU 收到请求之后,也按照约定的算法对该 key 进行校验,并给出响应,若计算一致,则为正响应(67 02),否则为负响应(7F 27 NRC)
 

ECU 若校验 key 一致,则 ECU 则切换安全状态至对应的解锁状态,此时在该解锁状态下能够支持的服务都应该可以工作。如果 ECU 已经处于解锁状态,此时诊断仪再次发送请求 seed 的报文, ECU 应该响应 seed 为 0 的正响应。

seed 请求的子服务值为奇数,对应的 key 请求验证的子服务值为该奇数加 1,如 27 01 与 27 02 为一组安全等级, 27 03 与 27 04 为一组安全等级, 27 11 与27 12 为一组安全等级。不同的安全等级由客户定义功能区分。
 

0x28服务(通讯控制)

通讯控制服务用于开启或关闭 ECU 对某些报文的发送或接收,如应用报文和网络管理报文等。

请求格式

正响应格式

负响应格式

NRC

0x3E服务(待机在线)

该服务用于诊断仪端告知 ECU 诊断仪依然在线。该服务通常用于保持 ECU 处于非默认模式,由于 ECU 在 S3server 时间收不到诊断请求的话, ECU 将会退回默认会话模式(default session),所以诊断仪为了保持 ECU 处于非默认模式,需要周期性发送 TesterPresent 服务指令,周期时间需要小于 S3server。

请求格式

正响应格式

负响应格式

0x85服务(诊断故障码设置控制)

诊断故障代码设置控制服务用于停止或重启 ECU 诊断故障代码的记录。当通过该服务对故障码记录进行抑制操作后,若会话层时序参数超时从而 ECU进入默认会话,或 ECU 执行复位操作后,诊断故障代码应该恢复记录。

当接收到诊断仪发送的清除诊断信息(0x14)服务后, ECU 应重新开启诊断故障代码记录。


请求格式

正响应格式

负响应格式

0x22服务(读 DID 数据)

根据 DID(标识符)读取数据服务用于从 ECU 存储器中读取由 DID 所确定的数据记录值,其中 DID 为两个字节长度的数值。
ISO14229 中定义该服务的请求报文允许支持 1 个或者多个数据标识符,一般主机厂仅支持 1 个 DID 读取。下图报文格式也以 1 个 DID 作为讲解。
 

请求格式

正响应格式

负响应格式

0x2E服务(写DID 数据)

根据 DID 写入数据服务允许诊断仪将数据写入由 DID 指定的内部存储单元。 ECU应在数据写入成功后发送该服务的肯定响应。
 

请求格式

正响应格式

负响应格式

0x14服务(清除故障码)

正响应需在诊断信息清除请求后, ECU 处理完成后发出,即使 ECU 没有存储的DTC,也需发出正响应报文。清除 DTC 的同时,所有 DTC 相关存储信息都应被清除。
 

请求格式

正响应格式

负响应格式

0x19服务(读故障码信息)

该服务允许客户端从服务器请求诊断信息(包括 DTC,捕获的数据等)。该服务允许客户端从车辆内的任何服务器或服务器组读取服务器驻留诊断故障代码(DTC)信息的状态。 除非另有说明,否则服务器应返回与排放有关的 DTC 信息和与排放无关的 DTC 信息。

请求格式

正响应格式

负响应格式

0x2F服务(通过 DID 控制输入输出)

该服务是用于通过 DID 来直接控制 ECU 对应的输入输出信号。

请求格式

正响应格式

负响应格式

0x31服务(例程控制)

请求格式

正响应格式

负响应格式

0x34服务(请求下载)

请求格式

正响应格式

负响应格式

0x36服务(传输数据)

请求格式

正响应格式

负响应格式

0x37服务(传输数据)

请求格式

正响应格式

负响应格式

NRC(负响应码)

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

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

相关文章

无涯教程-JavaScript - PMT函数

描述 PMT功能基于固定的还款额和固定的利率来计算贷款的还款额。 语法 PMT (rate, nper, pv, [fv], [type])争论 Argument描述Required/OptionalRateThe interest rate for the loan.RequiredNperThe total number of payments for the loan.RequiredPv 现在的价值,或一系列…

1462. 课程表 IV

文章目录 Tag题目来源题目解读解题思路方法一:Floyd传递闭包方法二:拓扑排序 思考写在最后 Tag 【拓扑排序】【传递闭包】【并查集】【数组】 题目来源 1462. 课程表 IV 题目解读 给你一个表示课程先决条件的数组 prerequisites,prerequis…

LeetCode:88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…

【深度学习】实验09 使用Keras完成线性回归

文章目录 使用Keras完成线性回归1. 导入Keras库2. 创建数据集3. 划分数据集4. 构造神经网络模型5. 训练模型6. 测试模型7. 分析模型 附:系列文章 使用Keras完成线性回归 Keras是一款基于Python的深度学习框架,以Tensorflow、Theano和CNTK作为后端&#…

AlwaysOn-关于读写分离的误区(一)

前言 很多人认为AlwaysOn在同步提交模式下数据是实时同步的,也就是说在主副本写入数据后可以在辅助副本立即查询到。因此期望实现一个彻底的读写分离策略,即所有的写语句在主副本上,所有的只读语句分离到辅助副本上。这是一个认知误区&#x…

多要素气象站:推动气象监测进入智能化新时代

一、多要素气象站概述 多要素气象站是一种集成了多种气象监测要素的自动化气象站,可实现对温度、湿度、风速、风向、气压、太阳辐射等多项气象参数的实时监测。相较于传统气象站,多要素气象站体积更小、能耗更低,且具备更高的测量精度和更广…

高精度加法[大整数运算]

这里只有大整数运算,浮点数相对来说很少使用到 前言 如果使用C内置的类型来存储大整数(位数有几万位),是会溢出的,得不到正确的值,即使是long long int类型的范围也只是[-9*10^19,9*10^19](无符号是[0,10^20]),所能存储的最大数字也就20位,所以需要高精度算法,高精度加法具体…

人脸签到系统 pyQT+数据库+深度学习

一、简介 人脸签到系统是一种基于人脸识别技术的自动签到和认证系统。它利用计算机视觉和深度学习算法来检测、识别和验证个体的面部特征,以确定其身份并记录其出现的时间。这个系统通常用于各种场景,包括企业、学校、会议、活动和公共交通等&#xff0c…

海格里斯HEGERLS托盘式四向穿梭车系统核心技术有哪些?

四向穿梭车立体仓库是常见的自动化立体库解决方案,可以应用在不规则、异型、长宽比较大或者少品种大批量、多品种大批量的仓库。其核心设备四向穿梭车克服了环形穿梭车的缺点,具有很高的灵活性和柔性。对于大型的立体库系统,四向穿梭车具有很…

2023最新计算机大数据毕业设计选题推荐100例

文章目录 0 前言1 如何选题1.1 选题技巧:如何避坑(重中之重)1.2 为什么这么说呢?1.3 难度把控1.4 题目名称1.5 最后 2 大数据 - 选题推荐2.1 大数据挖掘类2.2 大数据处理、云计算、区块链 毕设选题2.3 大数据安全类2.4 python大数据 游戏设计、动画设计类…

人工智能基础-趋势-架构

在过去的几周里,我花了一些时间来了解生成式人工智能基础设施的前景。在这篇文章中,我的目标是清晰概述关键组成部分、新兴趋势,并重点介绍推动创新的早期行业参与者。我将解释基础模型、计算、框架、计算、编排和矢量数据库、微调、标签、合…

HTTPS原理(证书验证+数据传输)

HTTPS协议相关的概念有SSL、非对称加密、CA证书等 为什么用了HTTPS就是安全的?HTTPS底层原理如何实现?用了HTTPS就一定安全吗? HTTPS实现原理 HTTPS在内容传输上的加密使用的是对称加密,证书验证阶段使用非对称加密 中间人攻…

无涯教程-JavaScript - INTRATE函数

描述 INTRATE函数返回完全投资证券的利率。 语法 INTRATE (settlement, maturity, investment, redemption, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMaturity 证券的到期…

innovus:如何设置clock cell list(icg logic_cells buffer inverter)

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 set_ccopt_property inverter_cells [list CKINV*LVT] set_ccopt_property buffer_cells [list CKBUF*LVT] set_ccopt_property clock_gating_cells [list CLKNQ*LVT set_cc…

数据结构与算法(一)数组的相关概念和底层java实现

一、前言 从今天开始,笔者也开始从0学习数据结构和算法,但是因为这次学习比较捉急,所以记录的内容并不会过于详细,会从基础和底层代码实现以及力扣相关题目去写相关的文章,对于详细的概念并不会过多讲解 二、数组基础…

数字化互联网数字孪生:重塑未来的创新思维

数字孪生是当今数字化互联网时代的一个引人注目的概念,它正在改变着各个行业的方式和节奏。数字孪生不仅是一种技术,更是一种思维方式。 数字化互联网的崛起 数字化互联网正在以前所未有的速度和规模改变着我们的生活和工作方式。从智能手机到物联网设备…

按图搜索淘宝商品(拍立淘)API接口 搜爆款商品 图片搜索功能api 调用示例

接口名称:item_search_img 公共参数 请求地址: 测试item_search_img 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_s…

品牌为什么要做价格管控

价格管控的目的其实是为了治理低价,低价的存在会使渠道变得不可控,比如经销商低价跟价,消费者因为低价而转投其他品牌,这些无形中都会影响品牌的销量,阻碍品牌发展,所以做价格管控,就是在做好低…

智慧公厕助推城市管理智能化和治理精细化

随着城市化进程的不断加快,城市管理面临着诸多挑战和问题。而智慧公厕作为城市数字化赋能的重要一环,正成为推动城市管理智能化和治理精细化的关键力量。本文将以智慧公厕头部厂家广州中期科技有限公司,所实施大量精品案例项目的实景实图&…

(源码版)2023全国大学生数学建模竞赛E题黄河水沙监测数据分析详解+Python代码源码SARIMA模型

前言 比赛结束了不知道大家情况如何,就我个人而言的话,由于工作任务比较繁重仅完成了对D题和E题的思路解答和建模,还是比较遗憾的。一个人要完成多题的建模和分析确实不是一件容易的事情,当然我向大家做出承诺历年的建模比赛我都…