【车载开发系列】UDS诊断当中的NRC

本文详细解析了车载开发中UDS诊断中的NRC概念,包括NRC的不同类型、优先级排序、通用服务的回复流程,以及物理寻址和功能寻址时的NRC处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【车载开发系列】UDS诊断当中的NRC

【车载开发系列】UDS诊断当中的NRC

  • 【车载开发系列】UDS诊断当中的NRC
    • 一. NRC概念介绍
    • 二. NRC回复的优先级
      • 1)NRC 0x11和0x7F的区别
      • 2)NRC 0x11和0x12的区别
      • 3)NRC 0x12和0x7E的区别
      • 4)NRC 0x7F和0x7E的区别
    • 三. 通用服务的NRC回复流程
      • 1)mandatory
      • 2)optional
      • 3)manufacture/supplier specific
    • 四. 物理寻址和功能寻址回复NRC
      • 1)物理寻址但带sub-function服务
      • 2)功能寻址但带sub-function服务
    • 五. 常用NRC定义

一. NRC概念介绍

当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制正响应(Suppress PositiveResponseMessageIndicationBit,简写为SPRMIB),通常来说,如果这个bit被置1,则ECU不会给出正响应(positive response)。

二. NRC回复的优先级

参照ISO14229,大部分车厂是也是参考这个来的,可能有个别NRC是客户定制,这种例外的按照客户需求来就行了。
NRC的优先级从高到低排列:
NRC 0x11 > 0x7F > 0x13 > 0x12 > 0x7E > 0x33 > 0x24 > 0x31 > 0x22 > 0x78

1)NRC 0x11和0x7F的区别

都是服务不支持,但0x11是整个服务不支持,而0x7F是在某个会话不支持,在其他服务下是支持的。举个例子:28服务,只支持在扩展会话下,但在默认会话下执行0x28服务,那此时回复的NRC就是0x7F。29服务都不支持,那此时回复的NRC就是0x11。

2)NRC 0x11和0x12的区别

0x11是服务不支持,0x12是子功能不支持。这个还是比较好理解的。举个例子:19服务有很多子功能,假设客户不支持0A子功能,那执行19 0A就会回复0x12;假设客户需求不支持23服务,那执行23服务就回复0x11,而且不管你后面传的子功能参数对不对,长度对不对,都是回复0x11,因为0x11优先级最高(看标准0x21总线繁忙的NRC优先级是最高的,但没怎么用过)。

3)NRC 0x12和0x7E的区别

0x12是整个子功能不支持,而0x7E是在当前会话不支持。举个例子:19服务有很多子功能,假设客户需求不支持0A子功能,那执行19 0A就会回复0x12;假设10 02服务只在扩展会话下支持,但在默认会话下执行了,就会回复0x7E。

4)NRC 0x7F和0x7E的区别

0x7F是当前会话下服务不支持,0x7E是当前会话下子功能不支持。这两个没啥好说的,看具体情况,如果这两个都支持,则回复NRC 0x7F,因为0x7F优先级更高。

三. 通用服务的NRC回复流程

这是ISO14229-1中的规范,这个NRC的回复优先级适用所有没有子功能的服务。从这个可看出回复NRC的顺序为:0x11 > 0x7F > 0x33。

1)mandatory

强制性的,也就是说这一列的NRC必须是按这个顺序来回复。

2)optional

可选择的,就是不一定有,可以选择性地由每个请求消息进行评估。例如出现总线繁忙时,就先回复NRC0x21。

3)manufacture/supplier specific

车厂或主机厂规范,这是客户要求的,有些客户有特殊的需求,具体的按照客户要求来做就行。

四. 物理寻址和功能寻址回复NRC

1)物理寻址但带sub-function服务

分成抑制正响应(SPRMIB = 1),没有抑制正响应(SPRMIB = 0)两种情况。
1.NRC 0x31不管SPRMIB有没有置位,在参数不对或不支持的情况下都回复NRC 0x31;
2.在SID不支持时,SPRMIB没有置位,则回复NRC 0x11或0x7F,看具体情况;但SPRMIB置位了,则一定回复NRC 0x11;
3.在sub-function不支持时,SPRMIB没有置位,则回复NRC 0x12或0x7E,看具体情况;但SPRMIB置位了,则一定回复NRC 0x12。

2)功能寻址但带sub-function服务

请求的服务是功能寻址时,NRC为:服务不支持(0x11),当前会话服务不支持(0x7F),子功能不支持(0x12),当前会话子功能不支持(0x7E),请求超出范围(0x31),不管SPRMIB是否置位,都不会回复NRC。但前提是没有回复NRC 0x78的情况下。
也就是说,如果请求的是功能寻址,且NRC是上面5个中的任意一个,假设是NRC 0x7F,但是服务端先回复了一个NRC 0x78,那么服务端最后就必须回复NRC 0x7F了。

五. 常用NRC定义

10(General reject)
11(Service not supported)服务不支持
12(Subfunction not supported)不支持子服务
13(Incorrect message length or invalid format)不正确的消息长度或无效的格式
14(Response too long)响应过长
21(Busy repeat request)重复请求忙
22(Conditions not correct)条件不正确
24(Request sequence error)请求序列错误
25(noResponseFromSubnetComponent)子网节点无应答
26(failurePreventsExecutionOfRequestedAction)故障阻值请求工作执行
31(Request out of range)请求超出范围
33(Security access denied)安全访问拒绝
35(Invalid key)密钥无效
36(Exceed number of attempts)超出尝试次数
37(Required time delay not expired)所需时间延迟未到
7E(Subfunction not supported in active session)激活会话不支持该子服务
7F(Service not supported in active session)激活会话不支持该服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值