诊断协议那些事儿

本文为诊断协议那些事儿专栏文章,在某些情况下,当我们使用诊断设备请求后,通过观察物理现象(指示灯闪烁、雨刷摆动)可判断执行情况,而不需要响应报文,以此降低总线负载率。基于此UDS标准协议规定了SPRMIB位。



抑制肯定响应消息指示位

抑制肯定响应消息指示位是在Subfunction这个字节的最高位,我们把它叫做肯定响应抑制位。只有服务支持Subfunction的时候,才有可能支持肯定响应抑制位,当肯定响应抑制位置1的时候,要求所有的肯定响应的抑制将不再发送。当肯定响应抑制位为0的时候,肯定响应是不被抑制的。这里要注意的是它只是抑制肯定响应,而否定响应是不被抑制的。
否定响应的抑制可参考:服务响应的执行规则一文

子功能参数定义

在UDS协议中,部分服务是具有子功能sub-function的。子功能参数占用了一个字节,可用的数值范围为0~0xFF,但子功能参数的取值范围为0x00 - 0x7F,最大取值为0x7F,在介绍各个服务时,也多次提及忽略SPRMIB位,即SuppressPosRspMsgIndicationBit。

参考文章请求格式的diagnosticSessionType:10服务-DiagnosticSessionControl

Suppress Positive Response Message Indication Bit(SPRMIB)

Suppress positive response message indication bit(SPRMIB) only support in sub-function services with sub-function bytes.This bit defines whether a positive response of ECU is required or not.

SF的Bit7(SPRMIB) 描述
0 Positive Answer——not suppressed
1 Positive Answer——suppressed(exception NRC 0x78)

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

/* ECU收到了子功能为0x82的诊断会话控制服务,最终仍然给出了肯定响应 */
Tester : 02 10 82
ECU : 03 7F 10 78
ECU : 06 50 02 00 32 01 F4

SPRMIB作用

当肯定响应抑制位置1时,要求所有的肯定响应将不再发送。可降低车载总线的负载,一般用于客户端(Client)通过功能寻址请求多个ECU同时执行诊断服务的情况下。比如Bootloader升级流程中,诊断设备通过功能寻址请求所有ECU进入扩展会话,这时所有收到功能寻址请求的ECU都会执行进入扩展会话的操作,成功执行的ECU不给出肯定响应,只有没有成功进入扩展会话的ECU才会给出否定响应。【在实际使用时,若ECU不反馈否定响应即代表请求被成功执行】

注:有时诊断仪不关心肯定响应(收到这些肯定响应也不会做额外的处理),更关系哪些ECU没有成功执行(给出否定响应)

在CANdelaStudio中的配置


需注意CDD文件中此处不可配置(SPRMIB in Request仅为测试使用),需在CDDT文件中配置,后续将在CANdelaStudio配置专题进行介绍。


总结

以上就是今天要讲的内容,一般情况下如果这个服务支持Sub-function,就存在支持肯定响应抑制位的可能,如10、11、27、28、3E、83、85、86、87、2C、19、31。
仅供参考:一般支持SPRMIB的服务10、11、28、3E、85【均支持功能寻址】

笔记:如果对于具有大量数据的响应(需要使用分页缓冲处理),SPRMIB为TRUE,则可能导致第一批数据的传输仍然可以在响应计时时段内启动,但服务执行的终止却超出了响应计时时段的限制。在这种情况下,如果响应被抑制,则没有办法将延迟通知客户端,但是服务器仍然很忙,还没有准备好接收下一个请求。对于客户端,建议不要请求大量的数据并在同一个请求中设置SPRMIB(例如SID 0x19 SF 0x0A),因为这将违背SPRMIB的目的。对于服务器实现,建议发送NRC 0x78 (RCRRP),然后再发送肯定响应,以防在SPRMIB为TRUE时使用分页缓冲处理。

