在UDS(统一诊断服务)协议里,当ECU收到一个诊断请求后,如果因为某些原因无法处理,它不会直接忽略,而是会回复一条**否定响应(Negative Response)**。这能帮助你快速定位问题,就像操作软件时弹出的“错误提示框”。UDS(ISO 14229)协议中,**消极响应(否定响应)** 根据其结构、触发时机和用途,主要分为以下几种类型:
- 一、按响应格式分类
1. 标准否定响应(Standard Negative Response)
- **格式**:`7F` + 请求SID + NRC
- **示例**:请求 `10 03`,响应 `7F 10 78`
- **说明**:最常见的否定响应,ECU直接告知请求失败,并附带具体原因码(NRC)。
2. 带子功能的否定响应(Negative Response with Sub-function)
- **格式**:`7F` + 请求SID + 子功能 + NRC
- **示例**:请求 `27 01`,响应 `7F 27 01 35`(子功能=01,NRC=35)
- **说明**:某些服务(如安全访问、通信控制)的否定响应会**回显子功能**,帮助诊断仪定位具体哪个子功能失败。
二、按NRC分组分类(ISO 14229定义)
ISO 14229将NRC分为多个组别
常见的否定响应码(NRC)分类
+----------------------+--------+----------+------------------------------------------+
| 分类 | NRC | 缩写 | 含义与常见场景 |
+----------------------+--------+----------+------------------------------------------+
| 1. 请求格式与语法错误 | 0x11 | SFNS | 服务不支持 |
| | 0x12 | SFNSF | 子功能不支持 |
| | 0x13 | IMLOIF | 消息长度错误或格式无效 |
+----------------------+--------+----------+------------------------------------------+
| 2. 条件与权限不满足 | 0x22 | CCNC | 条件不满足(最常见) |
| | 0x24 | RSE | 请求序列错误 |
| | 0x33 | SAD | 安全访问被拒绝 |
+----------------------+--------+----------+------------------------------------------+
| ...(其他分类) |
+----------------------+--------+----------+------------------------------------------+