UDS诊断协议规范与要求

1.UDS简介

1.1标准介绍

国际标准ISO 14229,基于OSI基本模型实现。如下所示:
应用层(第7层),ISO 14229-1,ISO 14229-3 UDSonCAN,ISO 14229-4 UDSonFR,ISO 14229-5 UDSonIP,ISO 14229-6 UDSonK-Line,ISO 14229-7中规定的统一诊断服务UDSonLIN,进一步补充了ISO 27145-3 WWH-OBD。
表示层(第6层),特定车辆制造商,ISO 27145-2 WWH-OBD。
会话层(第5层),在ISO 14229-2中做了描述。
传输层(第4层),在ISO 15765-2 DoCAN中做了描述,包括FlexRay上的ISO 10681-2通信,ISO 13400-2 DoIP,ISO 17987-2 LIN,ISO 27145-4 WWH-OBD。
网络层(第3层), 在ISO 15765-2 DoCAN中做了描述,在FlexRay上的ISO 10681-2通信,ISO 13400-2 DoIP,ISO 17987-2 LIN,ISO 27145-4 WWH-OBD。
数据链路层(第2层),在ISO 11898-1,ISO 11898-2,ISO 17458-2,ISO 13400-3,IEEE 802.3,ISO 14230-2,ISO 17987-3 LIN和其他标准ISO 27145- 4 WWH-OBD中做了描述。
物理层(第1层),在ISO 11898-1,ISO 11898-2,ISO 17458-4,ISO 13400-3,IEEE 802.3,ISO 14230-1,ISO 17987-4 LIN和其他标准ISO 27145-4中对 WWH-OBD做了描述。

ISO 14229由以下部分组成,总标题为道路车辆 - 统一诊断服务(UDS):
第1部分:规范和要求
第2部分:会话层服务
第3部分:CAN实施的统一诊断服务(UDSonCAN)
第4部分:FlexRay实现的统一诊断服务(UDSonFR)
第5部分:Internet协议实施的统一诊断服务(UDSonIP)
第6部分:K线实施的统一诊断服务(UDSonK-Line)
第7部分:本地互联网络实施(UDSonLIN)上的统一诊断服务
第n部分:统一诊断服务在…实施(UDSon …)
其中ISO-14229 包括ISO 14229-1和ISO 14229-2(会话层服务)两部分。
诊断测试仪(客户端)和电子控制单元(ECU,服务器)基于该协议进行通讯。
OSI诊断模型
在这里插入图片描述

1.2使用介绍

1.2.1 常见名词解释

诊断故障码DTC:识别故障状态的数字通用标识码;
永久性DTC:执行DTC清除请求所无法清除的故障信息,存储在非易失性存储器,知道满足特定指令或达到特定标准(如监管);
重新编程软件:部分启动软件允许重新编程ECU;

1.2.2诊断数据类型

常见诊断数据有车速、车门控制、系统状态、镜像位置等。数据类型分类如下所示:

  1. 当前值/实时值;
  2. 存储值,如故障状态下存储的信息;
  3. 静态值,如VIN;

2.诊断报文格式

2.1诊断请求报文

在这里插入图片描述
spr=1,ECU不给出正响应;
spr=0,ECU给出正响应;
目的:告诉ECU是否需要发送响应数据;

2.2诊断应答报文

在这里插入图片描述
正响应报文:

byte1:response service id = service id + 0x40;

负响应报文:

byte1:response service id = 0x7F;
byte2:spr + sub-function = service id;
byte3:NRC,诊断指令执行失败错误码;
eg:7F 22 13 ;7F代表负响应,22代表服务类型,其中13代表请求消息错误。

否定响应码(NRC):

