UDS诊断协议基础(持续更新中)

本文详细介绍了汽车诊断领域中的统一诊断服务(UDS)标准,涵盖了服务功能、SID的使用、响应格式、诊断会话控制、ECU重置、DTC管理、数据读取和安全访问等内容,以及示例操作和否定响应码的解释。
摘要由CSDN通过智能技术生成

简述

UDS是汽车诊断领域广泛采用的一种标准化协议,它定义了一系列的服务功能,用于实现对车辆电子控制单元的诊断、 编程和通信。本质上是一种定向通讯,是一种交互协议(Request/Respone)。本文参照ISO-14229整理,如有异议,请指正。

诊断服务

每种服务都有自己独立的SID(Service Identifier)。

SID处于应用层数据的第一个字节。

Tester数据发送格式:帧类型+SID+子功能(如有)+帧数据

Tester发给ECU的数据,都应该有响应。

  • 正响应:首字节回复(请求SID+0x40),其他字节根据服务返回。例如,请求0x10,正响应为0x50
  • 负响应:首字节回复0x7F,第二字节回复发送的SID,第三字节为NRC(否定响应码—即否定原因)

0x10 诊断会话控制

10服务称为“Session Control”,主要用于管理诊断会话的建议、维持和通信。

其他诊断服务都要基于会话上再进行操作。

SID子功能功能说明发送数据响应数据
1001默认会话:适用于一般的读写数据、执行诊断测试等功能,不会保持状态信息,每次请求都是独立处理的。10 01

正响应:50 01 ...

负响应:7F 10 NRC ...

1002编程会话:适用于对ECU固件更新或参数刷写等操作。通常要求更高的数据完整性和一致性保障,可能包括数据块传输确认,错误检测与恢复机制等。10 02

正响应:50 02 ...

负响应:7F 10 NRC ...

1003扩展诊断会话:适用于更高级的诊断功能,如访问受保护的数据区域、执行安全相关的诊断操作等。10 03

正响应:50 03 ...

负响应:7F 10 NRC ...

1004安全访问会话:某些敏感数据操作(如访问加密数据、更改安全相关设置等)需要先通过安全访问会话获取必要权限。该模式下,诊断工具需按照特定算法或协议与ECU交换密钥或密码以获得访问权限。10 04

正响应:50 04 ...

负响应:7F 10 NRC ...

举栗子:如果我们想要测试基本诊断功能是否能用,我们可以发送1001,如回复:5001则可用,如回复7F则不可用。

0x11 ECU重置

通过诊断接口触发ECU进行不同类型的复位,以便在特定情况下恢复ECU至某种已知的初始状态。复位操作包括硬件重启、模拟电源键操作、软件级别的重置,或者针对特定供电模式的ECU执行快速下电休眠。

SID子功能功能说明发送数据响应数据
1101硬件复位:相当于断开ECU电源再重新上电,实现最彻底的复位效果,常用于软件更新后的重启。11 01

正响应:51 01 ...

负响应:7F 11 NRC码 ...

1102钥匙复位:模拟要是从“关闭”状态切换到“开启”的过程,可能包括电源管理相关的初始化序列。11 02

正响应:51 02 ...

负响应:7F 11 NRC码 ..

1103软件复位:不涉及硬件层面的断电,而是通过软件命令重置部分或全部内部状态,可能保留部分数据不变,适用于不需要完全初始化的情况。11 03

正响应:51 03 ...

负响应:7F 11 NRC码 ..

1104启用快速断电:仅适用于特定ECU,用于快速进入休眠模式以节省能源。11 04

正响应:51 04 ...

负响应:7F 11 NRC码 ..

1105禁用快速断电:11 05正响应:51 04 ...

举例子:如果我们想让ECU硬件断电重启,我们应该先发送1004(假设11 01在安全会话中可用),再发送1101,如回复51 01 ...则表示执行成功,如回复7F 11 33...则表示重置失败,33是NRC码,失败原因是Server在发生复位前处于security lock状态.

0x14 清除DTC

用于清除ECU内部存储的诊断故障信息,这些信息通常包括:

  1. 故障诊断码:标识特定故障条件的独特代码,反映了车辆系统或组件的异常状态。
  2. 故障记录数据:故障发生时记录的系统状态数据,如传感器值,控制模块状态等,用于辅助故障分析;
  3. 其他诊断相关信息:可能还包括故障计数器、连续监控数据等与故障诊断相关的数据。

使用场景:

  1. 模拟故障注入(开路、断路、接地)之前,需要先清除历史DTC记录,在用19 02 读取当前存在的故障码;
  2. ECU进行程序刷写后,使用14清除故障码,然后读取DTC,确保程序功能能正常运行;

 请求格式:

发送数据:14 XX XX XX

正响应:54 00 00 00 
负响应:7F 14 NRC

