• 220查看
  • 0回复

[系统功能] UDS 诊断和通信管理

[复制链接]


该用户从未签到

发表于 11-5-2024 20:09:05 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在上一篇文章《什么是 UDS?为什么要用?帧格式?》中,我们已经看到了 UDS 协议的简介。本章,我们将看到 UDS 协议中的功能单元。特别是我们将看到诊断和通信管理及其支持服务。

首先,我们需要知道 UDS 协议中可用的 UDS 功能单元。

UDS 功能单元

诊断服务标识符分为以下功能单元:

    诊断和通信管理数据传输存储数据传输输入输出控制远程激活常规控制上传/下载
在本章中,我们将重点介绍诊断和通信管理。

诊断和通信管理

该诊断和通信管理功能单元用于控制ECU中的诊断和通信相关操作。它提供以下服务。

    诊断会话控制  -  (0x10)ECU复位  –  (0x11)安全访问  –  (0x27)通信控制  –  (0x28)身份验证  –  (0x29)测试设备在线  –  (0x3E)访问时序参数  –  (0x83)安全的数据传输  –  (0x84)控制 DTC 设置 –  (0x85)事件响应  –  (0x86)链路控制  –  (0x87)


诊断会话控制



诊断会话的服务 ID 为 0x10,响应 SID 为 0x50。
诊断会话控制是 UDS 使用的最重要的服务之一。诊断会话控制用于控制ECU的诊断会话。此服务用于将当前诊断会话更改为其他会话。
这些会话用于启用或禁用ECU中的一组特定诊断功能和特性。
UDS 中有许多可用服务,某些服务只有在 ECU 处于默认会话中时才能访问,而其他一些服务可以在其他会话中访问 ECU。
我们可以说这个诊断会话控制是访问ECU的网关。在执行任何诊断操作之前,此诊断服务应授予运行相应服务的访问权限。这是由汽车制造商决定的。
例如,假设在默认会话中,我们无法升级 ECU 的软件,因为默认会话无权对 ECU 进行重新编程。只有在编程会话中,我们才能由授权的线路工程师对ECU进行重新编程。
此诊断会话的主要目的是为 ECU 提供安全性。它将防止 ECU 进行不必要的访问。只有授权人员才能访问它。如果每个诊断服务都可以访问ECU,则它可能会因软件的错误闪烁而损坏。
因此,在发出任何诊断请求之前,客户端必须确保此服务在ECU当前会话中是可访问的或不可访问的。如果没有,则在执行所需的请求后首先发送会话更改请求。
如果服务器 (ECU) 处于非默认会话中,或者诊断处于非活动状态5秒钟,则ECU将进入默认会话。
这有许多子功能,下表中对此进行了解释。
子功能描述
默认会话 (0x01)此会话处于空闲状态。每当 ECU 通电时,它只会处于此默认会话中。ECU 将保持默认会话状态,直到从客户端请求另一个诊断会话。此会话中提供了写入数据字节标识符  (0x2E) 、读取数据字节标识符  (0x22) 、ECU 复位  (0x11) 、测试人员存在  (0x3E)  和读取 DTC  (0x19)   等服务。安全访问  (0x27)  不可用。与所有其他诊断会话控制子功能相比,此服务的安全性较低。示例:在车库中,有人正在尝试读取诊断故障代码  (DTC) 。
编程环节 (0x02)此会话用于对ECU进行编程或将数据从客户端传输到服务器。默认会话中允许的所有服务都允许在此会话中使用。如果此会话结束或过期,ECU 将进入默认会话。示例:编程会话是终端线工程师刷新校准软件。
扩展会话 (0x03)默认会话中允许的所有服务都允许在此会话中此会话还用于解锁其他诊断功能此会话中允许安全访问  (0x27) ,这意味着在此会话中已解锁安全级别如果此会话结束或过期,则 ECU 进入默认会话示例:此会话是下线工程师进行动态车辆测试以检查安全级别
安全系统 诊断系统 (0x04)用于测试所有安全关键型诊断功能。此诊断会话控制子功能具有很高的安全性。示例:此会话正在检查安全气囊和胎压监测器的安全性。
0x05 0x3F保留
特定车辆制造 (0x40 至 0x5F)此会话取决于每个 OEM,如果他们想根据自己的要求实现任何会话,他们可以使用它。
系统供应商特定 (0x60 0X7E)此会话也类似于车辆制造特定,但而不是车辆制造商,如果系统供应商想要根据其特定要求实施任何会话,则可以使用它。
0x7F保留

