UDS诊断学习笔记
定义介绍:
UDS(Unified Diagnostic Service)诊断的诊断服务。诊断协议是面向整车所有ECU(电控单元)的一种诊断通信协议,是诊断服务的规范化标准。
UDS本质上是一系列服务的集合,UDS的服务包含了6大类,共26种,每种服务都有自己独立的ID,即SID(Service Identifier)
通信模式:
实际上是与ECU交互的过程,即诊断仪请求(Request)ECU,ECU给出对应响应(Response)。
UDS寻址模式:
1.物理寻址,点对点,一对一,可根据物理地址的不同进行访问,但只能访问单个节点。
2.功能寻址,广播模式,一对多,根据功能的不同进行访问,它可以访问多个ECU节点,其SID对于标准帧来说,通常是7DF。
UDS的服务:
罗列出常用的15种服务,支持子功能的有10、11、27、28、3E、85、19、31,子功能通常是这些服务具有某些已经定义好的功能。
1.$10
10服务是Diagnostic Session Control诊断会话控制,子功能有01、02、03三种,这三种代表10服务可以进入的3种不同的会话模式。
01 Default默认会话,02 Programming编程会话(用于解锁bootloader相关的诊断服务,即程序烧录。),03 Extended扩展会话,ECU上电时,进入的是默认会话(Default)。
指令格式:
请求:10 SF
SF:子功能,比如01、02、03,编程会话只能通过先进扩展会话之后再进编程会话,当前为编程会话,不能直接发10 03跳转到扩展会话。
肯定相应:50 SF sessionParameterRecord[](4byte)
0x40+SID=0x50
SF是对应请求的子功能,请求是什么子功能,他便显示什么子功能。
会话参数记录有P2Server_max(2byte)和P2*Server_max(2byte),高位在前的表示方式。
P2Server_max:指的是ECU在收到请求和给出响应之间的这个时间间隔,他描述了ECU的反应速度。
P2*Server_max:在ECU给出NRC 78(等待)之后生效,所以会需要更长的反应时间。
否定相应:7F SID NRC(否定相应码)
否定相应格式一定,SID对应请求的SID,NRC为Negative Response Code,即会有一些类似于一个指令格式或数据是否正确的判断,在发送不是一个正常指令时,ECU就会给你这个NRC,相当于一个提示,可以通过不同的NRC判断指令的错误原因。比如常见的7E表示SF在此会话不支持(在编程会话发10 03即会出现)、12表示SF不支持(发10 FF这种不支持的SF)、13表示发出的此SID格式长度不符合标准定义的SID的格式(10服务定义的两个byte,发10 01 01,即会得到此NRC)。
以下服务,下期再解析。
2.$11
11服务是ECU Reset复位
3.$27
27服务是Security Access安全访问
4.$28
28服务是Communication Control通讯控制
5.$85
85服务是Control DTC Setting控制DTC设置
6.$22
22服务是Read Data By Identifier读DID
7.$2E
2E服务与22服务相对,是Write Data By Identifier写DID
8.$14
14服务是Clear Diagnostic Information清诊断信息
9.$19
19服务是Read DTC Information 读取故障码信息
10.$2F
2F服务是Input Output Control By Identifier通过ID控制输入输出
11.$31
31服务是Routine Control例程控制
12.$34
34服务是Request Download请求下载
13.$36
36服务是Transfer Data数据传输
14.$37
37服务是Request Transer Exit请求推出传输
15.$3E
3E服务是Tester Present待机握手