本文是 UDS 协议系列的第一部分,对统一诊断服务协议进行了讨论。本系列的目的是提供任何人都可以理解的简单实用示例。这是 UDS 协议简介 (统一诊断服务) – UDS 协议教程第 1 部分。
纵观汽车嵌入式系统的世界,可以看到奥迪、捷豹、宝马、奔驰等各种汽车制造商的繁华景象,每家制造商都采用独特的架构和软件来实现他们的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 模型的第五级 (会话层) 和第七层 (应用层) 。通用 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上的统一诊断服务UDS是一种基于客户端-服务端架构的基于请求和响应的协议,具有唯一的服务ID (SID) 。SID 是一个字节的大小,范围从 0x00 到 0x3E。
在详细了解帧格式之前,最好先了解什么是服务 ID 和子功能。它是一个 1 字节的标识符,它表示 ISO-14229 中定义的服务。服务端 (ECU) 看到此标识符,并根据此标识符执行操作。在 ECU 复位服务 ID (0x11) 下,有 3 个子功能 ID。使用子功能 ID 的请求
请求帧用于将请求从客户端 (测试器工具) 发送到服务端 (ECU) 。
在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中定义的。否定响应帧
在UDS诊断中,测试仪充当客户端,ECU充当服务端。当服务端 (ECU) 收到来自测试仪的服务请求时,ECU会检查该消息。如果服务端发现错误,则执行否定响应并发送否定响应代码 (NRC) 。下面给出了一些否定响应代码。
要修复、读取、写入或刷新新软件,测试人员需要将测试工具连接到ECU。如果我们想将ECU连接到系统,我们需要分配地址。
在物理寻址模式下,如果测试人员知道是哪个ECU导致了问题,则测试人员可以将测试工具直接连接到该特定ECU并获取故障代码 (DTC) 。为此,每个ECU都应该有自己的ECU标识号。
因此,测试仪与ECU连接并发送请求并从ECU获得响应。此方法称为物理寻址方法。在现代汽车中,许多ECU都基于不同的OEM可用。假设测试人员知道网络 (总线) 存在故障,但他无法找到导致网络中ECU的确切故障。现在,测试仪需要获取网络中所有ECU的故障代码 (DTC) 。
在车辆中,将有一个全局ECU标识符,该标识符将在所有CAN接收器中实现。因此,ECU可以接收请求并向测试人员做出响应。此方法称为功能寻址方法。