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

    浏览量

    6925
  • 诊断仪
    +关注

    关注

    1

    文章

    82

    浏览量

    9389
  • ECU软件
    +关注

    关注

    1

    文章

    13

    浏览量

    10503
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    一文搞懂UDS的各种NRC

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

    【CPKCOR-RA8D1】+ 6. 使用RA8D1实现UDS诊断之27安全访问

    和 数 据 的 访 问 权 限 , 并 通 过“SecurityAccess-SendKey”肯定响应报文指出。如果两数不相符,此访问被认为是一次错误的访问尝试。如果访问因其它原因被拒回,此访问并不
    发表于 10-26 21:04

    UDS诊断命令备忘录

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

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

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

    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 2.4w次阅读
    <b class='flag-5'>UDS</b>常用诊断服务

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

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

    汽车UDS协议栈与XCP协议栈

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

    盟通方案|如何集成UDS协议

    UDS诊断协议广泛应用于汽车、重卡等领域的设备诊断和固件更新。该协议主要针对全车ECU进行标准化的数据交互。UDS应用层‌(ISO14229-1)定义了6大类共26项诊断服务,覆盖了ECU开发功能
    的头像 发表于 06-06 14:06 521次阅读
    盟通方案|如何集成<b class='flag-5'>UDS</b>协议

    《CAN(FD)总线十万个为什么》之UDS诊断(上)

    在汽车电子的世界里,UDS诊断协议如同一把神奇的钥匙,为工程师和维修人员打开了通往车辆“心脏”的大门。今天,就让我们一起揭开UDS诊断的神秘面纱,探索其在汽车电子行业的重要角色。UDS
    的头像 发表于 11-05 11:35 251次阅读
    《CAN(FD)总线十万个为什么》之<b class='flag-5'>UDS</b>诊断(上)

    在CANdelaStudio如何修改肯定响应抑制

    首先打开cddt文件,点击ProtocolServices,找到对应的诊断服务,如19服务;2、然后右击选择Properties;3、最后点击右侧手指的图标,修改对应寻址方式下的肯定响应抑制位置1或者置0,保存即可。
    的头像 发表于 12-02 10:27 137次阅读
    在CANdelaStudio<b class='flag-5'>中</b>如何修改<b class='flag-5'>肯定</b><b class='flag-5'>响应</b><b class='flag-5'>抑制</b>位