以下是 完整的UDS(Unified Diagnostic Services,ISO 14229-1)服务列表,按照 服务标识符(SID) 分类整理。

一,UDS服务列表

SID(Hex)

服务名称

描述

0x10

Diagnostic Session Control

诊断会话控制(切换默认/扩展/编程会话等)

0x11

ECU Reset

ECU复位(软复位/硬复位)

0x12

Read Freeze Frame Data

读取冻结帧数据(与DTC关联的故障快照)

0x13

Read DTC Information

读取诊断故障码(DTC)信息(已废弃,由0x19替代)

0x14

Clear Diagnostic Information

清除诊断信息(如DTC及冻结帧)

0x19

Read DTC Information

读取DTC信息(支持多种DTC报告类型)

0x1A

Read Scaling Data By Identifier

按ID读取比例数据(OEM自定义)

0x20

Return to Normal Mode

返回正常模式(已废弃)

0x22

Read Data By Identifier (DID)

按数据标识符(DID)读取数据

0x23

Read Memory By Address

按地址读取内存(用于ECU内存访问)

0x24

Read Scaling Data By Address

按地址读取比例数据(OEM自定义)

0x27

Security Access

安全访问(种子-密钥认证)

0x28

Communication Control

通信控制(启用/禁用报文发送)

0x29

Authentication

身份认证(用于增强安全访问)

0x2A

Read Data By Periodic ID

按周期ID读取数据(已废弃)

0x2C

Dynamically Define Data ID

动态定义数据ID(自定义DID)

0x2E

Write Data By Identifier (DID)

按数据标识符(DID)写入数据

0x2F

Input Output Control By ID

按ID控制输入/输出(强制ECU引脚状态)

0x31

Routine Control

例程控制(启动/停止/查询ECU内部程序)

0x34

Request Download

请求下载(准备ECU接收数据)

0x35

Request Upload

请求上传(准备ECU发送数据)

0x36

Transfer Data

数据传输(用于下载/上传数据块)

0x37

Request Transfer Exit

请求传输结束(完成下载/上传)

0x38

Request File Transfer

请求文件传输(用于文件级操作)

0x3D

Write Memory By Address

按地址写入内存(直接写入ECU内存)

0x3E

Tester Present

诊断仪保持连接(维持会话激活)

0x7F

Negative Response (NRC)

否定响应(指示请求失败,包含错误码)

0x83

Access Timing Parameters

访问时间参数(调整通信时序)

0x84

Secured Data Transmission

安全数据传输(加密通信)

0x85

Control DTC Setting

控制DTC设置(启用/禁用DTC存储)

0x86

Response On Event

事件响应(配置事件触发ECU主动发送数据)

0x87

Link Control

链路控制(管理通信速率等)

补充说明

  1. 否定响应(0x7F):所有服务都可能返回此响应,附带 否定响应码(NRC) 说明失败原因(如"条件不满足"、"安全访问被拒"等)。
  2. OEM自定义服务:部分SID范围(如 0x30-0x3C0x40-0x7E)保留给厂商自定义扩展。
  3. 兼容性:并非所有ECU都支持全部服务,具体实现取决于OEM需求。

二,UDS否定响应码

以下是 ISO 14229-1(UDS)标准 中定义的 否定响应码(NRC, Negative Response Code)完整中文解释表。

1. 通用错误(0x00-0x4F)

NRC(Hex)

英文名称

中文解释

0x10

GeneralReject

通用拒绝:请求因未明确的通用原因被拒绝(无具体分类错误)。

0x11

ServiceNotSupported

服务不支持:ECU不支持请求的服务标识符(SID)。

0x12

SubFunctionNotSupported

子功能不支持:请求的子功能(如会话模式、控制类型)在当前ECU中无效。

0x13

IncorrectMessageLengthOrFormat

消息长度或格式错误:请求报文长度不符合协议要求,或参数格式非法。

0x14

ResponseTooLong

响应过长:ECU响应数据超过单帧最大长度,需分段传输(但未启用多帧传输机制)。

0x21

BusyRepeatRequest

繁忙需重试:ECU正处理其他请求,需稍后重试(如刷写过程中)。

0x22

ConditionsNotCorrect

条件不满足:当前ECU状态不允许执行请求(如未解锁安全访问时尝试写入数据)。

0x24

RequestSequenceError

请求顺序错误:操作步骤非法(如未先执行RequestDownload直接发送TransferData)。

0x25

