在ISO 14229 中,负响应代码范围可以划分为3个范围:
0x00: 服务器内部实现的 positiveResponse 参数值;
0x01 ~ 0x7F:与通信相关的否定响应代码;
0x80 ~ 0xFF:针对特定条件的否定响应代码,这些特定条件在服务器接收到请求的时间点不正确。
在学习ISO 14229的过程中,我们肯定会接触到正负响应,而负响应的错误码(NRC码)是我们判断为什么出现负响应的重要判断依据。那么,在ISO 14229 中,有哪些NRC码是定义好了的?又有哪些是还没有被定义的?请查看下方的表格:
Hex | Name | Description |
01 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
0F | ||
10 | GeneralReject | 一般性拒绝。通常在无法准确描述错误时发出 |
11 | serviceNotSupported | 服务不支持。多出现在服务未被定义 |
12 | sub-functionNotSupported | 子功能不支持。多出现子功能未被定义 |
13 | ncorrectMessageLengthOrInvalidFormat | 报文长度错误 |
14 | responseTooLong | 响应字节数太长 |
15 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
20 | ||
21 | busyRepeatRequest | 过忙导致执行失败。多出现在快速发送请求 |
22 | conditionsNotCorrect | 条件不满足。多出现在整车状态无法满足诊断的需求 |
23 | ISOSAEReserved | ISO 保留,暂时未定义 |
24 | requestSequenceError | 请求的顺序错误。多出现在没有首先接收请求的情况下接收sendKey子功能 |
25 | noResponseFromSubnetComponent | 子网无法响应 |
26 | FailurePreventsExecutionOfRequestedAction | DTC出现了错误的记录。一般不出现 |
27 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
30 | ||
31 | requestOutOfRange | 请求超出范围 |
32 | ISOSAEReserved | ISO 保留,暂时未定义 |
33 | securityAccessDenied | 安全访问模式错误 |
34 | ISOSAEReserved | ISO 保留,暂时未定义 |
35 | invalidKey | 密钥key无效 |
36 | exceededNumberOfAttempts | 收到的invalidKey超过了允许的尝试次数 |
37 | requiredTimeDelayNotExpired | NRC_36之后,安全访问锁定的时间内再次请求seed |
38 | reservedByExtendedDataLinkSecurityDocument | 扩展数据链路层保留 |
... | ||
4F | ||
50 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
6F | ||
70 | uploadDownloadNotAccepted | 上传/下载受限。多出现在通过诊断刷写程序 |
71 | transferDataSuspended | 数据传输中断。多出现在通过诊断刷写程序 |
72 | generalProgrammingFailure | 编程失败。多出现在通过诊断刷写程序 |
73 | wrongBlockSequenceCounter | 块序计算错误。多出现在通过诊断刷写程序 |
74 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
77 | ||
78 | requestCorrectlyReceived-ResponsePending | 请求正常接收,但应答正在响应中 |
79 | ISOSAEReserved | ISO 保留,暂时未定义 |
... | ||
7D | ||
7E | sub-functionNotSupportedInActiveSession | 该子功能在当前会话下不支持 |
7F | serviceNotSupportedInActiveSession | 该服务在当前会话下不支持 |
80 | ISOSAEReserved | ISO 保留,暂时未定义 |
81 | rpmTooHigh | 编程管理地址过高 |
82 | rpmTooLow | 编程管理地址过低 |
83 | engineIsRunning | 发动机运转。· |
84 | engineIsNotRunning | 发动机未运转 |
85 | engineRunTimeTooLow | 发动机运行时间过短 |
86 | temperatureTooHigh | 温度过高 |
87 | temperatureTooLow | 温度过低 |
88 | vehicleSpeedTooHigh | 车速过高 |
89 | vehicleSpeedTooLow | 车速过低 |
8A | throttle/PedalTooHigh | 油门/踏板太高 |
8B | throttle/PedalTooLow | 油门/踏板太低 |
8C | transmissionRangeNotInNeutral | 非空挡 |
8D | transmissionRangeNotInGear | 不在指定档位 |
8E | ISOSAEReserved | ISO 保留,暂时未定义 |
8F | brakeSwitch(es)NotClosed | 踏板开关未关闭 |
90 | shifterLeverNotInPark | 车辆处于非P档 |
91 | torqueConverterClutchLocked | 液力变矩器离合器锁定 |
92 | voltageTooHigh | 电压过高 |
93 | voltageTooLow | 电压过低 |
94 | reservedForSpecificConditionsNotCorrect | 预留给特定异常情况 |
... | ||
EF | ||
F0 | vehicleManufacturerSpecificConditionsNotCorrect | 预留给整车厂定义的特定异常情况 |
... | ||
FE | ||
FF | ISOSAEReserved | ISO 保留,暂时未被定义 |
回过头来看所有的服务,其实并不是所有的NRC码均在服务中有提及到。但这并不意味着我们对于不在服务中定义的NRC码可以进行忽略,同样的,NRC码是我们快速判断故障原因的重要依据。