UDS服务理解

UDS服务理解

UDS 服务理解框架

这份文档用一个固定框架吸收所有 UDS 服务:

服务目的 -> 使用条件 -> 请求格式 -> 示例报文 -> 示例逐字节解释 -> 正响应 -> 负响应 -> 常见子功能/对象

读任何服务时,不要先背字节,先问 7 个问题:

  1. 这个服务让 ECU 干什么?
  2. 它在哪个会话/安全等级下能用?
  3. 请求报文由哪些字段组成?
  4. 示例报文每个字节是什么意思?
  5. ECU 收到后做什么业务动作?
  6. 成功怎么回?
  7. 失败用哪个 NRC 说明原因?

通用报文规则

1.1 请求报文

UDS 请求可以抽象成:

SID + 子功能/动作参数 + 目标对象 + 数据参数

字段理解:

表格 还在加载中,请等待加载完成后再尝试复制

1.2 正响应

正响应 SID 统一等于:

请求 SID + 0x40

表格 还在加载中,请等待加载完成后再尝试复制

1.3 负响应

负响应格式统一:

7F + 原请求 SID + NRC

例:

7F 2F 31

意思是:2F 服务失败,原因是 31 requestOutOfRange

常见 NRC:

表格 还在加载中,请等待加载完成后再尝试复制


当前工程服务总览

表格 还在加载中,请等待加载完成后再尝试复制


0x10 DiagnosticSessionControl

目的

切换 ECU 当前诊断会话。很多服务只有在扩展会话或编程会话下才能执行。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

10 sessionType

示例请求

10 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 检查会话切换是否允许,允许后准备切换到目标会话。

正响应格式

50 sessionType P2_H P2_L P2_H P2_L

示例正响应

50 03 00 32 00 C8

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 10 12 子功能不支持

7F 10 22 条件不满足

7F 10 7E 当前会话不允许切换到目标会话


0x11 ECUReset

目的

请求 ECU 执行复位。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

11 resetType

示例请求

11 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

51 resetType

示例正响应

51 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 先发正响应,再执行复位动作。

常见负响应

7F 11 12 resetType 不支持

7F 11 22 当前条件不允许复位


0x14 ClearDiagnosticInformation

目的

清除 DTC 故障信息。

请求格式

14 groupOfDTC_H groupOfDTC_M groupOfDTC_L

常见 groupOfDTC

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

14 FF FF FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

54

示例正响应

54

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 14 13 长度错误

7F 14 22 条件不满足

7F 14 31 DTC 组不支持


0x19 ReadDTCInformation

目的

读取故障码数量、故障码列表、快照数据和支持的 DTC。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例 1:读取 DTC 数量

请求:

19 01 FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

UDS 服务理解框架

这份文档用一个固定框架吸收所有 UDS 服务:

服务目的 -> 使用条件 -> 请求格式 -> 示例报文 -> 示例逐字节解释 -> 正响应 -> 负响应 -> 常见子功能/对象

读任何服务时,不要先背字节,先问 7 个问题:

  1. 这个服务让 ECU 干什么?
  2. 它在哪个会话/安全等级下能用?
  3. 请求报文由哪些字段组成?
  4. 示例报文每个字节是什么意思?
  5. ECU 收到后做什么业务动作?
  6. 成功怎么回?
  7. 失败用哪个 NRC 说明原因?

通用报文规则

1.1 请求报文

UDS 请求可以抽象成:

SID + 子功能/动作参数 + 目标对象 + 数据参数

字段理解:

表格 还在加载中,请等待加载完成后再尝试复制

1.2 正响应

正响应 SID 统一等于:

请求 SID + 0x40

表格 还在加载中,请等待加载完成后再尝试复制

1.3 负响应

负响应格式统一:

7F + 原请求 SID + NRC

例:

7F 2F 31

意思是:2F 服务失败,原因是 31 requestOutOfRange

常见 NRC:

表格 还在加载中,请等待加载完成后再尝试复制


当前工程服务总览

表格 还在加载中,请等待加载完成后再尝试复制


0x10 DiagnosticSessionControl

目的

切换 ECU 当前诊断会话。很多服务只有在扩展会话或编程会话下才能执行。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

10 sessionType

示例请求

10 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 检查会话切换是否允许,允许后准备切换到目标会话。

正响应格式

50 sessionType P2_H P2_L P2_H P2_L

示例正响应

50 03 00 32 00 C8

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 10 12 子功能不支持

7F 10 22 条件不满足

7F 10 7E 当前会话不允许切换到目标会话


0x11 ECUReset

目的

请求 ECU 执行复位。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

11 resetType

示例请求

11 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

51 resetType

示例正响应

