文章目录
- 一、NRC的定义与作用
- 二、NRC的优先级与处理机制
- 三、常见NRC码及其含义
- 四、NRC的应用场景示例
- 五、NRC的实际意义与价值
- 六、常见服务支持的NRC以及优先级
- 1.DiagnosticSessionControl (0x10) service:
- 2.ECUReset (0x11) service:
- 3.SecurityAccess (0x27) service
- 4.CommunicationControl (0x28) service
- 5.TesterPresent (0x3E) service
- 6.ControlDTCSetting (0x85) service
- 7.ReadDataByIdentifier (0x22) service
- 8.WriteDataByIdentifier (0x2E) service
- 9.ClearDiagnosticInformation (0x14) Service
- 10.ReadDTCInformation (0x19) Service
- 11.InputOutputControlByIdentifier (0x2F) service
- 12.RoutineControl (0x31) service
- 13.RequestDownload (0x34) service
- 14.TransferData (0x36) service
- 15.RequestTransferExit (0x37) service
一、NRC的定义与作用
NRC(Negative Response Code)是UDS(统一诊断服务)协议中用于指示诊断请求执行失败原因的编码。当ECU(电子控制单元)无法完成客户端(如诊断工具)的请求时,会通过否定响应报文返回NRC码,帮助诊断工具快速定位问题根源。NRC是UDS协议中不可或缺的错误反馈机制,通过标准化的编码和优先级规则,为汽车诊断提供了高效、可靠的错误处理方案。理解NRC码的含义和应用场景,是开发诊断工具、调试ECU功能的关键基础。
响应格式:
7F + 请求SID + NRC码
7F:固定标识符,表示否定响应。
请求SID:原始请求的服务标识符(Service ID)。
NRC码:1字节代码,表示具体错误类型。
二、NRC的优先级与处理机制
1.示例
当多个错误条件同时存在时,ECU会依据预设优先级返回最高级别的NRC。优先级顺序通常如下(部分示例):
0x11(服务不支持)> 0x7F(当前会话下服务不支持)> 0x13(数据长度错误)>
0x12(子功能不支持)>0x7E(当前会话下子功能不支持)
例如,若同时存在“服务不支持”和“子功能不支持”,ECU会优先返回0x11,因其表示更根本的错误(服务未实现)。
2.通用NRC优先级规范:


三、常见NRC码及其含义
以下为UDS中常用的NRC码及典型场景:
| NRC码 | 含义 | 典型场景 |
|---|---|---|
| 0x11 | 服务不支持 | 请求的SID在ECU中未实现(如尝试调用非标准服务)。 |
| 0x12 | 子功能不支持 | 请求的子功能(Sub-function)在ECU中未实现(如安全访问级别不足)。 |
| 0x22 | 请求数据错误 | 请求参数无效(如DID超出范围、数据格式错误)。 |
| 0x33 | 安全访问未通过 | 请求需安全认证(如28服务),但未通过密钥验证。 |
| 0x78 | 请求正在处理中 | ECU忙(如正在执行其他操作),需稍后重试。 |
| 0x7E | 当前会话下子功能不支持 | 在当前诊断会话模式(如默认会话)下,子功能不可用(需切换至扩展会话)。 |
| 0x7F | 当前会话下服务不支持 | 在当前会话模式下,服务不可用(如编程服务需在编程会话下调用)。 |
| 0x24 | 子服务顺序错误 | 请求的子服务顺序不符合要求(如31服务需先执行“启动例程”再“停止例程”)。 |
四、NRC的应用场景示例
| 服务 | 场景 | NRC示例 |
|---|---|---|
| ECU编程与刷写服务:36服务(TransferData,数据传输) | 通过34服务(RequestDownload)请求下载数据后,使用36服务传输数据块。 | 若数据块序列错误,返回0x22(请求数据错误)。若未先调用34服务直接传输数据,返回0x24(子服务顺序错误)。 |
| 安全访问:服务:2E服务(Writedata) | 访问受保护功能(如ECU复位)前需通过安全认证。 | 若密钥错误或未发送认证请求,返回0x33(安全访问未通过)。 |
| 故障诊断:服务:19服务(ReadDTCInformation,读取故障码) | 请求读取特定DTC(故障码)的快照信息。 | 若请求的DTC状态掩码无效,返回0x22(请求数据错误)。若DTC不支持快照记录,返回0x31(请求超出范围)。 |
五、NRC的实际意义与价值
快速故障定位:通过NRC码,诊断工具可迅速判断问题类型(如服务不支持、参数错误),减少排查时间。
协议合规性验证:NRC码的定义遵循ISO 14229标准,确保不同厂商的ECU和诊断工具兼容。
安全机制:如0x33(安全访问未通过)强制要求认证流程,防止未授权操作。
六、常见服务支持的NRC以及优先级
1.DiagnosticSessionControl (0x10) service:

2.ECUReset (0x11) service:

3.SecurityAccess (0x27) service

4.CommunicationControl (0x28) service

5.TesterPresent (0x3E) service

6.ControlDTCSetting (0x85) service


7.ReadDataByIdentifier (0x22) service

8.WriteDataByIdentifier (0x2E) service


9.ClearDiagnosticInformation (0x14) Service


10.ReadDTCInformation (0x19) Service

11.InputOutputControlByIdentifier (0x2F) service


12.RoutineControl (0x31) service


13.RequestDownload (0x34) service


14.TransferData (0x36) service


15.RequestTransferExit (0x37) service


2090

被折叠的 条评论
为什么被折叠?