请求帧格式:请求帧格式如下所示。
PCI 长度SID子功能 ID

响应帧格式:有两种类型的响应帧。这是一个积极的回应和一个消极的回应。
积极回应:
PCI 长度SID+0x40子功能 ID

否定回应:
PCI 长度7FSID否定响应代码

请查看以下示例,了解诊断会话转换。
UDS 诊断和通信管理w1.jpg
如果我们想从一个非默认会话切换到另一个非默认会话,首先我们需要切换到默认会话,然后我们可以切换到另一个非默认会话。

ECU 复位



ECU 重置的服务 ID 为 0x11,响应 SID 为 0x51。

ECU复位服务用于重新启动车辆中的特定ECU或所有ECU。这项服务的动机是将ECU从故障或挂起状态或非工作状态中恢复。
在ECU复位期间,它不会接受来自客户端的任何请求,也不会向客户端发送任何响应。此服务在扩展会话中受支持。
复位成功后,ECU将返回默认会话。
这有许多子功能,下表中对此进行了解释。
子功能描述
硬复位  (0x01)硬复位意味着从ECU中取出电池 (电源) ,然后将ECU与电池重新连接。在这种类型的复位中,ECU会重新初始化系统的核心硬件组件,并且还会重新初始化非易失性和易失性存储器。此重置可能会丢失一些数据,因为在ECU运行期间电池突然被取出。
重置时键关闭  (0x02) )钥匙关开复位只是车辆的点火关断过程。这是微控制器的正常睡眠-唤醒模式。当我们进行 Key Off  On 复位 ECU 时,不会立即断电。它将进入启动模式,然后将所有数据存储在非易失性存储器中,并在不丢失任何数据的情况下取消初始化硬件变量。在这种重置方法中,没有丢失数据的机会。这是重置的正确方法,大多数 OEM 都在使用这种类型的 ECU 重置。
软复位  (0x03)软重置只不过是重新启动应用程序的主要软件。当我们进行这种类型的重置时,微控制器的堆栈指针指向 main ()   函数的地址。然后它将首先开始执行。例如,将进行看门狗重置。每当挂起或发生任何故障时,该看门狗定时器将重置微控制器,并从 main ()   函数启动。
启用快速电源关断  (0x04)在这种类型的复位中,不会发生点火关闭。ECU将进入睡眠模式,ECU随时准备唤醒。
禁用快速电源关机  (0x05)此服务用于禁用以前启用的快速电源关机。

以下示例说明了ECU复位过程。
UDS 诊断和通信管理w2.jpg

安全访问

安全访问的服务 ID 为 0x27,响应 SID 为 0x67。
此安全访问诊断服务用于提供对 UDS 协议服务的安全访问,以避免安全漏洞。出于安全考虑,某些诊断数据和服务可能会受到限制。
此服务将授予对特定服务的读取和写入访问权限。在处理任何服务 ID  (SID)  操作之前,必须检查安全访问,以了解客户端是否有权对此 SID 进行读取或写入。
例如,要上传和下载软件,无法由所有人访问常规控制和VIN (车辆识别号) DID,一些授权测试人员只能访问这些SID。
安全访问权限基于这两个授予,

    1.Seed  (0x01)2.key  (0x02)


    测试人员使用 SID 0x27和子功能 ID 0x01发送解锁 ECU 的请求。0x01意味着请求种子。UDS 服务器接收请求,假设条件正确,并根据加密算法生成随机种子和密钥,服务器将种子发送到客户端并得到肯定的响应。使用接收到的种子,测试工具生成密钥并将此密钥发送到服务器,以使用 SID 0x27和子功能 ID 0x02解锁 ECU。0x02 表示关键。如果测试工具 (客户端) 发送的解锁密钥与服务器期望密钥匹配,则发送肯定响应并解锁ECU,否则将发送带有特定否定响应代码的否定响应。