51 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 先发正响应,再执行复位动作。

常见负响应

7F 11 12 resetType 不支持

7F 11 22 当前条件不允许复位


0x14 ClearDiagnosticInformation

目的

清除 DTC 故障信息。

请求格式

14 groupOfDTC_H groupOfDTC_M groupOfDTC_L

常见 groupOfDTC

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

14 FF FF FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

54

示例正响应

54

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 14 13 长度错误

7F 14 22 条件不满足

7F 14 31 DTC 组不支持


0x19 ReadDTCInformation

目的

读取故障码数量、故障码列表、快照数据和支持的 DTC。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例 1:读取 DTC 数量

请求:

19 01 FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

59 01 AA 01 00 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:读取 DTC 列表

请求:

19 02 FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

59 02 AA 12 34 56 2F 23 45 67 2F

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 3:读取指定 DTC 快照

请求:

19 04 12 34 56 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

59 04 12 34 56 2F snapshotData…

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 19 12 子功能不支持

7F 19 13 长度错误

7F 19 31 DTC、状态掩码或记录号不支持

7F 19 7E 当前会话不支持该子功能


0x22 ReadDataByIdentifier

目的

按 DID 读取 ECU 数据。

请求格式

22 DID_H DID_L [DID_H DID_L …]

常见 DID 类型

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

22 F1 90

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

62 DID_H DID_L data…

示例正响应

62 F1 90 31 32 33 34 35 36 37 38 39 …

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

多 DID 示例

请求:

22 F1 90 F1 A1

响应:

62 F1 90 data1… F1 A1 data2…

理解:一次读多个 DID,响应中按顺序返回每个 DID 和数据。

常见负响应

7F 22 13 长度错误

7F 22 31 DID 不支持

7F 22 33 权限不够

7F 22 7F 当前会话不支持该服务


0x27 SecurityAccess

目的

通过 Seed/Key 获取安全权限。很多写入、IO 控制、刷写服务都要先解锁。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例 1:请求 seed

请求:

27 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

67 01 seed16…

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:发送 key

请求:

27 02 key32…

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

67 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 发 seed 后保存 seed;收到 key 后,用内部密钥和 seed 计算结果,与 tester 发来的 token 比较。匹配则安全等级提升,不匹配则返回 invalidKey 并累计错误次数。

常见负响应

7F 27 12 子功能不支持

7F 27 24 没有先请求 seed 就发 key,或等级不匹配

7F 27 35 key 错误

7F 27 36 错误次数超限

7F 27 37 延时时间未到


0x28 CommunicationControl

目的

控制 ECU 某类通信报文的接收和发送。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

communicationType 常见值

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

28 03 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

68 controlType

示例正响应

68 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 28 12 子功能不支持

7F 28 22 条件不满足

7F 28 31 communicationType 不支持


0x2E WriteDataByIdentifier

目的

按 DID 写入 ECU 数据。

当前工程常见可写 DID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

2E DID_H DID_L data…

示例请求

2E F1 90 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

6E DID_H DID_L

示例正响应

6E F1 90

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 2E 13 写入数据长度不等于 DID 定义长度

7F 2E 31 DID 不支持写入

7F 2E 33 安全权限不够

7F 2E 7F 当前会话不支持该服务


0x2F InputOutputControlByIdentifier

目的

临时控制 ECU 的输入/输出对象,例如阀位置、水泵使能和转速。

controlParameter 常见值

表格 还在加载中,请等待加载完成后再尝试复制

当前工程支持的 IO DID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

2F DID_H DID_L controlParameter [controlState…]

示例 1:短期控制电机水泵

请求:

2F 65 03 03 01 50

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

6F 65 03 03 01 50

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:复位空调水泵默认值

请求:

2F 65 04 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

6F 65 04 01

常见负响应

7F 2F 13 长度错误

7F 2F 22 条件不满足

7F 2F 31 DID 不支持、控制参数不支持或控制值超范围

7F 2F 33 安全权限不够


0x31 RoutineControl

目的

让 ECU 启动、停止或查询一个内部例程。本工程实际主要使用 startRoutine。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

当前工程常见 RID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

31 routineControlType RID_H RID_L [routineControlOption…]

示例 1:检查编程前置条件

请求:

31 01 02 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

71 01 02 03 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:擦除内存

请求:

31 01 FF 00 44 00 02 00 00 00 01 00 00

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

可能先返回:

7F 31 78

表示擦除中。完成后返回:

71 01 FF 00 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 31 12 子功能不支持

7F 31 13 长度错误

7F 31 22 条件不满足

7F 31 31 RID 或参数不支持

7F 31 33 安全权限不够

7F 31 78 例程执行中


