UDS诊断协议介绍

前言

本文是对UDS诊断协议相关知识的汇总,仅作为自学使用,以方便后续查漏补缺。

UDS协议介绍

首先,介绍下汽车诊断协议,即:诊断工具(Tester)和车辆(ECU)之间的通信协议。目前,汽车诊断协议主要有OBD(On-Board Diagnostics)和UDS(Unified Diagnostics Services)。本文只介绍UDS协议相关的内容。
UDS协议主要用于Tester(Client)和ECU(Server)之间的诊断通信,Tester发送诊断请求(request),ECU给出诊断响应(response)。UDS为不同类型诊断功能的“请求–响应”交互定义了统一的内容和格式。

UDS相关概念

Service ID(SID)

SID,即服务标识符,用于标识要执行的服务。每个服务的SID是唯一的,用来区分要执行/响应何种服务的请求。UDS协议14229-1标准中定义了26种服务,分6大类,如下:​​

大类SID(Hex)服务名
诊断和通信管理类10诊断会话控制
(Diagnostic Session Control)
11ECU复位
(ECU Reset)
27安全访问
(Security Access)
28通信控制
(Communication Control)
3E待机握手
(Tester Present)
83访问时间参数
(Access Timing Parameter)
84安全数据传输
(Secured Data Transmission)
85控制DTC设置
(Control DTC Setting)
86事件响应
(Response On Event)
87链路控制
(Link Control)
数据传输类22通过ID读数据
(Read Data By Identifier)
23通过地址读内存
(Read Memory By Address)
24通过地址读比例数据
(Read Scaling Data By Identifier)
2A通过周期ID读数据
(Read Data By Periodic Identifier)
2C动态定义标识符
(Dynamically Define Data Identifier)
2E通过ID写数据
(Write Data By Identifier)
3D通过地址写内存
(Write Memory By Address)
存储数据传输类14清除诊断信息
(Clear Diagnostic Information)
19读取故障码信息
(Read DTC Information)
输入输出控制类2F通过ID控制输入输出
(Input Output Control By Identifier)
例程控制类31例行程序控制
(Routine Control)
上传下载类34请求下载
(Request Download)
35请求上传
(Request Upload)
36数据传输
(Transfer Data)
37请求退出传输
(Request Transfer Exit)
38请求文件传输
(Request File Transfer)

其中,标黄部分为常用服务。

诊断请求

诊断请求,即Tester向ECU发送的请求消息,用于请求执行某个服务。诊断请求消息的格式为:SID + Sub-function + 其他数据。
在这里插入图片描述

(1) SID,标识要执行的服务;
(2) Sub-function,启动、暂停之类的子功能;
(3) 部分服务可能没有子功能,也可能不携带数据;
(4) spr用于在某些服务中减少ECU发送不需要的响应,以节约系统资源。ECU默认发送正响应,但当设置spr=1时,可以抑制正响应。

正响应/负响应

Tester向ECU发送服务请求后,如果服务执行成功,则返回的响应消息为正响应,否则为负响应。
正响应消息格式:
在这里插入图片描述
负响应消息格式:
在这里插入图片描述

负响应码(NRC)

NRC(Negative Response Code),指示服务执行失败的原因。NRC的取值和含义说明如下:
在这里插入图片描述在这里插入图片描述

UDS服务概述

UDS协议14229-1标准中定义了26种服务,下面对每种服务做详细介绍。

其中,标黄部分为常用服务。

诊断和通信管理类

诊断和通信管理类为UDS服务的核心部分。通过该类服务,Tester可以与ECU进行交互,以获取ECU的状态信息,并执行各种诊断操作。主要服务有:

SID功能描述
0x10:诊断会话控制Tester控制ECU的诊断会话状态
0x11:ECU复位Tester控制ECU执行复位
0x27:安全访问Tester请求解锁ECU
0x28:通信控制Tester控制ECU的通信行为(启用/禁止某些通信功能)
0x3E:待机握手Tester向ECU表明它仍然存在
0x85:控制DTC的设置Tester控制ECU中DTC的设置
0x83:访问时间参数Tester读取/修改当前通信的定时参数
0x84:安全数据传输Tester执行具有扩展数据链路安全性的数据传输
0x86:事件响应Tester请求设置或控制ECU中的事件机制
0x87:链路控制Tester请求控制通信波特率

数据传输类