以下示例说明了整个过程。
UDS 诊断和通信管理w3.jpg

通信控制

通信控件的服务 ID 为 0x28,响应 SID 为 0x68。

此通信控制服务用于控制ECU服务器的通信。这意味着此服务通过诊断线启用或禁用来自服务器  (ECU)  的消息的传输或接收。此服务用于控制ECU的发射器和接收器。测试人员可以同时使用多种类型的通信。
在希望为所有或一组ECU停止通信的上下文中,此服务非常有用。例如,可以在软件下载期间使用它,以最大限度地提高可用带宽。
有 3 种类型的通信类型可用,它们是:

    1.正常通信消息  (0x01)2.网络管理通信消息  (0x02)3.正常通信消息和网络管理通信消息  (0x03)

下表解释了子功能。
子功能描述
启用 Tx 和启用 Rx  (0x00)在此类型中启用消息的传输和接收。
启用 Rx 并禁用 Tx  (0x01)在此类型中,消息的传输被禁用,消息的接收被启用。
禁用 Rx 并启用 Tx  (0x02)在此类型中,消息的传输处于启用状态,消息的接收处于禁用状态。
禁用 Tx 和 Rx  (0x03)在这种类型的通信中,消息的传输和接收都被禁用。

以下示例说明了整个过程。
UDS 诊断和通信管理w4.jpg

认证

此身份验证服务是在 ye 之后添加的ar 2020,这用于为比安全会计允许的更现代的身份验证方法提供标准化方法ess  (0x27) 服务,包括使用基于 PKI 的证书交换进行双向身份验证。
身份验证的服务 ID 为 0x29,响应 SID 为 0x69。

测试设备在线

测试设备的服务 ID 为 0x3E,响应 SID 为 0x7E。
它是UDS协议中的重要服务之一,我们将看到这个服务ID的用途。此服务用于向服务器指示客户端仍连接到服务器。此服务用于使服务器在当前会话中保持活动状态,默认会话除外。
为了使客户端保持在当前会话 (非默认会话) 中,使用测试器在场  (0x3E) ,客户端将定期发送此服务  (0x3E) 。
如果客户端与服务器交换任何数据的时间不超过大约 5 秒的 S3 计时器值 (此计时值在下面的 S3 计时器中进行了说明) ,则出于安全考虑,服务器  (ECU)  将断开连接并自动回退到默认会话。
下表解释了子功能。
子功能
0x00 – 不支持 SuppressPosResMsgIndication  (SPRMI)   
0x80 – SuppressPosResMsgIndication  (SPRMI)   支持 (第 7 位已设置 –  (SPRMIB) )

什么是 S3 计时器?S3 服务器参数是在每个 ECU 中实现的服务器  (ECU)  端时序参数。S3 服务器参数的主要功能是在超时后从非默认会话 (编程、扩展、安全系统会话) 自动返回到默认会话。超时值仅基于 S3 参数。
当测试人员请求更改为非默认会话时,S3 计时器将启动,并且 S3 计时器值可能因 OEM 而异,但大多数 OEM 将 S3 值保留为 5 秒。
为什么我们需要 S3 计时器?如果客户端在该期间的非默认会话中没有执行任何操作,则为了安全起见,ECU将自动进入默认会话。
假设服务器在超时后不进入默认会话并保持在相同的非默认会话中。不知道如果我们启动车辆,ECU将无法工作。因此,可能会发生事故或其他故障。
SPRMIB:抑制正响应消息指示位  (SPRMIB) 仅在具有子功能字节的子功能服务中受支持。该位用于定义 ECU 的正响应是否要向客户端公开。
suppressPosResMsgIndicationBit仅通过 CAN 接口受支持,而 K 线和 ITS 接口不受支持。
如果服务支持 suppressPosResMsgIndicationBit,则位 7 将解释为 suppressPosResMsgIndicationBit。

    当位 7 为“1” (SPRMIB=1)  时,ECU 不会向客户端发送正响应,这意味着它将抑制正响应。当位 7 为“0” (SPRMIB=0) 时,ECU 将向客户端发送正响应,这意味着不抑制正响应。如果服务不支持 SPRMIB,则它将发送否定响应 (不支持子函数) ,并显示 suppressPosResMsgIndicationBit (SPRMIB) =1。