0x34 RequestDownload

目的

开始下载流程,告诉 ECU 下载目标地址和总大小,并获取最大块长度。

请求格式

34 dataFormatIdentifier addressAndLengthFormatIdentifier memoryAddress… memorySize…

示例请求

34 00 44 00 02 00 00 00 01 00 00

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

74 lengthFormatIdentifier maxNumberOfBlockLength…

示例正响应

74 20 01 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 34 13 长度错误

7F 34 22 下载条件不满足

7F 34 31 地址、大小或格式超范围

7F 34 33 安全权限不够

7F 34 70 下载不被接受


0x36 TransferData

目的

在 0x34 成功后,按块传输下载数据。

请求格式

36 blockSequenceCounter transferData…

示例请求

36 01 AA BB CC DD

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

76 blockSequenceCounter

示例正响应

76 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 36 24 请求顺序错误,未先执行 0x34 或流程状态不对

7F 36 31 数据长度或总量超范围

7F 36 72 写入失败

7F 36 73 blockSequenceCounter 错误

7F 36 92 电压过高

7F 36 93 电压过低


0x37 RequestTransferExit

目的

结束下载传输流程。

请求格式

37

示例请求

37

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

77

示例正响应

77

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 37 13 长度错误

7F 37 24 下载流程未完成或请求顺序错误


0x3E TesterPresent

目的

保持诊断会话,防止 ECU 因 S3 超时回默认会话。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

3E 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

7E 00

示例正响应

7E 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 3E 12 子功能不支持

7F 3E 13 长度错误


0x85 ControlDTCSetting

目的

控制 ECU 是否允许 DTC 记录/更新。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

85 settingType

示例请求

85 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

C5 settingType

示例正响应

C5 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 85 12 子功能不支持

7F 85 22 条件不满足


复杂服务吸收口诀

复杂服务就按这句话拆:

SID 说明服务,子功能说明动作,DID/RID/DTC/地址说明对象,后面的数据说明值或范围;ECU 检查条件后执行动作,成功回 SID+0x40 并回显关键字段,失败回 7F+SID+NRC。

拿到报文后按这个顺序标注:

  1. 标 SID:这是哪个服务。
  2. 标子功能:这次要做哪个动作。
  3. 标对象:操作哪个 DID/RID/DTC/地址。
  4. 标参数:写入值、控制值、长度、数据块或校验值。
  5. 标响应:正响应回显了什么,新增了什么结果字段。
  6. 标 NRC:失败原因属于长度、条件、权限、范围还是顺序。

正响应:

59 01 AA 01 00 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:读取 DTC 列表

请求:

19 02 FF

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

59 02 AA 12 34 56 2F 23 45 67 2F

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 3:读取指定 DTC 快照

请求:

19 04 12 34 56 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

59 04 12 34 56 2F snapshotData…

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 19 12 子功能不支持

7F 19 13 长度错误

7F 19 31 DTC、状态掩码或记录号不支持

7F 19 7E 当前会话不支持该子功能


0x22 ReadDataByIdentifier

目的

按 DID 读取 ECU 数据。

请求格式

22 DID_H DID_L [DID_H DID_L …]

常见 DID 类型

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

22 F1 90

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

62 DID_H DID_L data…

示例正响应

62 F1 90 31 32 33 34 35 36 37 38 39 …

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

多 DID 示例

请求:

22 F1 90 F1 A1

响应:

62 F1 90 data1… F1 A1 data2…

理解:一次读多个 DID,响应中按顺序返回每个 DID 和数据。

常见负响应

7F 22 13 长度错误

7F 22 31 DID 不支持

7F 22 33 权限不够

7F 22 7F 当前会话不支持该服务


0x27 SecurityAccess

目的

通过 Seed/Key 获取安全权限。很多写入、IO 控制、刷写服务都要先解锁。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例 1:请求 seed

请求:

27 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

67 01 seed16…

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:发送 key

请求:

27 02 key32…

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

67 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

ECU 执行动作

ECU 发 seed 后保存 seed;收到 key 后,用内部密钥和 seed 计算结果,与 tester 发来的 token 比较。匹配则安全等级提升,不匹配则返回 invalidKey 并累计错误次数。

常见负响应

7F 27 12 子功能不支持

7F 27 24 没有先请求 seed 就发 key,或等级不匹配

7F 27 35 key 错误

7F 27 36 错误次数超限

7F 27 37 延时时间未到


0x28 CommunicationControl

目的

控制 ECU 某类通信报文的接收和发送。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

communicationType 常见值

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

28 03 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

68 controlType

示例正响应

68 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 28 12 子功能不支持

7F 28 22 条件不满足

7F 28 31 communicationType 不支持


