目录
1 UDS诊断的概念
UDS全称为Unified Diagnostic Services,统一的诊断服务。由ISO-14229系列标准定义。
诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同的诊断功能请求和响应之间定义了统一的内容和格式。位于OSI模型中的应用层。
作为汽车诊断通信重要构成部分,UDS在诊断中作用主要体现在以下几个方面
- 在诊断故障码中运用: 读取当前故障,历史故障,读取故障发生时环境信息,清除故障码
- 数据传输 :读取各种参数,下线配置
- 控制例程: 下线测试,身份认证,控制器reset等
- 上传下载: 刷新常用的诊断服务
2 Diagnostic request的格式:
Diagnostic request的格式可以分为两类:
一类是拥有sub-function的,
另一类是没有sub-function的,
Service ID(以下简称SID)的长度固定为1个字节,代表了这条诊断命令执行的什么功能。
sub-function的长度也是1个字节,它通常表示对这个诊断服务的具体操作,比如是启动、停止还是查询这个诊断服务。
而后面的parameter则根据各个诊断服务的不同具有不同的内容,长度和格式并没有统一规格,它用于限定诊断服务执行的条件,比如某个诊断服务执行的时间等。parameter的一个重要应用是作为标识符,标识诊断请求要读出的数据内容。
有一点要补充的是,其实sub-function严格来说是7个bit,而不是1个byte,因为它的最高位bit被用于抑制正响应(suppress positive response,SPR),如果这个bit被置1,则ECU不会给出正响应(positive response); 如果这个bit被置0,则ECU会给出正响应。这样做的目的是可以告诉ECU不要发不必要的response,从而节约通信资源。
Diagnostic response的格式:
Diagnostic response分为positive和negative两类。
positive response意味着诊断仪发过来的诊断请求被执行了,
而negative response则意味着ECU因为某种原因无法执行诊断仪发过来的诊断请求,而无法执行的原因则存在于negative response的报文中。
$10诊断会话 Diagnostic Session Control
$10包含3个子功能,
01 Default默认会话,
02 Programming编程会话
03 Extended扩展会话,
ECU上电时,进入的是默认会话(Default)。
例子:以CAN总线网络举例。CAN帧一共8个字节,第一字节被网络层占用。(ISO 15765-2的知识)
进入01会话成功,进入02会话失败,进入03会话成功
3 UDS 常用的诊断服务
10服务(诊断会话控制)、11服务(电控单元复位)、14服务(清除诊断信息)、19服务(读取故障码信息)、22服务(通过ID读数据)、27服务(安全访问)、28服务(通讯控制)、2E服务(通过ID写数据)、31服务(例行程序控制)、85服务(诊断故障码设置控制)等
10服务:诊断会话,10 01默认会话;10 02编程会话;10 03扩展会话;
11服务:该服务请求ECU根据复位的内容有效地执行ECU复位,11 01硬件复位;11 03软件复位
14服务:使用此服务来清楚ECU内存中的故障内存的诊断行行行;常见的请求命令为14FFFFFF
19服务:此服务读取ECU驻留诊断故障代码(DTC)信息的状态;常见用法是19 02 09读取当前和历史故障
22服务:该服务允许通过DID向ECU请求读取数据值;读取功能配置22 F1 01;网络配置22 F1 10等
27服务:该服务在向ECU请求写入数据时需要进行的解锁服务;请求种子2701;发送钥匙2702
28服务:用于“打开/关闭”ECU的某些消息的传输和/或接收,以及消息的通讯类型,常见的有28 01 只收不发
2E服务:该服务 允许通过DID在解锁条件下向ECU请求写入数据值;常见的为写入车辆的网络配2E F1 10 xx
2F服务:使用此服务来替换输入信号、内部ECU功能和\或控制由服务器的数据接口引用的电子系统的输出(执行器)
31服务:客户端使用此服务来启动/停止例程,并在服务器的内存中请求例程结果。通常刷写过程中会用到。