uds诊断服务介绍

01

UDS简介

UDS协议即ISO-14229,是Unified Diagnostic Services,统一诊断服务,是诊断服务的规范化标准。与OBD最大的区别就是UDS是面向整车所有ECU(电控单元)的,而OBD是面向排放系统ECU的。本篇主要介绍UDS协议规定的常用的诊断服务的request和response的格式。

03

Request 和 response 的基本格式

一个完整的诊断服务包括request和response,有些诊断服务还包含一些子服务,即sub-function。诊断 在client向Server发送诊断请求后,server会检查一系列的条件,如果条件不满足,会回复相应的消极响应码(Negative Response Code NRC),用来指示请求失败的原因,此时的回复称为否定回复(Negative Response)。如果所检查的条件都满足了,但是在一个预定的时间间隔内服务还未处理完,可以设置回复一个NRC 0x78的响应,即response pending。服务完成后,会收到一个肯定响应(Positive Response)。

Server端一般的回复流程如下:

uds诊断服务介绍_第1张图片

Server端对于带子服务的request回复流程如下:

uds诊断服务介绍_第2张图片

上面涉及到的几个NRC的解释如下,更多的NRC可以参考ISO14229。

uds诊断服务介绍_第3张图片

下面几张图分别给出了UDS服务的含子服务的Request, 不含子服务的Request, Positive Response和Negative Response的一般格式。

含子服务的Request的一般格式:

uds诊断服务介绍_第4张图片

不含子服务的Request的一般格式:

uds诊断服务介绍_第5张图片

Positive response的一般格式:

uds诊断服务介绍_第6张图片

Negative response的一般格式:

uds诊断服务介绍_第7张图片

其中SID是服务的ID号,同一个服务的Positive Response SID = Request SID + 0x40。Negative response 的SID是0x7F。

03

 常用服务介绍

UDS诊断服务可以分为6大类:诊断和通信管理功能单元、数据传输功能单元、存储的数据传输功能单元、输入输出控制功能单元、例程功能单元和上传下载功能单元。

除了诊断和通信管理单元内的服务(如0x10会话控制服务, 0x3E会话保持服务)以外,最为常用的诊断服务基本就是数据传输功能单元中的服务(如0x22 读DID, 0x2E写DID)和存储数据传输单元中的服务(0x19 读DTC,0x14清DTC)。下面就简单介绍一下这几种常用的诊断服务。

a. 0x10会话控制服务和0x3E会话保持服务

该服务用于控制ECU在不同的会话模式之间切换,默认ECU处在子服务号为01的DefaultSession,很多服务需要切换到03 ExtendedSession中才能执行,当需要进行软件刷写时,则需要切换到02 ProgrammingSession。这三种模式的切换方式如下图:

uds诊断服务介绍_第8张图片

当ECU处于非DefaultSession时,如果一段时间没有诊断操作,将会退回到DefaultSession,这时候如果想要保持在非DefaultSession,可以通过0x3E会话保持服务,则ECU就会保持在当前的Session下。

 

b. 0x27 安全访问服务

为了提高安全性,对于某些服务可能会需要进行安全验证,即解锁。如对于有些DID的读或者写,在执行操作之前会需要先解锁,这时候就需要执行0x27服务。0x27服务是由一对子服务构成的,诊断仪向ECU请求seed和诊断仪向ECU发送key。Seed和Key一般会有一个算法,每个Seed对应唯一的一个Key,一般是在产线上注入,在诊断仪向ECU请求Seed后,ECU会返回一个Seed给诊断仪,诊断仪需要再发送对应的Key到ECU,ECU校验Key正确后解锁,诊断仪才能进行后续的操作。

 

c. 0x22 读DID服务和0x2E写DID服务

DID是数据ID,通过0x22服务,根据两个字节的ID,可以读出数据。根据request中给出的DID,一次0x22服务可以读取一个或多个DID的值。0x2E服务一般和0x22服务成对出现,用来通过数据ID对数据进行写操作。当然也有的DID是只读的,那么在进行诊断数据库配置的时候就要屏蔽对应的写服务。关于读写服务,还有其他多种,如0x23根据地址读内存信息,0x3D根据地址写内存信息等。

 

d. 0x19和0x14服务

0x19服务用于读故障码以及故障码的一系列相关信息。该服务的子服务非常多,如0x1901根据DTC状态掩码获取DTC数量,0x1902根据DTC状态掩码报告当前的DTC信息,0x1903获取当前的DTC以及对应的快照记录号,0x1904获取指定DTC的快照信息,0x1906获取扩展数据。这里提到的几个概念分别是DTC状态掩码,是DTC有8个状态位,根据对应的掩码可以获取状态符合条件的DTC。快照记录一般是与DTC相关的环境信息,和DID的值是关联的,一般是一组DID的值构成一个快照记录。扩展数据指的是DTC的一些内部数据,如DTC aging counter, occurrence counter等。0x14服务用于清除DTC。

 

以上提到的常用服务,对应的格式可以参考ISO14229-1,里面有详细的定义,在此就不一一介绍。

你可能感兴趣的:(uds诊断)