0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析UDS中的肯定响应抑制SPRMIB

冬至子 来源:汽车电子联盟 作者:汽车电子联盟 2023-07-27 14:18 次阅读

子功能参数定义

UDS协议中,有些诊断服务是带有子功能的。子功能参数的取值范围为0x00 - 0x7F。细心的同学应该发现了,子功能参数占用了一个字节,可用的数值范围为0~0xFF。但子功能的最大取值只到0x7F,那么最高位去哪了呢。这个子功能参数的最高位就是我们今天要聊的诊断服务肯定响应抑制位SuppressPosRspMsgIndicationBit,简写为SPRMIB。

如下是诊断服务子功能参数的格式定义。其中的最高位Bit7就决定了ECU是否需要给出肯定响应。

子功能参数格式定义

图片

肯定响应抑制位的作用

ECU收到SPRMIB为1的服务时,不需要给出肯定响应。相反,当ECU收到SPRMIB为0的服务时,需要给出肯定响应。

例如,ECU收到诊断仪发来的Tester Present服务为$02 3E 00时,需要给出$02 7E 00的肯定响应。同样是Test Present服务,如果ECU收到的是$02 3E 80,则无需给出肯定响应。

例外情况

ECU在响应某些诊断服务时,由于执行时间较长,无法立即给出肯定响应。此时ECU会先给出NRC为0x78的否定响应。然后等到所请求的服务执行完后,给出最终的肯定响应或否定响应。这种情况下,即使ECU收到的诊断服务请求中子功能参数肯定响应抑制位为1,最终的肯定响应也不会被抑制。

例如在如下的诊断通信中, 即使ECU收到了子功能为0x82的诊断会话控制(DiagnosticSessionControl)服务,最终仍然需要给出肯定响应。

Tester : $02 10 82

ECU : $03 7F 10 78

ECU : $06 50 02 00 32 01 F4

我们来分析一下这个过程。首先Tester请求ECU进入编程回话(Programming session),但不希望ECU给出肯定响应。但是进入编程回话通常需要ECU复位,重新启动后进入Bootloader。这个过程所需要的时间会超过P2CAN_Server (通常为50ms)。所以ECU会先给出NRC为0x78的否定响应,用以通知Tester诊断请求已经正确接收了,正在处理,稍后给出响应。

当ECU成功执行了切换到Programming Session的操作后,由于之前给出了NRC为0x78的否定响应,此时必须给出肯定响应,用以通知Tester诊断请求已经被成功执行了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 复位器
    +关注

    关注

    0

    文章

    5

    浏览量

    6806
  • 诊断仪
    +关注

    关注

    1

    文章

    77

    浏览量

    8820
  • ECU软件
    +关注

    关注

    1

    文章

    13

    浏览量

    10303
