焉知汽车科技

  • 首页
  • 文章
  • 视频
  • 资料

UDS基础:正响应抑制位(suppressPosRspMsgIndicationBit)详解

2023-09-15 13:45 348
摘要:
本文,着重分析suppressPosRspMsgIndicationBit。

来源 | 开心果Need Car

知圈 | 进车载摄像头社群,加微13501975564,备注视觉


做汽车诊断开发的工程师应该有这样的体会:诊断虽然不难,但是细枝末节繁杂。即使做了多年诊断工作,依然会有理解不到位的地方。


就比如:正响应抑制位(suppressPosRspMsgIndicationBit)。别看这个点不起眼,但是,工程上,发现不少工程师对此一知半解。本文,着重分析suppressPosRspMsgIndicationBit。


1、诊断请求格式


在UDS(Unified Diagnostic Services)协议中,有些诊断服务含有子服务(SubFunction)eg:DiagnosticSessionControl (0x10) service,服务请求格式如下:

图片


对应到具体的数据流,示意如下:


图片


有些诊断服务没有子服务(Without SubFunction),eg:ReadDataByIdentifier (0x22) service,服务请求格式如下:


图片


对应到具体的数据流,示意如下:


图片


不管服务是否带有子服务,一般来说,诊断交互是一个"乒乓"过程,即:一问一答。当然,这也不是绝对的,有一些工况可以不用回复,而不用回复的这种场景,一般适用于具有子服务的Service。


2、子服务参数结构

既然包含子服务的服务可以不响应诊断请求,Server是如何知道不用回复的呢?答:通过suppressPosRspMsgIndicationBit。搞懂suppressPosRspMsgIndicationBit之前,先看一下SubFunction的参数结构,如下所示:


图片


以$10服务为例,如果将suppressPosRspMsgIndicationBit置位(=1),即:将SubFunction所在字节的bit7置位,示意如下:


图片


解读:


A:suppressPosRspMsgIndicationBit用于告知Server(可以看作ECU)是否需要回复正响应(positive response)。


B:当suppressPosRspMsgIndicationBit = 1时,表示Server不用回复正响应。注意:这里只是说正响应不用回复。


C:即使suppressPosRspMsgIndicationBit = 1时,如果Server识别到错误,否定响应(negative response,NRC)需要回复。


所以,suppressPosRspMsgIndicationBit用于抑制Server的正响应,而不是抑制Server的否定响应。


3、功能寻址/物理寻址与suppressPosRspMsgIndicationBit

当suppressPosRspMsgIndicationBit = 1时,物理寻址(Physically addressed)的诊断请求碰到否定响应(NRCxx),需要给出否定响应,如下所示:


图片


当suppressPosRspMsgIndicationBit = 1时,功能寻址(Functionally addressed)的诊断请求碰到否定响应(NRCxx),需要给出否定响应,如下所示:


图片


所以,不管是物理寻址还是功能寻址的诊断请求,suppressPosRspMsgIndicationBit = 1,当Server识别到错误,依然要给出NRC响应。


4、NRC0x78与suppressPosRspMsgIndicationBit

既然suppressPosRspMsgIndicationBit = 1,Server识别到错误,要给出NRC响应,那么NRC = 0x78(requestCorrectlyReceived-ResponsePending)如何处理呢?答:需要给出最终响应,不管最终是正响应还是否定响应,都需要给出。


规范具体解释如下:


图片


5、工程示例

关于suppressPosRspMsgIndicationBit的问题,工程上也时有发生,如下数据流:


图片


如上,上位机使用功能寻址(0x1FFF)发送了0x02 10 82(正响应抑制位置位),对应的Server给出了NRC 0x78,但是没有给出最终响应,显然不符合规范。


(一)数据流剖析


当Server收到10 82请求时,Server由Application跳转到Bootloader程序,这个过程中可能涉及到一些信息的存储或者外设的关闭,耗费的时间过长。所以,可以先给出一个NRC0x78(Response Pending),争取额外时间(eg:5s)。但是,程序跳转到Bootloader需不需要给出最终响应呢?按照UDS规范,显然要给出。但是,考虑到工程实际情况,此问题不会带来严重的安全隐患,不给出最终响应,没啥致命问题,可以申请偏差(甲方同意不同意就看Battle水平了)。但是,从软件实现的角度讲,给出最终响应的实现难度并不大。
评论 0

请先 登录 后再发表评论~

红豆沙冰

152

获赞

77

粉丝

2

关注

热门文章

百度 ANP 3.0,算是技术最牛的智能驾驶方案了吗?
百度 ANP 3.0,算是技术最牛的智能驾驶方案了吗?
大咖带你逛车展-车联网产业实践(大唐高鸿)
大咖带你逛车展-车联网产业实践(大唐高鸿)
知课 PIX Moving:滑板底盘,如何开启新造车2.0
知课 PIX Moving:滑板底盘,如何开启新造车2.0
云管端一体化全栈智驾计算平台研发与实践
云管端一体化全栈智驾计算平台研发与实践
地平线:Matrix计算平台参考设计助力高阶自动驾驶创新发展
地平线:Matrix计算平台参考设计助力高阶自动驾驶创新发展
芯驰科技:拥抱开放生态,打造高效的自动驾驶平台
芯驰科技:拥抱开放生态,打造高效的自动驾驶平台
映驰科技:高性能计算群的研发
映驰科技:高性能计算群的研发
佛吉亚 | HUA座椅智能操作系统
佛吉亚 | HUA座椅智能操作系统
如何治好主机厂的智能化软件焦虑?这家企业给出良方
如何治好主机厂的智能化软件焦虑?这家企业给出良方
知课 自动驾驶“多传感器融合感知”技术算法解析
知课  自动驾驶“多传感器融合感知”技术算法解析

更多精华美文扫码阅读

焉知汽车

焉知汽车

希骥电池与储能

希骥电池与储能

© 2018-2022 焉知 All Right Reserved · 沪ICP备15043037号-5 沪公网安备 31011502007507号