什么是 UDS?为什么要用?帧格式?

文摘   2024-10-08 07:50   上海  
本文是 UDS 协议系列的第一部分,对统一诊断服务协议进行了讨论。本系列的目的是提供任何人都可以理解的简单实用示例。这是 UDS 协议简介 (统一诊断服务) – UDS 协议教程第 1 部分。


什么是 UDS 协议



纵观汽车嵌入式系统的世界,可以看到奥迪、捷豹、宝马、奔驰等各种汽车制造商的繁华景象,每家制造商都采用独特的架构和软件来实现他们的ECU。单一汽车品牌应该完全与自己的ECU保持一致的日子已经一去不复返了。
如今,合作扩展到从各种制造商采购ECU。这种动态的相互作用需要一种灵活的测试人员沟通方法,因为统一的语言无法满足每个汽车品牌独特的沟通需求。
输入解决方案:标准化协议。这种诊断通信协议被称为统一诊断服务 (UDS) ,可协调全球汽车电子领域的ECU诊断。
体验 UDS 的无缝衔接,因为它弥合了制造商之间的差距,并开创了汽车诊断的新时代。
“统一”一词意味着它是一个通用标准,而不是特定的公司标准,因此所有ECU制造商 (OEM) 的服务和功能都是相同的。“诊断”一词意味着它是一种识别车辆任何类型疾病 (故障) 的技术。它还允许我们重新编程和校准传感器。

测试仪与ECU通信,每辆车都有OBD (车载诊断) 接口端口。借助OBD接口电缆,我们可以与汽车连接,并且可以读取故障代码或重新编程或校准传感器。

为什么要对车辆进行诊断

在当今的现代车辆中,有 100 多个微型控制单元可以处理不同的任务,例如管理电池、控制变速箱、处理制动,甚至照顾娱乐系统。但是当出现问题时,就像一个人生病一样。

就像一个人去看医生找出问题并找到解决方案一样,车辆也需要弄清楚它的问题。它通过使用称为“故障代码”或“诊断故障代码  (DTC) ”的东西来实现此目的。此代码告诉我们车辆出了什么问题。
为了帮助解决这个问题,有一种特殊的与控制单元通信的方式,称为统一诊断服务 (UDS) 协议。这就像车辆问控制单元,“嘿,发生了什么事?控制单元会给出一个答案,帮助我们理解问题。
我们使用一种特殊的工具与控制单元进行通信。此工具连接到控制单元并获取故障代码。这有点像我们和车辆之间的翻译。这种通信可以使用不同的方式进行,例如通过 CAN、LIN 或 K 线方法。

因此,就像人们需要与医生交谈以找出问题所在一样,车辆使用UDS协议和工具与他们的控制单元交谈,并在出现问题时找出发生了什么。
通信协议指的是它用于在两个微控制器之间进行通信,或在控制器和计算机之间进行通信以传输数据。在汽车电子领域,我们有 ECU (电子控制单元) 。这些诊断协议用于识别ECU中的故障。

诊断方案标准的演变

在引入 UDS 之前,有许多诊断协议,例如 KWP2000、K-Line 诊断和 ISO-15765。汽车原始设备制造商和供应商已同意将统一诊断服务 (UDS) 作为标准协议,以确保国际兼容性。
此诊断协议在 ISO-14229标准中定义,该协议基于开放系统互连  (OSI)  模型,它使用 OSI 模型的第五级 (会话层) 和第七层 (应用层) 。

可用的 ISO-14229 标准

通用 UDS 协议在 ISO-14229 的某些子标准中定义。此外,标准 ISO-14229 由以下部分组成,
1. ISO 14229-1:UDS协议的规范和要求
2. ISO 14229-2:UDS 协议的会话层服务
3. ISO 14229-3:CAN实施上的统一诊断服务 (UDSonCAN) 
4. ISO 14229-4:FlexRay实施 (UDSonFR) 上的统一诊断服务
5. ISO 14229-5:互联网协议实施  (UDSonIP)  上的统一诊断服务
6. ISO 14229-6:K-Line 实施  (UDSonK-Line)  上的统一诊断服务
7. ISO 14229-7:本地互连网络实施  (UDSonLIN)  上的统一诊断服务
8. ISO 14229-8:UDSon上的统一诊断服务