0x01- 0x0F:暂保留;
0x10:未知错误,服务被拒绝;
0x11:不支持该服务请求;
0x12:不支持子功能;
0x13:消息长度或格式错误;
0x14:请求信息长度超出;
0x15 - 0x20:暂保留;
0x21:服务端正忙;
0x22:条件不满足;
0x23:暂保留;
0x24:请求顺序错误;
0x25:指令已经被接收,但是未被执行;
0x26:失败的操作导致当前操作无法执行;
0x27- 0x30:暂保留;
0x31:参数错误;
0x32:暂保留;
0x33:安全校验未通过;
0x34:暂保留;
0x35:秘钥不匹配;
0x36:已达到解锁最大错误次数;
0x37:超时时间未到;
0x38 - 0x4F:由扩展数据链路安全性保留;
0x50 - 0x6F:暂保留;
0x70:不允许上传下载;
0x71:数据传输中断;
0x72:擦除或烧写内存错误;
0x73:块序列计数错误;
0x74 - 0x77:暂保留;
0x78:收到请求,延迟响应;
0x79 - 0x7D:暂保留;
0x7E:当前会话下子功能不支持;
0x7F:当前会话下服务不支持;
0x80:暂保留;
0x81:RPM太高;
0x82:RPM太低;
0x83:当前引擎正运行;
0x84:当前引擎为运行;
0x85:截止当前时间引擎运行时间太短;
0x86:温度过高;
0x87:温度过低;
0x88:车速过高;
0x89:车速过低;
0x8A:油门/踏板过高(超过了当前要求的最大阈值);
0x8B:油门/踏板过低;
0x8C:变速器档位不在空档;
0x8D:变速器档位不在排档;
0x8E:暂保留;
0x8F:制动开关没有关闭;
0x90:换档杆不在驻车档;
0x91:变矩器离合器锁定;
0x92:电压过高;
0x93:电压过低;
0x94 - 0xEF:暂保留(特定条件下);
0xF0 - 0XFE:为汽车制造商保留;
0xFF:暂保留;

会话状态

3.诊断服务类型

3.1服务类型简述

1.诊断与通信管理;
2.数据传输;
3.存储数据传输,用于操作DTC;
4.IO控制;
5.调用ECU内部预置函数;
6.上传与下载;

3.2服务类型详解

3.2.1 诊断与通信管理

3.2.1.1. 0x10 - DiagnosticSessionControl(诊断通信控制)
解释:请求控制与ECU的诊断会话。
格式:
	0x10|SessionType

SessionType-请求消息子功能定义:
	0x00 ISOSAEReserved(保留)
	0x01 defaultSession(ECU上电后的默认状态)
	0x02 ProgrammingSession(进行软件刷写相关的服务)
		用于解锁BootLoader相关的诊断服务,即程序烧写;
	0x03 extendedDiagnosticSession(诊断启动后接收到10 03转为该状态)
		用于解锁高权限诊断服务,如写入数据、参数、读写诊断码;
	0x04 safetySystemDiagnosticSession
	0x05 – 0x3F ISOSAEReserved(保留)
	0x40 – 0x5F vehicleManufacturerSpecific(由整车厂自定义使用)
	0x60 – 0x7E systemSupplierSpecific(由ECU供应商自定义使用)
	0x7F -  ISOSAEReserved(保留)

肯定响应:
	0x50|SessionType|SessionParameterRecord.......
否定响应:
	0x12:不支持子功能参数;
	0x13:消息长度错误;
	0x22:不满足请求标准/条件;
3.2.1.2. 0x11 - ECUReset
强制对ECU进行重置。
格式:
	0x11|resetType
	
resetType - 请求消息子功能定义
	0x00:保留;
	0x01:再次初始化,恢复为上电状态;
	0x02:模拟断电重置;
	0x03:软件重置,重新启动应用程序;
	0x04:进入休眠状态;
	0x05:禁止启用“快速关闭电源”功能;
	0x06-0x5F:整车厂商自定义
	0x7F:保留

肯定响应:
	0x51|resetType(0x00-0x7F)|powerDownTime(0x00-0xFF)
	powerDownTime:0x00 - 0xFE 254s; 0xFF 表示失败或者时间不可用
否定响应:
	0x12:不支持子功能参数;
	0x13:消息长度错误;
	0x22:不满足请求标准;
	0x33:ECU未被解锁,请求重置受到了保护;	
3.2.1.3. 0x27 - SecurityAccess
请求解锁安全服务,常用见交互流程:
	1.客户端请求种子;
	2.服务端发送种子;
	3.客户端发送秘钥;
	4.服务端验证秘钥有效性,进行解锁与应答; 
	5.服务端清除上电/复位延迟计数器的内部提示信息;
	备注:
	1.服务端需要支持延迟计数器,当服务器加电/复位时被锁定时需要延迟,整车厂商选择是否支持延时定时器。
	2.requestseed参数值应时钟为奇数,相同安全等级的sendkey参数值=requestseed参数值+1。
	3.任何时候,只有一个安全级别处于活动状态。
	如requestseed 0x03处于活动状态,Tester端当前与requestseed 0X01安全级别解锁成功,那么Tester只可以与requestseed 0x01关联的安全功能才可以被解锁,requestseed 0x03关联的安全功能将会被关闭(其中安全级别的变编号是任意的)。
	4.尝试安全性访问时,不应该阻碍汽车的正常通信与其他诊断通讯。
	5.服务器锁定时请求安全服务,安全服务器应支持拒绝。