注意:使用 SPRMIB 我们只能抑制积极的反应。否定反应不能被抑制。
以下是一些具有支持 SPRMIB 的子功能的服务。
SID服务
0x10诊断会话控制
0x11ECU复位
0x19阅读 DTC (诊断故障代码) 信息
0x27安全访问
0x28通信控制
0x31日常控制
0x3E测试人员在场
0x83访问时序参数
0x85控制 DTC 设置
0x87链路控制

下面的例子解释了积极响应的完整过程。
UDS 诊断和通信管理w5.jpg
如果服务不支持 SPRMIB,则它将发送否定响应  (不支持子函数)  suppressPosResMsgIndicationBit  (SPRMIB) = 1。
我们知道现在的测试器只有两个子功能,即0x00和0x80。因此,不支持0x01 0x7F。如果发送不支持的子函数,则它将发送否定响应。
下面的示例解释了否定响应的完整过程。
UDS 诊断和通信管理w6.jpg

访问时序参数



访问计时参数的服务 ID 为 0x83,响应 SID 为 0xC3。
此访问计时参数服务用于在此通信期间读取和写入通信链路的默认计时参数。在控制器和客户端之间的通信中,必须遵守某些时间。
如果在未发送任何消息的情况下超过这些值,则必须假定连接已中断。通过使用此服务,可以读取/写入超时值和消息间隔时间。
下表解释了子功能。
子功能
0x01 – 读取扩展时序参数集
0x02 – 将时序参数设置为默认值
0x03- 读取当前活动的时序参数
0x04- 将时序参数设置为给定值
建议在物理寻址方法中使用此服务  (0x83) ,因为服务器支持一组不同的扩展时序参数。

控制 DTC 设置

控件 DTC 设置的服务 ID 为 0x85,响应 SID 为 0xC5。
通常,诊断故障代码 (DTC) 用于指示由ECU引起的故障。在某些情况下,测试人员可能会认为不检测ECU中发生的某些错误。
届时,我们可以使用这项服务。当客户端/测试人员在发生故障时需要停止或恢复服务器/ECU更新DTC时,使用控制DTC设置服务。
当客户知道车辆中的问题但试图通过做一些额外的实验来找到根本原因时,这将非常有帮助。
控制DTC设置服务用于打开或关闭故障错误代码的检测。
当客户端请求服务器关闭时,服务器会收到请求并暂时关闭此功能,并且服务器将保留当前值并挂起新值。
稍后,当客户端请求服务器打开时,服务器将使用新值进行更新。
如果在控制 DTC 设置处于 OFF 状态时,用户请求清除诊断信息服务  (0x14) ,则服务器仍可能清除 DTC 信息。
如果客户端在服务器的 DTC 设置已处于 OFF 模式时请求关闭服务,则服务器将以肯定响应进行响应,并将忽略该请求。
下表解释了子功能。
子功能
打开 – 0x01
关闭 - 0x02

以下示例说明了整个过程。
UDS 诊断和通信管理w7.jpg

事件响应

