以下是 完整的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 | 链路控制(管理通信速率等) |
补充说明
- 否定响应(0x7F):所有服务都可能返回此响应,附带 否定响应码(NRC) 说明失败原因(如"条件不满足"、"安全访问被拒"等)。
- OEM自定义服务:部分SID范围(如 0x30-0x3C、0x40-0x7E)保留给厂商自定义扩展。
- 兼容性:并非所有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 | 请求顺序错误:操作步骤非法(如未先执行 |
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 | 块序列号错误:数据传输时块序号不连续(如 |
0x7E | SubFunctionNotSupportedInActiveSession | 当前会话不支持子功能:请求的子功能在当前诊断会话中不可用(如默认会话下调用编程功能)。 |
0x7F | ServiceNotSupportedInActiveSession | 当前会话不支持服务:请求的服务在当前会话中无效(如默认会话下调用 |
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 | 编程安全访问被拒:刷写前未通过安全认证(需先执行 |
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.否定响应码关键说明
- 0x7E与0x7F的区别
- 0x7E:子功能在当前会话中不支持(如默认会话下调用
0x34
校验服务)。 - 0x7F:整个服务在当前会话中不支持(如默认会话下调用
0x31
刷写服务)。
- 厂商自定义NRC(0x80-0xFE)
- 需查阅具体ECU厂商的私有协议文档(如博世、大陆等可能有扩展定义)。
- 调试建议
- 遇到NRC时,优先检查:
- 会话状态(是否已进入扩展/编程会话)。
- 安全访问(是否完成
0x27
解锁)。 - 参数合法性(DID、地址、长度等是否符合规范)。