UDS诊断中的NRC

本文详细介绍了NRC(NegativeResponseCode)在汽车诊断中的应用,包括其基本概念、分类、优先级规则以及在不同服务请求下的响应策略。作者通过实例解析了NRC的触发条件和处理方式,有助于理解和解决诊断过程中的问题。
摘要由CSDN通过智能技术生成

我总结了一张表格:详细解释了NRC的分布情况和NRC的触发条件

1:基本概念

NRC 全称Negative Response Code(否定响应代码),是指示uds诊断中的,指示否定响应的原因

例如:0x22 服务

request 报文  0x618 03 22 F1 34 00 00 00 00

Negative Response 响应报文 0x658 03 7F 22 31

2:NRC相关详细解释

我已经上传到资源中(excel表格总结),大家可以自行下载

3:对NRC简单的分类

一级分类二级分类英文简写解释
通用型NRC0x00-0x0FISOSAEReserved系统保留
0x10GeneralReject一般错误
0x11ServiceNotSupported服务不支持
0x12subfunctionNotSupoot子功能不支持
0x13INcorrectMessageLengthOrInvalidFormat长度或格式不支持
0x14
0x15-0x20
0x21BusyRepeatRequest
0x22
0x23
0x24
0x25
0x26
0x27-0x30
0x31
0x32
关于0x27服务的NRC0x33
0x34
0x35
0x36
0x37
0x38-0x4F
0x50-0x6F
关于刷新的NRC0x70
0x71
0x72
0x73
0x74-0x77
0x78
0x79-0x7D
0x7E
0x7F
0x80
关于发动机系统的特定NRC0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94-0xFF

4:NRC的优先级

我们以通用型NRC为例:

请求报文:0x618 05 10 99 XX XX XX XX XX;

可以看到 05 长度是错误的,对于0x10服务来说,0x99的子功能也是不存在的。 

那么该该返回 NRC 0x13还是返回NRC 0x11?带着这个问题,我们进入NRC优先级的讲解。

NRC是优先级,

1:有一个非常重要的前提条件:必须是针对特定的服务来讨论优先级关系,因为每个服务对应的NRC是不一致的。

2:ISO14229-1 中规定了相应的NRC优先级,其中存在三个概念

名称解释
mandatory强制性的,也就是强制性的规定NRC的优先级
optional可选择的

manufacture

supplier specific

主机厂要求,具体按照主机厂规范来做就好

通常情况下:按照如下优先级顺序实现,即可

NRC11>0x7F>0x13>0x12>0x7E>0x33(0x34&&0x35&0x36是0x33出现以后才能出现的)>0x24>0x31>0x22>0x78

4.1 接下来,我们以0x22服务为模板,

可以看到关于0x22请求服务,

1:服务器先是检查报文长度,长度不符合返回否定响应码0x13,。

2:然后进入循环,(这里循环,是因为0x22是可以同时支持多个DID读取的)故需要有个计数。

同时客户端还能选择,比如0x21检查,看能不能支持多DID读取。

3:然后检查DID是否需要安全解锁等级的要求。

4:下一步,主机厂如果对DID读取有(如整车电源模式要求,车速<3km/h的要求,检查不通过则返回0x22)

5:检查是否至少有一个DID支持,在本会话模式中,不通过则返回0x31

6:最后服务器检查客户端,发出的最长长度(CAN最长长度4095Byte),如果超出此长度则放回0x14

补充:如果0x22服务,不被ECU支持,难道不检查了吗?则返回0x11,虽然不常见,但是必须要了解。

4.2 0x2E服务的NRC优先级

和ox22差不多,只是可以最后阶段,需要检查下,是否写入(EER)成功成功!

4.3 0x14服务的NRC优先级顺序

 14服务注意,他没有子功能,也没有DID,但是如果项目要求,其必须,在某种会话模式下才能使用,如果不满足此条件。那么将会返回0x31。

5:最后附上个NRC的英文全称和简写

一级分类二级分类英文全称简写
通用型NRC0x00-0x0F
0x10GeneralRejectGR
0x11ServiceNotSuportedSNS
0x12SubFunctionNotSupportedSFNS
0x13IncorrectMessagelengthOrInvalidFormatIMLOIF
0x14-0x20
0x21busRepeatRequestBRR
0x22ConditionsNotCorrectCNC
0x23
0x24RequestSequenceErrorRSE
0x25
0x26
0x27-0x30
0x31RequestOutOfRangeROOR
0x32
关于0x27服务的NRC0x33SecurityAccessDeniedSAD
0x34
0x35invalidKeyIK
0x36ExceedNumberOfAttempENOA
0x37RequiredTimeDelayNotExpiredRTDNE
0x38-0x4F
0x50-0x6F
关于刷新的NRC0x70UploadDownNotAcceptUDNA
0x71TransferDataSuspendedTDS
0x72GeneralProgrammingFailureGPF
0x73WrongBlockSequenceCounterWBSC
0x74-0x77
0x78RequestCorrectlyReceived
-ResponsePending
RCRRP
0x79-0x7D
0x7EsubFunctionNotSupported
inActiveSession
SFNSIAS
0x7F
0x80
关于发动机系统的特定NRC0x81
0x82
0x83
0x84
0x85
0x86
0x87
0x88
0x89
0x8A
0x8B
0x8C
0x8D
0x8E
0x8F
0x90
0x91
0x92
0x93
0x94-0xFF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值