前言:本篇是作者自己对于常用UDS协议中NRC的总结(更详细就需要大家看协议了,中文版可以找我要)
NRC码:否定响应码。NRC主要是用于协议中负响应的错误码,是我们判断服务时重要的判据。
大致分为三个范围:
0x00:"PR",服务器内部实现的 positiveResponse 参数值;
0x01 ~ 0x7F:与通信相关的否定响应代码;
0x80 ~ 0xFF:针对特定条件的否定响应代码,这些特定条件在服务器接收到请求的时间点不正确。
在作者自己的认知里面,常用的就是ISO14229协议有着正负响应码,然后对于正响应就是服务相关的,负响应码就是用的NRC。
加粗是常用
下面是我们介绍NRC的内容(根据ISO14229协议进行概括):
HEX | Name | Description | 备注 |
01 | ISOSAEReserved | 作者认为此部分是基本没用到保留的,PR是用于定义进入NRC判断 | |
... | |||
0F | |||
10 | GeneralReject | 无法准确描述错误时报出 | 很少用 |
11 | ServiceNotSupported | 服务不支持 | 常用 |
12 | Sub-functionNotSupported | 子功能不支持 | 常用 |
13 | NcorrectMessageLengthOrInvalidFormat | 报文长度不对 | 常用 |
14 | responseTooLong | 响应时间太长 | |
15-20 | ISOSAEReserved | 保留 | |
21 | BusyRepeatRequest | 繁忙请求,一般是请求过快多帧发送 | |
22 | ConditionsNotCorrect | 条件不满足 | 这里多为供应商自己定义的。除非主机厂自己规定了条件 |
23 | ISOSAEReserved | 保留 | |
24 | RequestSequenceError | 请求顺序错误。请求有多个子功能的时候顺序限制 | 这里一般在31,27服务运用较多。27多指没有请求种子就接受秘钥 |
25 | NoResponseFromSubnetComponent | 子网无回应 | |
26 | FailurePreventsExecutionOfRequestedAction | 执行请求操作被拒绝 | 基本不用 |
27-30 | ISOSAEReserved | 保留 | |
31 | RequestOutOfRange | 请求超出范围 | 常用 |
32 | ISOSAEReserved | 保留 | |
33 | SecurityAccessDenied | 安全访问模式出错 | 多用于限制服务的安全等级 |
34 | ISOSAEReserved | 保留 | |
35 | InvalidKey | 秘钥无效 | 多指27服务秘钥和请求种子不对应 |
36 | ExceededNumberOfAttempts | 收到的invalidKey超过了允许的尝试次数 | 各大主机厂要求不一样 |
37 | RequiredTimeDelayNotExpired | NRC36之后,安全访问锁定的时间内再次请求任意种子 | 一般用于查看上锁次数的 |
38-4F | ReservedByExtendedDataLinkSecurityDocument | 扩展数据链路层保留 | |
50-6F | ISOSAEReserved | 保留 | |
70 | UploadDownloadNotAccepted | 上传/下载受限。多出现在通过诊断刷写程序 | Boot |
71 | TransferDataSuspended | 数据传输中断。多出现在通过诊断刷写程序 | Boot |
72 | GeneralProgrammingFailure | 编程失败。多出现在通过诊断刷写程序 | Boot |
73 | WrongBlockSequenceCounter | 场序计算错误,多出现在诊断刷写程序 | Boot |
74-77 | ISOSAEReserved | 保留 | |
78 | RequestCorrectlyReceived-ResponsePending | 请求正常接收,但应答正在响应中 | 这个主要用于响应时间长的服务,但有些主机厂的设备不支持78 |
79-7D | ISOSAEReserved | 保留 | |
7E | Sub-functionNotSupportedInActiveSession | 子功能在当前会话不支持 | 常用 |
7F | ServiceNotSupportedInActiveSession | 服务在当前会话不支持 | 常用 |
80 | ISOSAEReserved | 保留 | |
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 | 保留 | |
8F | BrakeSwitch(es)NotClosed | 踏板开关未关闭 | 一般指没踩下 |
90 | ShifterLeverNotInPark | 车辆处于非P空挡 | |
91 | TorqueConverterClutchLocked | 液力变矩器未处于锁止状态 | |
92 | VoltageTooHigh | 电压过高 | |
93 | VoltageTooLow | 电压过低 | |
94-EF | ReservedForSpecificConditionsNotCorrect | 特殊异常条件预留 | |
F0-FE | VehicleManufacturerSpecificConditionsNotCorrect | 一般是汽车制造商的需求预留 | |
FF | ISOSAEReserved | 保留 |