0x2E WriteDataByIdentifier

目的

按 DID 写入 ECU 数据。

当前工程常见可写 DID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

2E DID_H DID_L data…

示例请求

2E F1 90 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

6E DID_H DID_L

示例正响应

6E F1 90

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 2E 13 写入数据长度不等于 DID 定义长度

7F 2E 31 DID 不支持写入

7F 2E 33 安全权限不够

7F 2E 7F 当前会话不支持该服务


0x2F InputOutputControlByIdentifier

目的

临时控制 ECU 的输入/输出对象,例如阀位置、水泵使能和转速。

controlParameter 常见值

表格 还在加载中,请等待加载完成后再尝试复制

当前工程支持的 IO DID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

2F DID_H DID_L controlParameter [controlState…]

示例 1:短期控制电机水泵

请求:

2F 65 03 03 01 50

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

6F 65 03 03 01 50

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:复位空调水泵默认值

请求:

2F 65 04 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

6F 65 04 01

常见负响应

7F 2F 13 长度错误

7F 2F 22 条件不满足

7F 2F 31 DID 不支持、控制参数不支持或控制值超范围

7F 2F 33 安全权限不够


0x31 RoutineControl

目的

让 ECU 启动、停止或查询一个内部例程。本工程实际主要使用 startRoutine。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

当前工程常见 RID

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

31 routineControlType RID_H RID_L [routineControlOption…]

示例 1:检查编程前置条件

请求:

31 01 02 03

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应:

71 01 02 03 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

示例 2:擦除内存

请求:

31 01 FF 00 44 00 02 00 00 00 01 00 00

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

可能先返回:

7F 31 78

表示擦除中。完成后返回:

71 01 FF 00 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 31 12 子功能不支持

7F 31 13 长度错误

7F 31 22 条件不满足

7F 31 31 RID 或参数不支持

7F 31 33 安全权限不够

7F 31 78 例程执行中


0x34 RequestDownload

目的

开始下载流程,告诉 ECU 下载目标地址和总大小,并获取最大块长度。

请求格式

34 dataFormatIdentifier addressAndLengthFormatIdentifier memoryAddress… memorySize…

示例请求

34 00 44 00 02 00 00 00 01 00 00

逐字段解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

74 lengthFormatIdentifier maxNumberOfBlockLength…

示例正响应

74 20 01 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 34 13 长度错误

7F 34 22 下载条件不满足

7F 34 31 地址、大小或格式超范围

7F 34 33 安全权限不够

7F 34 70 下载不被接受


0x36 TransferData

目的

在 0x34 成功后,按块传输下载数据。

请求格式

36 blockSequenceCounter transferData…

示例请求

36 01 AA BB CC DD

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

76 blockSequenceCounter

示例正响应

76 01

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 36 24 请求顺序错误,未先执行 0x34 或流程状态不对

7F 36 31 数据长度或总量超范围

7F 36 72 写入失败

7F 36 73 blockSequenceCounter 错误

7F 36 92 电压过高

7F 36 93 电压过低


0x37 RequestTransferExit

目的

结束下载传输流程。

请求格式

37

示例请求

37

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

77

示例正响应

77

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 37 13 长度错误

7F 37 24 下载流程未完成或请求顺序错误


0x3E TesterPresent

目的

保持诊断会话,防止 ECU 因 S3 超时回默认会话。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

示例请求

3E 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

7E 00

示例正响应

7E 00

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 3E 12 子功能不支持

7F 3E 13 长度错误


0x85 ControlDTCSetting

目的

控制 ECU 是否允许 DTC 记录/更新。

常见子功能

表格 还在加载中,请等待加载完成后再尝试复制

请求格式

85 settingType

示例请求

85 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

正响应格式

C5 settingType

示例正响应

C5 02

逐字节解释:

表格 还在加载中,请等待加载完成后再尝试复制

常见负响应

7F 85 12 子功能不支持

7F 85 22 条件不满足


复杂服务吸收口诀

复杂服务就按这句话拆:

SID 说明服务,子功能说明动作,DID/RID/DTC/地址说明对象,后面的数据说明值或范围;ECU 检查条件后执行动作,成功回 SID+0x40 并回显关键字段,失败回 7F+SID+NRC。

拿到报文后按这个顺序标注:

  1. 标 SID:这是哪个服务。
  2. 标子功能:这次要做哪个动作。
  3. 标对象:操作哪个 DID/RID/DTC/地址。
  4. 标参数:写入值、控制值、长度、数据块或校验值。
  5. 标响应:正响应回显了什么,新增了什么结果字段。
  6. 标 NRC:失败原因属于长度、条件、权限、范围还是顺序。