NoResponseFromSubnetComponent

子网组件无响应:网关ECU无法访问目标节点(如从节点离线)。

0x26

FailurePreventsExecutionOfRequest

底层故障阻止执行:ECU硬件或软件故障导致请求无法完成。


2. 安全与访问控制(Security & Access)

NRC(Hex)

英文名称

中文解释

0x33

SecurityAccessDenied

安全访问被拒:种子-密钥认证失败(密钥错误或未按步骤操作)。

0x34

AuthenticationRequired

需身份认证:请求的服务需要增强安全认证(如TLS证书验证)。

0x35

InvalidKey

无效密钥:提供的安全访问密钥错误或已过期。

0x36

ExceededNumberOfAttempts

尝试次数超限:安全访问失败次数超过ECU允许的最大值(可能触发锁定)。

0x37

RequiredTimeDelayNotExpired

延迟未结束:安全访问重试需等待指定时间(防暴力pojie机制)。


3. 数据与参数错误(Data & Parameters)

NRC(Hex)

英文名称

中文解释

0x31

RequestOutOfRange

请求超出范围:DID(数据标识符)或内存地址无效,或参数值非法。

0x72

GeneralProgrammingFailure

通用编程失败:ECU刷写过程中发生未分类错误(需检查日志)。

0x73

WrongBlockSequenceCounter

块序列号错误:数据传输时块序号不连续(如TransferData的序号未按顺序递增)。

0x7E

SubFunctionNotSupportedInActiveSession

当前会话不支持子功能:请求的子功能在当前诊断会话中不可用(如默认会话下调用编程功能)。

0x7F

ServiceNotSupportedInActiveSession

当前会话不支持服务:请求的服务在当前会话中无效(如默认会话下调用RequestDownload)。


4. 编程相关错误(0x50-0x7F)

NRC(Hex)

英文名称

中文解释

0x50

ProgrammingDependenciesNotMet

编程依赖未满足:刷写所需条件不满足(如电压、温度、网络状态异常)。

0x51

ProgrammingPreconditionsNotMet

编程前置条件未满足:未进入扩展会话或未完成安全访问。

0x52

ProgrammingRequestSequenceError

编程请求顺序错误:刷写步骤非法(如未擦除内存直接写入数据)。

0x53

ProgrammingVoltageOutOfRange

编程电压超限:ECU检测到电源电压超出允许范围(如低于9V或高于16V)。

0x54

ProgrammingTemperatureOutOfRange

编程温度超限:ECU温度过高或过低(如低于-40°C或高于85°C)。

0x55

ProgrammingSecurityAccessDenied

编程安全访问被拒:刷写前未通过安全认证(需先执行0x27服务)。

0x56

ProgrammingInvalidSignature

无效签名:刷写文件的数字签名验证失败(文件被篡改或密钥不匹配)。

0x57

ProgrammingInvalidChecksum

无效校验和:数据块校验和错误(传输过程中数据损坏)。

0x71

UploadDownloadNotAccepted

上传/下载被拒:ECU拒绝启动数据传输(如内存空间不足)。


5. 其他特殊NRC

NRC(Hex)

英文名称

中文解释

0x78

TransferDataSuspended

数据传输暂停:ECU主动中断数据传输(如检测到致命错误)。

0x81

RPMTooHigh

转速过高:发动机转速超过诊断允许阈值(如刷写时要求熄火但引擎未关闭)。

0x82

RPMTooLow

转速过低:发动机转速低于诊断允许阈值(如某些测试需维持怠速)。

0x83

EngineIsRunning

引擎运行中:请求的操作需在熄火状态下执行(如ECU复位)。

0x84

EngineIsNotRunning

引擎未运行:请求的操作需启动引擎(如某些OBD测试)。


6.否定响应码关键说明

  1. 0x7E与0x7F的区别
  • 0x7E:子功能在当前会话中不支持(如默认会话下调用0x34校验服务)。
  • 0x7F:整个服务在当前会话中不支持(如默认会话下调用0x31刷写服务)。
  1. 厂商自定义NRC(0x80-0xFE)
  • 需查阅具体ECU厂商的私有协议文档(如博世、大陆等可能有扩展定义)。
  1. 调试建议
  • 遇到NRC时,优先检查:
  • 会话状态(是否已进入扩展/编程会话)。
  • 安全访问(是否完成0x27解锁)。
  • 参数合法性(DID、地址、长度等是否符合规范)。