UDS中NRC否定响应码理解

UDS中NRC否定响应码理解

UDS(统一诊断服务)协议中的NRC(否定响应码)是ECU在处理诊断请求时返回的错误代码,用于指示请求失败的具体原因。根据ISO 14229标准,NRC码分为三个主要范围:

NRC码分类

0x00-0x0F:保留区域

  • 0x00:正响应参数值(ECU内部使用)

  • 0x01-0x0F:ISO/SAE保留

0x10-0x7F:通信相关错误

常用NRC码及其含义:

NRC码 名称 含义
0x10 General Reject 一般拒绝,无法准确描述错误原因时使用
0x11 Service Not Supported 服务不支持
0x12 Sub-Function Not Supported 子功能不支持
0x13 Incorrect Message Length or Invalid Format 报文长度或格式不正确
0x14 Response Too Long 响应字节数过长
0x21 Busy Repeat Request ECU过忙,需要重试请求
0x22 Conditions Not Correct 条件不满足
0x24 Request Sequence Error 请求顺序错误
0x25 No Response From Subnet Component 子网组件无响应
0x26 Failure Prevents Execution Of Requested Action 故障阻止请求执行
0x31 Request Out Of Range 请求超出范围
0x33 Security Access Denied 安全访问拒绝
0x35 Invalid Key 密钥无效
0x36 Exceed Number Of Attempts 超出最大尝试次数
0x37 Required Time Delay Not Expired 安全访问锁定时间未过期
0x78 Request Correctly Received-Response Pending 请求已接收,响应待处理
0x7E Sub-Function Not Supported In Active Session 当前会话下子功能不支持
0x7F Service Not Supported In Active Session 当前会话下服务不支持

0x80-0xFF:特定条件错误

这些NRC码用于报告更具体的错误原因,通常与ECU的特定状态条件相关,如:

  • 0x81:发动机转速过高

  • 0x82:发动机转速过低

  • 0x83:发动机正在运行

  • 0x84:发动机未运行

  • 0x85:发动机运行时间过短

  • 0x86:温度过高

  • 0x87:温度过低

  • 0x88:车速过高

  • 0x89:车速过低

NRC优先级

NRC码的优先级从高到低排列为:

0x11 > 0x7F > 0x13 > 0x12 > 0x7E > 0x33 > 0x24 > 0x31 > 0x22 > 0x78

响应格式

否定响应的标准格式为:7F + 请求SID + NRC码

  • 7F:固定标识符,表示否定响应

  • 请求SID:原始请求的服务标识符

  • NRC码:1字节代码,表示具体错误类型

NRC码在UDS诊断中起着关键作用,帮助诊断工具快速定位问题根源,提高诊断效率和准确性。

相关推荐
汽车通信软件大头兵3 天前
信息安全--安全XCP方案
网络·安全·汽车·uds
沪漂的码农4 天前
UDS诊断物理层时间参数详解技术文章
c语言·can·uds
清轩轩12 天前
UDS时间参数学习(应用层+网络层+会话层+传输层)
c语言·can·信息与通信·诊断·uds
小凡子空白在线学习2 个月前
UDS中时间参数相关
uds
IAMeee2 个月前
从项目中学习CAN和CANFD报文结构(新手入门)
自动化测试·can·uds·canfd·1024程序员节
Stephen深瞳6 个月前
工具:Autosar:DBC转ARXML
汽车·autosar·uds
CyberSecurity_zhang1 年前
入门车载以太网(7) -- DoIP
tls·uds·车载以太网·汽车诊断·doip
逸埃1 年前
[AutoSar]BSW_Diagnostic_007 BootLoader 跳转及APP OR boot response 实现
autosar·uds·bootloader·dcm
逸埃1 年前
[AutoSar]BSW_Diagnostic_006 RoutineControl (0x31)的配置和实现
autosar·uds·dcm·rid