收藏 人收藏

    评论

    相关推荐

    UDS在CAN和以太网上的实现方案

    JTAG是针对MCU或者SOC这种芯片的调试接口协议,而UDS更像是针对整个ECU的调试接口。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU发送诊断服务请求(Request),ECU则向Tester发送对应服务请求的
    发表于 11-28 09:56 5283次阅读
    <b class='flag-5'>UDS</b>在CAN和以太网上的实现方案

    一文搞懂UDS的各种NRC

    当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制
    的头像 发表于 01-20 10:01 2.3w次阅读
    一文搞懂<b class='flag-5'>UDS</b>的各种NRC

    谁能帮我解答下CAN总线UDS诊断?

    谁能帮我解答下CANUDS诊断?需要联系请私信我。遇到好多难题。有点懵。想请高手帮我解答下.主要是没有程序。而且还不知道报文里面的数据代表什么?
    发表于 10-21 23:14

    Labview 基于CAN UDS烧录Hex文件

    本帖最后由 xu391600076 于 2021-8-11 13:18 编辑 1. Hex文件读取解析并计算CRC-32校验码2. UDS服务通讯3. UDS刷写逻辑过程复制下面这段话,打开闲
    发表于 08-11 11:41

    UDS诊断命令备忘录

    UDS实践性强,逻辑复杂,很多服务非要体验过一次才能理解,导致包括我在内的初学者感觉晦涩难懂,不明觉厉,因此将自己的理解写下来、整理下来,与君共勉。零、UDS诊断命令备忘录一、简介UDS
    发表于 08-26 16:09

    浅析伺服系统应用的惯量匹配问题

    刚性、惯量、响应时间及伺服增益调整之间的关系 浅析伺服系统应用的惯量匹配问题-惯量匹配
    发表于 09-07 07:01

    关于伺服的采样周期、循环时间、响应时间、响应频率和带宽不看肯定后悔

    关于伺服的采样周期、循环时间、响应时间、响应频率和带宽不看肯定后悔
    发表于 10-09 07:48

    OBDII与UDS的区别是什么

    PrimaryECU在已经开发完UDS诊断的基础上增加OBD II诊断一、OBD II与UDS的区别?这里主要介绍在诊断开发上面OBD II与UDS的区别,此外为了方便描述,下文中用OBD指代OBD II协议。1.Operati
    发表于 02-23 06:55

    基于MM32F0140系列MCU实现UDS Bootloader的设计

    测试等功能,在 ISO 14229 规定了其实现标准。  在本实例UDS 通信是在客户端-服务端关系执行的。客户端是上位机下载软件运行于 PC 机,服务端是 MM32F0140
    发表于 09-15 16:35

    UDS诊断协议在纯电动汽车电机控制器的应用说明

      针对UDS诊断协议在电动汽车电机控制器的应用问题,利用UDS诊断协议各项服务的功能,同时根据电机控制器的功能需求,实现UDS诊断协议
    发表于 04-02 17:16 8次下载

    UDS常用诊断服务

    14229协议,在ISO 14229协议定义了UDS服务用法、服务格式等信息。UDS诊断最主要目的是为了能够快速准确判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。 诊断服务概览
    的头像 发表于 06-12 10:36 1.1w次阅读
    <b class='flag-5'>UDS</b>常用诊断服务

    UDS之19服务04子服务:读取快照数据

    作者|小懒小编|吃不饱在车载诊断中常用的诊断协议有ISO14229等,在协议主要定义了诊断请求、诊断响应的报文格式及ECU该如何处理诊断请求的应用。其中ISO14229系列标准协议定义了用于行业
    的头像 发表于 04-23 09:32 2316次阅读
    <b class='flag-5'>UDS</b>之19服务<b class='flag-5'>中</b>04子服务:读取快照数据

    UDS诊断服务响应规则介绍

    15031,ISO 15765,还有我们熟悉的ISO 14229就是UDS协议,在协议里面定义了诊断的请求,诊断响应的报文格式,以及ECU怎样处理诊断请求报文,以及诊断服务的应用。
    的头像 发表于 08-15 17:00 3861次阅读
    <b class='flag-5'>UDS</b>诊断服务<b class='flag-5'>响应</b>规则介绍

    汽车UDS协议栈与XCP协议栈

    在车辆中进行故障诊断、参数配置和编程等操作。 UDS协议栈通常包含以下功能软件: 通信层:负责处理UDS协议的通信,包括CAN总线通信、LIN总线通信等。 诊断服务:实现了UDS协议定义的各种诊断服务,如读取故障码、清除故障码、
    的头像 发表于 10-27 16:35 4025次阅读
    汽车<b class='flag-5'>UDS</b>协议栈与XCP协议栈

    UDS之29服务:认证服务

    汽车工业的很多领域都有严格的国际标准,其中针对车载诊断的ISO14229规定了车载诊断服务的通用需求(UDS),UDS主要应用于OSI模型的应用层,UDS协议根据功能的不同定义了26种诊断服务
    的头像 发表于 11-30 08:24 2060次阅读
    <b class='flag-5'>UDS</b>之29服务:认证服务