/*
1.可以清除一组DTC,也可以清除某个单个的DTC
2.14 是SID,服务ID
3.XX XX XX 是三个字节的值,可以表示单个DTC或者一组DTC(比如动力总成、车身、底盘等)
*/

举例子:

  1. 清除所有DTC信息:14 FF FF FF
  2. 清除排放组相关的DTC(FF FF 33):14 FF FF 33

备注:

14服务通常需要诊断会话期间具有足够的访问权限才能执行,因为清除诊断信息可能影响故障诊断和维修过程。

0x19 读取DTC

主要用于从ECU中读取与故障诊断相关的数据,尤其是故障诊断码(Diagnostic Trouble Codes, DTCs)及其相关信息。

SID子功能功能说明发送数据响应数据
1901reportNumberOfDTCByStatusMask:根据DTC状态掩码查找匹配的DTC数量19 01 状态掩码

正响应:19 01 状态掩码 数量 ...

负响应:7F 19 NRC ...

1902reportDTCByStatusMask:根据DTC状态掩码获取DTC状态19 02 状态掩码
1904reportDTCSnapshotRecordByDTCNumber:根据提供的冻结帧记录号,获取DTC和DTC对应的冻结帧数据19 04 DTCMaskRecord SnapshotRecordNumber

正响应:19 04 DTCMaskRecord...

负响应:7F 19 NRC ...

1906reportDTCExtDataRecordByDTCNumber:根据DTC值和扩展数据记录号,获取DTC和DTC对应的扩展数据19 06 DTCMaskRecord DTCExtDataRecordNumber

正响应:19 06 DTCMaskRecord DTCExtDataRecordNumber ...

负响应:7F 19 NRC .

190AreportSupportedDTC:获取支持的所有DTC的状态19 0A

 举例子:

需求转向灯故障,DTC为C1 40 41. 扩展数据中01为故障发生次数

  1. 读取转向灯故障发生时的快照信息: 请求报文应为 19 04 C1 40 41 FF ( FF代表读取所有快照数据);
  2. 查询转向灯故障发生次数: 请求报文应为 19 06 C1 40 41 01

DTC状态位定义:

  1. Test Failed (TF) / Test Failed Bit (bit 0):

    表示在最近一次测试循环中,相关故障检测路径的结果为失败。当检测到故障条件时,此位被置1,表示当前存在故障。
  2. Test Failed This Operation Cycle (TFTOC) / Test Failed This Ignition Cycle (TFTIC) (bit 1):

    表示故障在当前运行周期(如发动机起动后的运行周期或车辆行驶循环)首次被检测到。此位用于区分新出现的故障与已知的持续性故障。
  3. Pending DTC (PDTC) (bit 2):

    表示故障尚未满足故障确认条件,但已经发生了多次。通常,一个故障必须重复出现若干次(如连续几个运行周期)才会被认为是稳定的故障,并从“Pending”状态变为“Confirmed”。
  4. Confirmed DTC (bit 3):

    表示故障已经被确认为稳定存在的问题。这意味着故障检测条件在多个连续的测试周期内都被满足,达到了OEM设定的确认阈值。此位通常在故障被确认后立即设置,并在故障被清除或不再满足故障条件时清除。
  5. Previously Active DTC (bit 4):

    表示故障在过去曾处于激活状态(即Test Failed位为1),但现在已不再存在。此位用于记录故障的历史信息,有助于诊断已修复或暂时消失的故障。
  6. Permanent / Continuous DTC (bit 5):

    表示故障为永久性或持续存在,即使故障条件不再满足,故障码也不会自动清除,除非通过诊断工具手动清除。这种状态通常用于严重故障或需要维修人员特别注意的问题。
  7. ** MIL Requested On (bit 6)**:

    表示故障严重到足以触发故障指示灯(Malfunction Indicator Lamp, MIL,即“检查引擎”灯)点亮。ECU会根据故障的严重性和/或OEM的策略决定是否请求点亮MIL。
  8. ** MIL Requested Off (bit 7)**:

    表示故障已得到处理或不再满足故障条件,ECU请求关闭MIL。实际MIL是否熄灭还可能受其他因素影响,如是否有其他未解决的严重故障。

0x22  按标识符读数据

主要用于Client向ECU通过DID方式读取相关数据。这些数据可以是输入输出的数字信号、模拟信号、内部数据以及其他的系统状态信息。

使用场景:

  1. 读取ECU固件版本信息,如序列号、版本号、供应商信息等;
  2. 车辆参数:车辆识别号码VIN、车速、发送机转速、油压、电池电压等实时运行数据或静态配置数据;
  3. 标定成功后读取内部标定结果,用于调整控制系统的行为;
  4. 读取当前ECU所处在的Session、冻结帧数据、故障计数器、内部状态、Snapshot Data;

 请求格式:

22 [DID1] [DID2] ... [DIDn] [Optional Length]

常见DID:

