UDS简介
UDS ( Unified Diagnostic Services 统一的诊断服务 )是一种 通用的诊断服务标准 ,用于汽车电子控制单元(ECU)的诊断和调试。UDS是ISO 14229标准定义的一种通信协议,可以在CAN、LIN等多种总线上进行通信。
UDS协议定义了一套标准的诊断服务,包括会话控制、诊断请求、诊断响应和ECU编程等功能。通过UDS协议,诊断工具可以向ECU发送特定的请求,获取ECU的状态信息和故障码,诊断和解决故障问题。
UDS协议被广泛应用于汽车电子控制系统的诊断和调试,成为现代化汽车制造的重要组成部分。
简单理解就是按照UDS协议格式,进行一问一答,只是UDS协议复杂,让人觉得晦涩难懂。掌握基本的概念和原理,懂得查阅标准即可,一开始不用刻意去记,翻得多了就记住了。
本文分享的诊断都是C AN总线诊断服务 ,后面分享的文章也是
为什么需要UDS
在汽车诊断协议诞生之前,汽车出故障了,只能靠修车师傅的经验,因为汽车零部件不会告诉你它哪里出了问题。
但有了诊断协议之后,一旦零部件出了问题或者出过问题,它们会把故障信息保存在内存里面,修车师傅就可以通过通信总线读取这些故障信息,比如一个ECU经历高温或欠压故障之后,它会将故障代表的DTC(诊断故障码)存储起来,可选择性保存的还有发生故障时的快照信息(比如此时的车速、读到的电压值等)。快照信息有助于测试工程师和售后工程师查找发生故障的原因。这样就大大提高了维修师傅的修车效率了。
UDS特点
- 支持多种总线:UDS协议可以在CAN、LIN等多种总线上进行通信,具有较强的适用性。
- 提高诊断效率:UDS协议定义了一套标准的诊断服务,可以提高诊断工具的兼容性和效率。
- 增加诊断功能:UDS协议支持ECU编程等高级诊断功能,可以满足更复杂的诊断需求
UDS格式介绍
诊断Request格式:
格式1:[Service Identifier] + [Sub-function]
格式2:[SID] + [DID]
格式3:[SID] + [Sub-function] + [DID]
常见的诊断服务
Positive Response:
Diagnostic response分为positive和negative两类。positive response意味着诊断仪发过来的诊断请求可以执行了,而negative response则意味着ECU因为某种原因无法执行诊断仪发过来的诊断请求,而无法执行的原因则存在于negative response的报文中。
格式1:[SID + 0x40] + [Sub-function]
格式2:[SID + 0x40] + [DID]
格式3:[SID + 0x40] + [Sub-function] + [DID]
Negative Response:
Negative Response的格式固定为3个字节,第一个字节为0x7F,第二个字节是SID,第三个字节是这个诊断服务无法被执行的原因
[0x7F] + [SID] + [NRC]
常见的否定响应码
UDS的寻址模式
UDS的寻址模式有两种:物理寻址和功能寻址
物理寻址 ( 点对点、一对一 ),根据物理地址的不同进行访问,但只能访问单个ECU节点,Tester为SA源地址,ECU作为TA目标地址;
功能寻址 ( 广播、一对多 ),根据功能的不同进行访问,它能访问多个ECU节点,对于标准帧来说,通常是0x7DF。
UDS的OSI模型
ISO 14229 也就是UDS协议仅对应用层、会话层做出了定义。 UDS不是专指ISO 14229-1。 UDS包含了ISO 14229 下属的7个子协议,其中ISO 14229-2 还是会话层的,所以 UDS仅包括应用层的说法是错误的 。
(文章来源:嵌入式老林 )