UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765 和ISO 14229 定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽车总线(例如CAN, LIN, Flexray, Ethernet 和 K-line)上实现。UDS协议的应用层定义是ISO 14229-1,目前大部分汽车厂商均采用UDS on CAN的诊断协议。
UDS本质上是一系列的服务,共包含6大类26种。每种服务都有自己独立的ID,即SID。
SID:Service Identifier,诊断服务ID。UDS本质上是一种定向的通信,是一种交互协议(Request/Response),即诊断方给ECU发送指定的请求数据(Request),这条数据中需要包含SID。
如果是肯定的响应(Positive Response),回复[SID+0x40],如请求10,响应50;请求22,响应62。
如果是否定的响应(Negative Response),回复7F+SID+NRC,回复的是一个声明。
肯定响应和否定响应的形式一定要熟记。
常用服务介绍
UDS的26种服务中,有7种很重要。它们分别是:
$10 Diagnostic Session Control(诊断会话),
$14 Clear Diagnostic Information(清除诊断信息),
$19 Read DTC Information,
$22 Read Data By Identifier(通过ID读数据),
$27 Security Access(安全访问),
$2E Write Data By Identifier(通过ID写数据),
$3E Tester Present(待机握手)。
image
下面对这7个服务进行解读。
$10诊断会话
$10包含3个子功能,
01 Default,
02 Programming,
03 Extended,
ECU上电时,进入的是默认会话(Default)。如果您进入了一个非默认会话的状态,一个定时器会