UDS(Unified Diagnostic Services)是一种汽车诊断通信协议,其全称为“统一诊断服务”。UDS协议是ISO 14229标准的一部分,旨在为汽车电子控制单元(ECU)提供统一的诊断服务规范。
UDS协议的基本概念和功能
UDS协议的主要功能包括读取和清除故障码、读取数据流、控制ECU参数设置等。它不仅适用于CAN总线,还可以通过DoIP(Diagnostic over Internet Protocol)在Ethernet上实现。UDS协议的“统一”特性意味着它是一个国际化的标准,适用于所有ECU,而不仅仅是特定的ECU。
UDS协议的应用场景
UDS协议广泛应用于汽车售后维修、生产线检测设备开发以及车联网功能实现中。由于其标准化和统一化的特点,UDS协议方便了诊断工具的开发和使用,降低了维护成本,同时也促进了汽车电子系统的互操作性1。
UDS诊断包括6大类,26种服务,每种服务都有自己独立的ID,即SID(Service Identifier)
以诊断和通信管理功能单元(Diagnostic and Communication Management functional unit )为例,服务请求和响应有两类:一类是具有Subfunction(子功能),另一类是不具有Subfunction(子功能)。
不具有Subfunction(子功能)的UDS诊断服务请求和响应机制如下图所示:
诊断方(Tester)向ECU发送指定的请求数据(Request),这条数据中需要包含SID,且SID处于该应用层数据的第一个字节。
ECU接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。
肯定响应(Positive Response)格式为:(SID+0X40)+数据。例如,请求0X10服务,肯定响应第1个字节为0X50;请求0X22服务,肯定响应第1个字节为0X62。
否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求0X10服务,否定响应第1个字节为固定的0X7F,第2个字节为0X10,第3个字节为NRC。NRC是否定响应码,可以根据返回的NRC判断是什么原因导致的否定响应。
具有Subfunction(子功能)的UDS诊断服务请求和响应机制如下图所示:
诊断方(Tester)向ECU发送指定的请求数据(Request),这条数据中需要包含SID,且SID处于该应用层数据的第一个字节。
ECU接收到请求数据(Request)后会返回响应,可返回肯定响应或者否定响应。
肯定响应(Positive Response)格式为:(SID+0X40)+Subfunction(子功能)+数据。例如,请求0X10服务,Subfunction(子功能)为0X02,肯定响应第1个字节为0X50,第2个字节为0X02。
否定响应(Negative Response)格式为:0X7F+SID+NRC。例如,请求0X10服务,否定响应第1个字节为固定的0X7F,第2个字节为0X10,第3个字节为NRC。NRC是否定响应码,可以根据返回的NRC判断是什么原因导致的否定响应。
1.请求的格式
UDS请求格式分为4类
格式1:[SID]
格式2:[SID]+[DID]
格式3:[SID]+[SF]
格式4:[SID]+[SF]+[DID]
其中:SID-Service Identifier (服务ID),DID-Data Identifier (数据单元的ID)
SF-Sub-function(子功能)
SF的作用是细分服务,提供更多的服务类型。
2.响应的格式
响应格式分两种,一种为Positive Response(肯定响应),即诊断请求执行成功;一种为Negative Response(否定响应),即诊断请求执行失败。
Positive Response:
格式1:[SID + 0x40]
格式2:[SID + 0x40] + [DID]
格式3:[SID + 0x40] + [Sub-function]
格式4:[SID + 0x40] + [Sub-function] + [DID]
Negative Response:
[0x7F] + [SID] + [NRC]
DRC-Negative Response Code(负响应码),指示出现了何种问题导致控制器不响应请求。