抑制肯定响应消息指示位(SPRMIB)相关推荐

  1. [Davinci Configurator 配置] 实现功能寻址不响应、关闭抑制肯定响应、NRC否定响应

    背景 在DCM开发过程中经常会遇到如下功能需求: (1)某个UDS诊断服务不支持功能寻址的情况下,ECU接收到功能寻址的该UDS诊断服务,如何实现不响应该诊断服务. 举例:2E服务不支持功能寻址,EC ...

  2. 统一诊断服务(UDS)中的肯定响应抑制

    统一诊断服务UDS中的肯定响应抑制 子功能参数定义 肯定响应抑制位的作用 例外情况 子功能参数定义 UDS协议中,有些诊断服务是带有子功能的.子功能参数的取值范围为0x00 - 0x7F.细心的同学应 ...

  3. http请求消息体和响应消息体

    HTTP基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式.HTTP允许传输任意类型的数据对象,HTTP协议是无状态协议.无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后 ...

  4. HTTP协议 ----响应消息

    HTTP协议 1. 请求消息:客户端发送给服务器端的数据 * 数据格式:         1. 请求行         2. 请求头         3. 请求空行         4. 请求体 2. ...

  5. HTTP_响应消息_响应行_状态码

    2. 响应消息:服务器端发送给客户端的数据     * 数据格式:         1. 响应行             1. 组成:协议/版本 响应状态码 状态码描述             2. ...

  6. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  7. java day39【HTTP协议:响应消息 、Response对象 、ServletContext对象】

    第一章  HTTP协议:响应消息 1. 请求消息:客户端发送给服务器端的数据 * 数据格式: 1. 请求行 2. 请求头 3. 请求空行 4. 请求体 2. 响应消息:服务器端发送给客户端的数据 * ...

  8. Rasa学习笔记1-rasa响应消息的步骤和名词解释

    1.响应消息的步骤 Rasa是一个对话机器人框架 2.Rasa名词解释和作用 (1)意图intents:要做什么(意图:订车票) (2)实体entities:谁做,做啥(实体:人物:张三:目的地:北京 ...

  9. 微信企业号开发之接收响应消息

    上一篇讲了企业号如何开启回调模式,回调模式开启成功后,企业号后台服务器就可以接收和响应客户端发来的消息.客户端发送的消息微信会推送到回调模式中设置的URL中去,接收和响应消息的格式都为xml形式,消息 ...

最新文章

  1. 简单描述ListView中使用GestureDetector冲突的解决办法
  2. java mongodb 使用MongoCollection,BasicDBObject 条件查询
  3. Codevs 1021 玛丽卡
  4. pycharm如何分两页阅读_雅思高分喜报| 听力、阅读、写作突破7分,2个月轻松突破雅思总分7, 她是如何做到的?...
  5. 如何做一场精彩的学术报告?
  6. 寻找重复的子树 Find Duplicate Subtrees
  7. mysqldump使用方法
  8. [查找问题] 例5.1 找x
  9. 理解ThreadLocal(一)
  10. python虚拟环境中安装diango_django是要在虚拟环境激活后安装吗
  11. Smali语言基础语法
  12. 百炼JAVA-----实现家庭收支记账软件
  13. PC端自适应-rem
  14. 用c#二次开发的焊锡检测视觉系统
  15. message from server: “Host ‘DESKTOP-FAJUM7V‘ is not allowed to connect to this MySQL server“
  16. oracle的Minus的使用
  17. n%i==0在c语言作用,在C语言中,if(n%i==0,)是什么意思?n和i分别为一个数、 , c语言中 if(n%i==0) break 什么意思...
  18. 启航——三十而立四十不惑的程序员
  19. iOS入门-27图片墙
  20. python用1000张照片合成一张_有没有什么惊艳的微信头像?Python一键下载1000张!...

热门文章

  1. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
  2. 为什么挤破头进大厂,大厂如何设置薪资职级体系?
  3. 解决json数据 key为数字,自动排序问题
  4. MATLAB中对矩阵的变换
  5. DBA日-周-月工作职责
  6. python count函数时间复杂度_Python之时间复杂度
  7. 网站攻击的常见形式及应对方法
  8. Revit二次开发——自动标注轴网
  9. pytorch repeat 使用详解
  10. 学习Word必学这一招——样式