协议 ISO-14229标准 1

UDS 协议帧格式

UDS是一种基于客户端-服务端架构的基于请求和响应的协议,具有唯一的服务ID (SID) 。SID 是一个字节的大小,范围从 0x00 到 0x3E。

基本上有 4 种类型的帧格式,
1. 具有子功能 ID 的请求帧
2. 没有子功能 ID 的请求帧
3. 肯定响应帧
4. 否定响应帧
在详细了解帧格式之前,最好先了解什么是服务 ID 和子功能。

服务 ID


它是一个 1 字节的标识符,它表示 ISO-14229 中定义的服务。服务端  (ECU)  看到此标识符,并根据此标识符执行操作。
例如,服务 ID:0x11-这是 ECU 重置。

子功能


它是服务 ID 的一部分,并且是可选字段。
在 ECU 复位服务 ID  (0x11)  下,有 3 个子功能 ID。
1. 硬复位 (0x01) 
2. 复位时键控 (0x02) 
3. 软复位 (0x03) 

请求帧格式


使用子功能 ID 的请求

请求帧用于将请求从客户端 (测试器工具) 发送到服务端 (ECU) 。
服务 ID  (SID)
子功能 ID
数据参数
没有子功能 ID 的请求
服务 ID  (SID) 
 数据参数


响应帧格式



肯定响应帧
在UDS诊断中,测试仪充当客户端,ECU充当服务端。当服务端 (ECU) 收到来自测试仪的服务请求时,服务端会检查该消息。如果一切正常,则执行请求的服务并以肯定的响应响应客户端。如果响应为正,则 SID 的第 6 位应为 1。
例如:
服务 ID – 0x31 => 0 0 1 1 0 0 0 1
对于正响应,0 1 1 1 0 0 0 1 等于 0x71  (0x31 + 0x40) 。
换句话说,我们可以说肯定响应意味着 SID+ 0x40,这没有逻辑上的原因。简单地说,它是在国际标准IS0-14229-1中定义的。
服务 ID  (SID)  +

            0x40
   子功能 ID
 数据响应代码
具有子功能 ID 的肯定响应
服务 ID  (SID)  + 0x40
  数据响应代码

否定响应帧

在UDS诊断中,测试仪充当客户端,ECU充当服务端。当服务端 (ECU) 收到来自测试仪的服务请求时,ECU会检查该消息。如果服务端发现错误,则执行否定响应并发送否定响应代码 (NRC) 。下面给出了一些否定响应代码。
1. 一般拒绝 – 0x10
2. 不支持子功能 – 0x12
3. 不正确的消息长度  (IML) – 0x13
4. 繁忙的重复请求 – 0x21
5. 条件不正确 – 0x22
6. 请求序列错误 – 0x24
7. 请求超出范围  (ROOR) – 0x31
8. 安全访问被拒绝 – 0x33
9. 无效的密钥 – 0x35
           0x7F
   服务 ID
 否定响应代码



UDS协议寻址方法

要修复、读取、写入或刷新新软件,测试人员需要将测试工具连接到ECU。如果我们想将ECU连接到系统,我们需要分配地址。

有 2 种类型的寻址方法。
1. 物理寻址
2. 功能寻址

物理寻址


在物理寻址模式下,如果测试人员知道是哪个ECU导致了问题,则测试人员可以将测试工具直接连接到该特定ECU并获取故障代码 (DTC) 。为此,每个ECU都应该有自己的ECU标识号。

因此,测试仪与ECU连接并发送请求并从ECU获得响应。此方法称为物理寻址方法

功能寻址


在现代汽车中,许多ECU都基于不同的OEM可用。假设测试人员知道网络 (总线) 存在故障,但他无法找到导致网络中ECU的确切故障。现在,测试仪需要获取网络中所有ECU的故障代码 (DTC) 。

在车辆中,将有一个全局ECU标识符,该标识符将在所有CAN接收器中实现。因此,ECU可以接收请求并向测试人员做出响应。此方法称为功能寻址方法。
在下一个教程中,我们将讨论功能组诊断和通信管理。


谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章