详解UDS服务功能寻址与物理寻址及NRC响应规则

工作中,对于功能寻址NRC到底哪些该回复,哪些不需要回复比较混肴。抽空翻了下ISO14229-1,结合资料,有了如下结论,若有问题,欢迎指正~

1.概念

UDS协议定义了两种不同寻址方式的诊断请求,分别为:物理寻址(physical addressing)和功能寻址(function addressing)。

  • 物理寻址(1:1):采用端对端的通信方式,Tester发送诊断请求给某个ECU

  • 功能寻址(1:N):采用广播的通信方式,Tester发送诊断请求给整车ECU。

维度功能寻址物理寻址
通信模式广播(一对多)点对点(一对一)
响应规则部分NRC不响应(如0x11, 0x12)所有错误均需响应
典型应用场景批量操作、全局配置精确调试、特定ECU编程
总线负载低(单次请求+有限响应)高(需多次请求+响应)

2. 为何有功能寻址

功能寻址主要有以下几个优势:

  1. 批量操作效率提升

    • 通过单次广播请求(如CAN ID 0x7DF),同时触发多个ECU执行相同操作,避免逐一对各ECU发送物理寻址请求的冗余操作。

    • 典型用例

      • 批量清除多个ECU的故障码(服务 0x14

      • 统一关闭所有ECU的周期通信(服务 0x28

      • 同时禁用多个ECU的故障检测(服务 0x85

  2. 减少总线负载

    • 抑制非必要响应:针对特定NRC(如服务不支持、子功能不支持等),ECU不回复否定响应(NRC),避免总线因多节点同时响应造成拥堵。

    • 优化带宽占用:适用于需要快速完成全局操作且无需逐一确认结果的场景(如产线下线配置)。

  3. 全局状态管理

    • 统一控制多个ECU的会话状态(如通过服务 0x3E 维持非默认会话),确保诊断流程同步。

    • 同时获取多个ECU的通用信息(如通过服务 0x22 读取软件版本)

3. NRC响应规则

根据ISO14229-1 2020中描述,NRC响应针对带功能及不带子功能的表现有所不同。

3.1 对带子功能参数的请求消息的响应

物理寻址的客户端请求消息

功能寻址的客户端请求消息


 

3.2 对不带子功能参数的请求消息的响应

物理寻址的客户端请求消息

功能寻址的客户端请求消息

4. 总结一下

物理寻址下,若肯定响应抑制位=0,无论是肯定响应还是否定响应,服务器都需要应答;

若肯定响应抑制位=1,肯定响应不需要应答(但是若回了NRC78,肯定响应也会回复,抑制位失效),否定响应都需要应答。

功能寻址下肯定响应抑制位=0,若是肯定响应,则服务器发送肯定响应;若是否定响应,服务不支持、子功能不支持、数据参数不支持这三个任一个条件成立,服务器均不需要响应;例如 NRC 12(子功能不支持),NRC 11(服务不支持),NRC7E(当前会话下子功能不支持),NRC 7F(当前会话下服务不支持),NRC 31(参数请求超出范围) ,不需要响应;NRC22, NRC33则需要回复

肯定响应抑制位=1,若是肯定响应,则服务器不响应;若是否定响应,除了上述不需要回复的NRC,其他都需要回复。

具体场景示例:

场景抑制位设置ECU处理结果依据
请求不支持的服务(NRC 0x11)1(功能寻址)不回复任何响应抑制规则覆盖此NRC
安全访问未解锁(NRC 0x33)1(功能寻址)回复否定响应(0x7F + NRC 0x33)非抑制类NRC需反馈
当前会话不支持子功能(NRC 0x7E)1(功能寻址)不回复任何响应抑制规则覆盖此NRC
请求参数超限(NRC 0x31)1(功能寻址)不回复任何响应抑制规则覆盖此NRC
密钥验证失败(NRC 0x35)1(功能寻址)回复否定响应非抑制类NRC需反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值