DID Number(HEX)说明
0100-A5FF,A800-ACFF,B000-B1FF,C000-C2FF,CF00-EFFF,F010-F0FF主机厂推荐使用的DID范围
F1 86当前激活的Session
F1 8CECU序列号
F1 90VIN码
F1 93供应商硬件版本号
F1 95供应商软件版本号
F1 9DECU安装日期
FD00-FEFF供应商推荐使用的DID范围

举例子:

0x23  按地址读取内存

0x24 按标识符读取换算数据

0x27 安全访问

核心目标是实施访问控制,防止未经授权的诊断操作对ECU及相关系统造成潜在风险。通过安全访问过程,诊断工具需证明其具有正确的权限,才能获得对特定安全等级资源的访问权。

工作原理:基于种子与密钥的关系实现安全访问。

工作流程:

  1. 请求种子;
  2. 计算密钥;
  3. 提交密钥;
  4. 响应与授权;

应用场景:

  1. 操控:输入输出控制,例程控制服务...
  2. 数据写入:烧录程序、数据上传/下载、产线数据刷写...
  3. 数据读取:某些敏感数据读取也需要通过安全访问...
SID子功能功能说明发送数据响应数据
2701请求种子:请求随机种子用以计算密钥;27 01

正响应:67 01  ...

负响应:7F 27 NRC码 ...

2702发送密钥:得到密钥后需要发送密钥以获得对应权限;27 02

正响应:67 02 ...

负响应:7F 27 NRC码 ...

2703、05、07~41主机厂定义的不同安全等级的请求种子
2704、06、08~42主机厂定义的不同安全等级的发送密钥

0x28 通信控制

0x2A 按周期性标识符读取数据

0x2C 动态定义数据标识符

0x2E 按标识符写数据

0x2F 输入输出控制

0x3D 受保护的数据传输

0x31 例程控制

0x34 请求下载

0x35 请求上传

0x36 传输数据

0x37 请求传输终止

0x38 请求文件传输

0x3E 测试仪保活

主要用于保持诊断会话的活跃状态,确保诊断工具与被测ECU之间的通信连接不被ECU自动断开或返回到默认会话状态。

使用方法:

  1. 启动非默认会话:先发送1002/1003/1004启动所需的非默认会话;
  2. 启用3E服务:定时发送服务3E请求帧(【可选】请求中可以包含0x80抑制肯定响应用以减少通信负载);
  3. 执行诊断任务:保持3E服务的同时,执行所需的诊断擦偶哦,如读取数据、编程、监控等;
  4. 保持会话活跃:确保3E周期性持续发送,防止会话超时;
  5. 结束会话:当任务完成或切换回默认会话时,停止发送3E请求,并通过10服务关闭当前默认会话。
SID子功能功能说明发送数据响应数据
3E00会话保持3E

正响应:7E 00 ...

负响应:7F 3E ...

3E80会话保持(抑制正响应)3E 80

正响应:无回复(减少通信负载)

负响应:7F 3E ...

0x83 访问计时参数

0x84 受保护的数据传输

0x85 控制DTC设置

主要用于管理ECU中故障诊断码的状态更新,在特定诊断或测试场景下能够暂时禁用或启动DTC的设置。对于避免诊断过程中产生不必要的DTC记录、验证故障检测逻辑或在特定测试条件下观察系统行为非常有用。

SID子功能功能说明发送数据响应数据
8501开启DTC记录:服务端收到请求后恢复DTC状态的更新85 01

正响应:C5 01 ...

负响应:7F 85 ...

8502禁用DTC记录:服务端收到请求后停止DTC状态的更新(如触发新的DTC在该会话保持期间不会再进行记录,但不会影响历史DTC记录)85 02

正响应:C5 02 ...

负响应:7F 85 ...

0x86 基于事件响应

0x87 链路控制

常用否定响应码NRC

NRCDescription说明
0x10Genral Reject
0x11Service Not Supported服务不支持
0x12Sub-function Not Supported子功能不支持
0x13Incorrect Message Lenth or Invalid Format请求报文长度或格式不正确
0x22Conditions Not Correct条件不满足
0x24Request Sequence Error请求舒徐错误
0x31Request Out of Range请求超出范围、数据ID不支持
0x33Security Access Denied不满足安全策略
0x35Invalid Key(27 service)密钥无效
0x36Exceed Number of Attempts(27 service)解锁尝试超过次数
0x37Required Time Delay Not Expired(27 service)超时时间未到
0x70Upload/Download Not Accepted(34 service)不能上传/下载
0x71Transfer Data Suspended数据传输暂停
0x72General Programming Failure擦除或烧写内存时错误
0x73Wrong Block Sequence Counter块序列计数错误
0x78Request Correct Received - Response Pending收到请求,响应挂起
0x7ESub-function Not Supported in Active Session当前会话下,子服务不支持
0x7FSerive Not Supported in Active Session当前会话下,该服务不支持
0x92Voltage Too High电压过高
0x93Voltage Too Low电压过低
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值