子功能参数定义
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诊断请求已经被成功执行了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
JTAG是针对MCU或者SOC这种芯片的调试接口协议,而UDS更像是针对整个ECU的调试接口。UDS简单来说是一种Client/Server的通信服务,即Tester(诊断仪)向ECU发送诊断服务请求(Request),ECU则向Tester发送对应服务请求的
发表于 11-28 09:56
•5283次阅读
当服务端收到诊断请求时,如果能执行则回复肯定响应,不能执行则回复否定响应;也有不给出响应的情况,就是抑制正
发表于 01-20 10:01
•2.3w次阅读
谁能帮我解答下CAN中的UDS诊断?需要联系请私信我。遇到好多难题。有点懵。想请高手帮我解答下.主要是没有程序。而且还不知道报文里面的数据代表什么?
发表于 10-21 23:14
本帖最后由 xu391600076 于 2021-8-11 13:18 编辑
1. Hex文件读取解析并计算CRC-32校验码2. UDS服务通讯3. UDS刷写逻辑过程复制下面这段话,打开闲
发表于 08-11 11:41
UDS实践性强,逻辑复杂,很多服务非要体验过一次才能理解,导致包括我在内的初学者感觉晦涩难懂,不明觉厉,因此将自己的理解写下来、整理下来,与君共勉。零、UDS诊断命令备忘录一、简介UDS
发表于 08-26 16:09
刚性、惯量、响应时间及伺服增益调整之间的关系 浅析伺服系统应用中的惯量匹配问题-惯量匹配
发表于 09-07 07:01
关于伺服的采样周期、循环时间、响应时间、响应频率和带宽不看肯定后悔
发表于 10-09 07:48
PrimaryECU在已经开发完UDS诊断的基础上增加OBD II诊断一、OBD II与UDS的区别?这里主要介绍在诊断开发上面OBD II与UDS的区别,此外为了方便描述,下文中用OBD指代OBD II协议。1.Operati
发表于 02-23 06:55
测试等功能,在 ISO 14229 中规定了其实现标准。 在本实例中,UDS 通信是在客户端-服务端关系中执行的。客户端是上位机下载软件运行于 PC 机,服务端是 MM32F0140
发表于 09-15 16:35
针对UDS诊断协议在电动汽车电机控制器中的应用问题,利用UDS诊断协议中各项服务的功能,同时根据电机控制器的功能需求,实现UDS诊断协议
发表于 04-02 17:16
•8次下载
14229协议,在ISO 14229协议中定义了UDS服务用法、服务格式等信息。UDS诊断最主要目的是为了能够快速准确判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。 诊断服务概览
发表于 06-12 10:36
•1.1w次阅读
作者|小懒小编|吃不饱在车载诊断中常用的诊断协议有ISO14229等,在协议中主要定义了诊断请求、诊断响应的报文格式及ECU该如何处理诊断请求的应用。其中ISO14229系列标准协议定义了用于行业
发表于 04-23 09:32
•2316次阅读
15031,ISO 15765,还有我们熟悉的ISO 14229就是UDS协议,在协议里面定义了诊断的请求,诊断响应的报文格式,以及ECU怎样处理诊断请求报文,以及诊断服务的应用。
发表于 08-15 17:00
•3861次阅读
在车辆中进行故障诊断、参数配置和编程等操作。 UDS协议栈通常包含以下功能软件: 通信层:负责处理UDS协议的通信,包括CAN总线通信、LIN总线通信等。 诊断服务:实现了UDS协议定义的各种诊断服务,如读取故障码、清除故障码、
发表于 10-27 16:35
•4025次阅读
汽车工业的很多领域都有严格的国际标准,其中针对车载诊断的ISO14229规定了车载诊断服务的通用需求(UDS),UDS主要应用于OSI模型的应用层,UDS协议根据功能的不同定义了26种诊断服务
发表于 11-30 08:24
•2060次阅读
评论