一、UDS协议简介
UDS,全称Unified Diagnostic Services,即统一诊断服务,它是一种用于车辆诊断场景的通信协议,被广泛应用于汽车电子中测试设备(诊断仪软件、数据记录器等)和ECU之间的数据通信,它基于ISO-14229标准,通过CAN总线或以太网发送和接收消息。
UDS协议主要用于汽车电子控制单元(ECU)的诊断和调试,诊断仪可以向ECU发送特定的请求,从而获取ECU的状态信息和故障码,这些状态信息被用于辅助开发人员诊断和解决车辆故障问题,比如发动机异常、变速箱问题、防抱死制动系统(ABS)故障等。
UDS协议除了可以查询车辆的关键信息,它也可以让车载ECU执行一些简单的测试用例,或者根据需要重新刷写ECU固件。
UDS通信是基于客户端-服务器(C/S)的通信模式,客户端向服务器发起通信,请求查询诊断信息,服务器做出响应并返回诊断信息或者错误码。
设想的诊断场景,诊断仪与汽车之间的通信:
实际的诊断场景,诊断仪与汽车ECU之间的通信:
UDS通信常见的用途有:
固件刷新后重置ECU。
读取和清除保存在车辆中的诊断故障代码。
使用加解密算法安全访问ECU,以获取车辆中的各种参数。
上传和下载车辆中的数据包。
UDS协议的优点:
UDS协议定义了一套标准的诊断服务,这种标准化允许来自不同供应商的诊断工具与车载ECU之间进行通信。
应用广泛,UDS协议广泛用于现代主流汽车品牌,并已成为大多数车载应用中的主要诊断方案。
支持多种传输协议,灵活性很大,UDS通信报文可以基于多种协议进行传输,包括CAN、FlexRay、以太网等。
安全级别很高,UDS协议支持多种会话模式和安全级别,有助于防止未经授权的数据访问。
二、UDS协议与ISO-14229标准
UDS协议是ISO-14229标准的一个子集, ISO-14229标准中,涉及UDS协议的部分如下:
ISO 14229-1:UDS协议的规范和要求。
ISO 14229-2:UDS协议的会话层服务。
ISO 14229-3:基于CAN总线的统一诊断服务,即UDSonCAN。
ISO 14229-4:基于FlexRay总线的统一诊断服务,即UDSonFR。
ISO 14229-5:基于IP协议的统一诊断服务,即UDSonIP。
ISO 14229-6:基于K-Line总线的统一诊断服务,即UDSonK-Line。
ISO 14229-7:基于LIN总线的统一诊断服务,即UDSonLIN。
三、DTC故障码简介
DTC,全称Diagnostic Trouble Code,即诊断故障码。当车载系统检测到了一个错误时,它将错误信息存储为诊断故障代码。UDS诊断服务支持读取或清除DTC。车载ECU在运行期间产生DTC故障信息,然后由测试人员通过诊断仪远程读取DTC信息。
DTC一共由4个字节组成,最高字节属于保留字节,未被使用,剩下3个字节分别代表DTCHighByte、DTCMiddleByte和DTCLowByte。
DTC故障码示意图:
如图所示,第一个DTC字符代表DTC的分类,DTC故障码通常分为四个大类,即”PCBU”,含义如下:
“P”表示动力系统有问题,它包括发动机、变速箱、传动系统和燃油系统。
“C”表示底盘有问题,它是指乘客舱外的机械系统,例如转向、悬架和制动。
“B”表示身体有问题,它涵盖了在乘客舱区域发现的部件。
“U”表示网络和软件集成有问题,表示OBD监控的车载软件和集成功能存在问题。
四、DID标识符简介
DID,全称Data Identifier,即数据标识符,是用于查询ECU内存中特定数据的存储位置的ID编号,可以理解为诊断数据的地址编号。通过DID可以找到ECU中的车载VIN码、固件版本等信息。
DID通常被设计为2个字节长度,即16个比特位,可以表示从0x0000到0xFFFF之间的值,比如0xF191。
常见的DID举例:
五、SID与子函数
1.SID:每个诊断服务都有唯一的SID,用来指示诊断工具希望ECU执行的操作类型。
常用的诊断服务与SID如下:
2.Sub-function:每个诊断服务特有的子函数,有的诊断服务不需要指定子函数。
子函数的比特位分布如下:
Bit7:正响应抑制位,全称时Suppress Positive Response,bit7=1时,抑制正响应,此时不需要ECU给出响应,bit7=0时,需要ECU给出响应。
Bit6~Bit0:这7个bit用来指定具体的Sub-function。
举例:SID=10,会话切换场景
(1)、抑制正响应,Sub-function byte=0x83
(2)、不抑制正响应,Sub-function byte=0x03
六、UDS通信的消息类型
1.请求消息
诊断仪向ECU发送的请求消息。
2.肯定响应消息
肯定响应(Positive Response),又被称为正响应,是ECU上服务执行成功时返回的响应。
3.否定响应消息
否定响应(Negative Response),又被称为负响应,是ECU上服务执行失败时返回的响应。
4.UDS通信中的完整PDU(Protocol Data Unit)结构示意图
七、UDS通信的报文格式
客户端请求的报文格式:
Request SID + Sub-function byte + Data Parameters
Request SID + Data Parameters
服务端肯定响应的报文格式:
Response SID + Sub-function byte + Data Parameters
Response SID + Data Parameters
服务端否定响应的报文格式:
Negative Response SID + Request SID + Negative Response Code
协议字段的具体长度如下:
Request SID长度:1字节。
Response SID长度:1字节。
Sub-function byte长度:1字节。
Data Parameters长度:不固定。
否定响应报文长度:固定为3个字节。
Negative Response SID长度:固定值为0x7F,1个字节。
Request SID长度:1个字节。
Negative Response Code长度:1个字节。
Negative Response Code,即NRC码,被用于指示诊断服务执行失败后,返回否定响应的具体原因,不同NRC码的取值对应不同的否定响应原因。
常见的NRC负响应码:
八、UDS通信的寻址方式
1.物理寻址(Physical Addressing)
特点:点对点通信,一对一。
实现细节:根据物理地址的不同进行访问,但只能访问单个ECU节点,Tester为SA源地址,ECU作为TA。不同车厂,不同零部件的物理寻址方式都是不同的。
2.功能寻址(Functional Addressing)
特点:广播通信,一对多。
实现细节:根据功能的不同进行访问,它能访问多个ECU节点。在车载场景中,发送一次请求,可以收到来自多个ECU的响应。
推荐采用物理寻址的诊断服务:
0x19 Read DTC Information
0x34 Request Download
0x36 Transfer Data
0x37 Request Transfer Exit
0x2E Write Data By Identifier
推荐采用物理寻址+功能寻址的诊断服务:
0x10 Diagnostic Session Control
0x11 ECU Reset
0x27 Security Access
0x28 Communication Control
0x22 Read Data By Identifier
九、UDS通信的报文实战
通信场景:SID=10,会话切换场景
(1)、ECU返回肯定响应示意图
(2)、ECU返回否定响应示意图
样例对应的报文数据,以CAN报文为例:
1.发送请求报文:02 10 03 00 00 00 00 00
02:0表示单帧,2表示后面的数据有2个字节,它是UDS报文头部的PCI字节,了解即可。
10:诊断会话控制服务的SID。
03:表示子功能,对应扩展诊断会话。
后面的00是填充位。
2.肯定响应报文:06 50 03 00 32 01 F4 AA
06:0表示单帧,6表示后面的数据有6个字节,它是UDS报文头部的PCI字节,了解即可。
50:肯定响应码,由请求的SID值加上0x40计算得出。
03:表示子功能,对应扩展诊断会话。
00 32 01 F4:表示具体的参数。
后面的AA是填充位。
3.否定响应报文:03 7F 10 88 AA AA AA AA
03:0表示单帧,3表示后面的数据有3个字节,它是UDS报文头部的PCI字节,了解即可。
7F:固定值0x7F,为否定响应的SID。
10:诊断会话控制服务的SID。
88:为否定应答码,即NRC,表示车速过高。
后面的AA是填充位。
十、参考阅读
https://nvdungx.github.io/unified-diagnostic-protocol-overview/
https://www.calamp.com/blog/dtc-codes/
https://automotive.softing.com/fileadmin/sof-files/pdf/de/ae/poster/UDS_Faltposter_softing2016.pdf
https://www.csselectronics.com/pages/uds-protocol-tutorial-unified-diagnostic-services
https://embetronicx.com/uds-diagnostic-protocol-tutorials/
https://automotivevehicletesting.com/vehicle-diagnostics/uds-protocol/
https://automotivevehicletesting.com/physical-addressing-vs-functional-addressing-in-can/
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/424846.html