数据传输类用于Tester读取和修改ECU中的数据,支持数据读取和写入功能。该类服务具有可靠的数据传输机制,确保数据的完整性和准确性。同时还支持数据的块传输,以提高数据传输的效率。主要服务有:

SID功能描述
0x22:通过ID读数据Tester请求读取ECU中指定DID标识的当前值
0x2E:通过ID写数据Tester请求写入ECU指定DID标识的指定数据
0x23:通过地址读内存Tester请求读取ECU中指定内存范围的当前值
0x24:通过ID读缩放数据/换算信息Tester请求读取ECU中指定DID标识的比例数据
0x2A:周期读ID数据Tester请求调度ECU中的数据进行周期性传输
0x2C:动态定义标识符Tester请求动态定义数据标识符(这些标识符可被0x22服务读取)
0x3D:通过地址写内存Tester请求重写指定内存范围的数据

存储数据传输类

存储数据传输类用于Tester读取ECU中的存储数据(主要为诊断信息),以便进行故障诊断。主要服务有:

SID功能描述
0x14:清除诊断信息Tester请求清除ECU中的诊断(DTC)信息
0x19:读取诊断信息Tester请求读取ECU中的诊断(DTC)信息

IO控制类

IO控制类用于Tester对ECU的输入输出功能进行访问和控制,包括读取和设置ECU的输入输出状态,以实现对ECU系统的控制和监控。主要服务有:

SID功能描述
0x2F:通过ID控制输入输出Tester控制ECU的输入输出(IO)

例程控制类

例程控制类用于Tester调用ECU内部预置的函数,以此来执行特定的操作,如执行自检、校准或其他特殊功能。主要服务有:

SID功能描述
0x31:例行程序控制Tester请求启动、停止ECU中的例程或请求例程结果

例程可以简单理解为函数。

上传下载类

上传下载类用于在Tester和ECU之间进行上传和下载数据。可以将数据从Tester下载到ECU,也可以将数据从ECU上传到Tester,以实现备份ECU配置、更新ECU软件等操作。主要服务有:

SID功能描述
0x34:请求下载Tester请求从Tester向ECU传输数据
0x35:请求上传Tester请求从ECU向Tester传输数据
0x36:数据传输Tester向ECU发送数据(下载)或Tester向ECU请求数据(上传)
0x37:请求退出传输Tester请求终止数据传输
0x38:请求文件传输Tester请求在ECU和Tester之间进行文件传输

总结

为了方便在后续的工作学习中查漏补缺,本文对UDS诊断协议相关知识做了简单汇总,详细介绍了UDS诊断协议的基础知识,相关术语,以及26种服务。本文仅作为自学使用,如有侵权,可联系删除。

参考

https://blog.csdn.net/qq_40309666article/details/130831416
https://blog.csdn.net/qq_42957717/article/details/115954087
https://download.csdn.net/download/liuxu324/89590506

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UDS(Unified Diagnostic Services)是一种诊断协议,用于在汽车电子控制单元(ECU)之间进行诊断和通信。而CAN(Controller Area Network)是一种常用的实时通信协议,用于在汽车电子系统中进行数据传输。因此,UDS诊断协议与CAN通信协议相结合,形成了UDS诊断协议CANTP。 UDS诊断协议CANTP的作用主要有三个方面。首先,它允许诊断工具与ECU之间进行通信,以获取和更新ECU的诊断信息,例如读取和清除故障码、获取实时数据等。其次,它允许在诊断过程中进行ECU的控制和编程,包括重置ECU、编程ECU等操作。最后,UDS诊断协议CANTP还提供了满足汽车制造商特定需求的自定义功能,使得诊断工具能够适应不同品牌和型号的车辆。 UDS诊断协议CANTP的通信基于CAN总线,利用CAN帧进行数据传输。CANTP协议定义了在CAN总线上的数据传输格式、通信速率等细节,以确保诊断工具与ECU之间的可靠通信。通过CANTP协议诊断工具能够向ECU发送诊断请求,并接收ECU的响应信息。CANTP协议还提供了一些错误检测和纠错机制,以保证诊断过程的稳定和可靠性。 总之,UDS诊断协议CANTP是一种基于CAN通信协议的汽车诊断协议,它通过定义通信格式和细节,实现了诊断工具与ECU之间的可靠通信,具备诊断、控制和编程等功能,旨在满足汽车制造商的特定需求。这一协议在汽车维修和故障排除过程中扮演着重要的角色,提高了诊断效率和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值