“事件响应”的服务 ID 为0x86,“响应 SID”为0xC6。
此事件响应服务请求服务器启动或停止对特定事件的响应传输。当发生特定事件时,此服务会自动执行诊断服务,而无需从客户端获取请求。
客户端使用可选事件参数指定事件,并使用在事件发生时要执行的服务参数指定服务。使用此服务测试仪可以将ECU配置为在发生任何定义的事件时向测试仪发送响应,而无需请求。
例如,假设电源中断是车辆中的事件。如果在驱动ECU时发生电源中断,它将不会等待测试人员的请求。ECU会将响应发送给测试仪/客户端。在这种情况下,测试人员将收到否定的响应。
下表解释了子功能。
子功能
0x00 – 停止事件响应
0x01- 关于 DTC 状态更改
0x02 – 定时器中断
0x03 – 关于更改数据标识符
0x04 – 报告激活的事件
0x05 – 在事件时开始响应
0x06 – 对事件的明确响应
0x07-关于价值的比较


链路控制

链接控件的服务 ID 为 0x87,响应 SID 为 0xC7。
链路控制可用于更改客户端和服务器之间的通信参数,以提高波特率。因此,测试人员可以非常快速地在测试人员和服务器之间交换数据。
下表解释了子功能。
子功能
0x01 – 使用固定波特率验证波特率转换
0x02 – 使用特定波特率验证波特率转换
0x03 – 转换波特率

好的,我们认为我们已经涵盖了诊断和通信管理功能组中的大多数服务。在下一个教程中,我们将讨论数据传输功能组。

未完待续。。。

UDS 基础知识完整系列,可在 "搞一下汽车电子平台" 观看限时免费~

完整目录

1. UDS 协议简介 (统一诊断服务)     1.1. 什么是UDS协议?     1.2. 为什么我们需要对车辆进行诊断?     1.3. 通信协议和诊断协议之间的区别     1.4. 诊断方案标准的演变     1.5. 可用的 ISO-14229 标准     1.6. UDS 协议帧格式          1.6.1. 服务 ID          1.6.2. 子功能          1.6.3. 请求帧格式          1.6.4. 响应帧格式     1.7. UDS协议寻址方法          1.7.1. 物理寻址          1.7.2. 函数寻址2. 诊断和通信管理功能组     2.1. UDS功能单元     2.2. 诊断和通信管理          2.2.1. 诊断会话控制          2.2.2. ECU复位          2.2.3. 安全 Security 访问          2.2.4. 通信控制          2.2.5. 认证          2.2.6. 测试设备在线          2.2.7. 访问时序参数          2.2.8. 控制 DTC 设置          2.2.9. 事件响应          2.2.10. 链路控制3. UDS协议中的数据传输     3.1. 先决条件     3.2. UDS协议中的数据传输     3.3. 按标识符  (DID)  划分的数据     3.4. 按标识符读取数据  (RDBI)          3.4.1. 帧格式          3.4.2. 示例 – 单个 DID          3.4.3. 示例 – 多个 DID     3.5. 按地址读取内存          3.5.1. 帧格式          3.5.2. 例     3.6. 按标识符读取缩放数据          3.6.1. 什么是扩展数据?          3.6.2. 例     3.7. 按定期标识符读取数据     3.8. 动态定义数据标识符          3.8.1. 请求帧格式          3.8.2. 肯定响应帧格式     3.9. 按标识符写入数据  (WDBI)          3.9.1. 请求帧格式          3.9.2. 肯定响应帧格式          3.9.3. 例     3.10. 按地址写入内存4. 输入输出在 UDS 协议中放置控制     4.1. UDS协议中的输入输出控制     4.2. 帧格式     4.3. 例     4.4. 支持的否定响应5. 远程激活 UDS 协议中的常规控制     5.1. 远程激活常规控制     5.2. 日常控制服务     5.3. 例行功能单元 – 帧格式     5.4. 远程激活常规控制 – 示例     5.5. 支持的否定响应代码6. UDS协议中的上传下载功能单元     6.1. 上传 下载 UDS 协议中的功能单元          6.1.1. 在UDS协议中请求下载服务          6.1.2. 在UDS协议中请求上传          6.1.3. 传输数据服务          6.1.4. 请求转机退出服务          6.1.5. 请求文件传输服务


快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 10:44 , Processed in 0.212333 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.