格式:
	0x27| requestseed( 0x01/0x03/0x05/0x07-0x7D)| Data.....
	0x27| sendkey (0x02/0x04/0x06/0x08-0x7E)| Data.....
	子功能定义:
		requestseed与sendkey具有一定的固定关系:
			requestseed = 0x01 -  sendkey = 0x02
			requestseed = 0x03 - sendkey = 0x04
	数据参数:
		securityKey:由算法依据seed生成的;
		securityAccessDataRecord:传输到服务端的seed信息;
		
肯定响应:
	0x67| securityAccessType(0x00-0x7F)| Data.....		
否定响应:
	0x12:不支持功能参数;
	0x13:消息长度错误;
	0x22:不满足请求标准;
	0x24:应该先发送seed数据,而不是先发送key数据;
	0x31:Data为无效数据;
	0x35:key比对不成功,校验不通过;
	0x36:超过最大试错次数;
	0x37:当前服务器处于延时状态;
展示案例:
1. 服务端(ECU)处于“锁定”状态
	(1)请求种子
	requestseed : 0x27|0x01
	service seed : 0x67|0x01|0x36 0x57
	(2)发送秘钥
	sendkey : 0x27|0x02|0xC9 0xA9
	response  : 0x67|0x02 
2.服务端处于“解锁”状态
	(1)请求种子
		requestseed:0x27|0x01
		service seed:0x67|0x01|0x00 0x00
3.2.1.4. 0x28 - CommunicationControl
打开/关闭某些消息的接收与发送;
格式:
	0x28| controlType(0x00 - 0xFF)| communicationType(0x00 - 0xFF)| nodeIdentificationNumber......
	controlType:
	子功能:
		0x00:指定的通信类型未启用数据的接收与传输;
		0x01:应启用消息接收,禁用指定通信类型的数据传输;
		0x02:应禁用消息接收,启用指定通信类型的数据传输;
		0x03:应禁用指定通信类型的数据接收与传输;
		0x04:应将寻址总线主机相关的子总线切换到诊断模式;
		0x05:应将寻址总线主机相关的子总线切换到程序调度模式;
		0x06-0x3F:保留;
		0x40-0x5F:整车厂商自定义;
		0x60-0x7E:系统供应商自定义;
		0x7F:保留;
	communicationType:
		应用的控制通信类型,允许同时控制多种通信类型。
	nodeIdentificationNumber:
		用于识别车辆子网络节点。

肯定响应:
	0x68| controlType(0x00 - 0x7F)		
否定响应:
	0x12:不支持子功能参数;
	0x13:消息长度错误;
	0x22:禁用/启用请求失败(服务器正常模式下使用);
	0x31:参数错误;

展示案例:
	1.禁用传输网络管理消息请求(当)
		0x28| 0x01(第7位为0)| 0x02(网络管理)
		0x68| 0x01
	2.将远程网络地址为0x000A节点连接到仅诊断调度模式
		0x28| 0x04| 0x01| 0x00 0x0A
		0x68| 0x04
	3.切换到具有增强地址信息的应用程序调度模式,连接到子网络节点0x000A
		0x28| 0x05| 0x01 0x00 0x0A
		0x68| 0x05
3.2.1.5. 0x3E - TesterPresent
使ECU保持连接状态,并将已机会的诊断服务或者通信保持现有状态。可防止服务端恢复为默认状态。
格式:
	0x3E| subFunction(0x00-0x80)
subFunction:
	0x00:不支持suppressPosRspMsgIndicationBit子函数值;	
	0x01 - 0x7F:值保留;

肯定响应:
	0X7E| 0X00
否定响应:
	0x12:不支持子功能参数;
	0x13:消息长度错误;

展示案例:
	1.请求消息流程案例
		0x3E| 0x00
		0x7E| 0x00
	2.可定响应消息流程
		0x3E| 0x80
		无响应由服务器发送
3.2.1.6. 0x83 - AccessTimingParamete
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值