【车载开发系列】UDS诊断---动态定义DID($0x2C)

这篇具有很好参考价值的文章主要介绍了【车载开发系列】UDS诊断---动态定义DID($0x2C)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【车载开发系列】UDS诊断—动态定义DID($0x2C)

一.概念定义

  1. 动态定义数据标识符 DynamicallyDefineDataIdentifier(2Ch)
  2. 此服务允许诊断工具在ECU的内部动态定义一个数据标识符,一个临时的DID,可以通过这个DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。
  3. 该数据标识符还可以被读取数据服务22h或读取数据(周期标识符)2Ah 所读取。
  4. 动态定义数据标识符将会包含一个串联的数据参数定义。

1)DID定义方式

  • 动态定义DID一共有三种方式
    1)通过原有的DID来定义
    2)通过指定的内存地址来定义
    3)以上两种方式结合来定义
  • 重新定义动态定义的 DID则是通过清除当前定义并重新定义。虽然该服务不禁止这种功能,但是不建议这么做。
  • 指定动态数据标识符需要在有效范围(F200h-F3FFh)
  • 当想要重新定义某一个DID的时候,要先用子功能-清除动态DID,来将原有的定义清除,再重新进行定义
  • 为了避免错误并降低复杂度,新定义的标识符不允许嵌套参考另一个动态定义的标识符。 如果指定的动态标识符在请求时正在被周期性(按照请求的时间)报告,动态数据标识符应先被终止然后再被清除。

2)DID失效条件

  • 当以下任一情况发生时,动态定义的标识符将失效:
    1)接收到清除动态标识符的指令;
    2)ECU 硬件或者软件复位;
  • 由于上面任何一个原因,ECU由非默认会话模式切换到默认会话模式。

二.应用场景

  1. 此服务的目的是提供给诊断工具组合一个或多个数据为一个数据集的能力。
  2. 该服务在处理诊断应用程序的临时数据需求方面提供了更大的灵活性,超出了可以通过静态定义的DID读取的信息的范围,并且还可以通过避免频繁的请求/响应从而降低带宽利用率。动态定义的DID的定义可以通过单个请求消息或通过多个请求消息来完成。

三.报文格式

1)报文请求

0x2C的所有的SubFunction的定义如下。0x01和0x03是最为常用的功能

Hex (bit6~0) 描述 Description 说明
0x00 ISOSAEReserved ISO保留,未定义 -
0x01 通过标识符定义 defineByIdentifier 通过数据标识符定义动态数据标识符,也就是向服务器指定动态DID的定义通过DID引用进行
0x02 通过内存地址定义 defineByMemoryAddress 通过地址引用定义动态数据标识符,服务器指定动态DID的定义应通过地址引用进行仅在开发阶段使用
0x03 清除动态定义数据标识符 clearDynamicallyDefinedDataIdentifier 此值用来清除指定的动态数据标识符
0x04-0xFF ISOSAEReserved ISO保留,未定义 -
1.请求通过标识符定义
  1. dynamicDefinedDataIdentifier必须在0x22服务中作为DID处理
  2. sourceDataIdentifier在逻辑上指定要包含在动态 DID 中的信息源
  3. positionInSourceDataRecord用于指定要包含在动态数据记录中的源数据记录摘录的起始字节位置
  4. memorySize指定源数据记录/内存地址中要包含在动态DID中的字节总数
    【车载开发系列】UDS诊断---动态定义DID($0x2C)
2.请求通过内存地址定义标识符
  1. addressAndLengthFormatIdentifier
    每个半字节分别编码
    bit 7-4:memorySize参数的长度(字节数)
    bit 3-0:memoryAddress参数的长度(字节数)
  2. memoryAddress
    仅在参数sub-function = defineByMemoryAddress 中存在要包含在动态DID中的信息的内存源地址
    【车载开发系列】UDS诊断---动态定义DID($0x2C)
3.请求清除已定义的标识符
  1. Request_ClearDynamicallyDefinedDataIdentifierd
  2. 如果请求消息中存在dynamicDefinedDataIdentifier参数,则存在dynamicallyDefinedDataIdentifier;否则不包括该参数。
    【车载开发系列】UDS诊断---动态定义DID($0x2C)

2)肯定响应

  1. 这里的肯定响应类型只有0x01和0x03两个,事实上在ISO14229当中,还有0x02。
    【车载开发系列】UDS诊断---动态定义DID($0x2C)

3)否定响应

【车载开发系列】UDS诊断---动态定义DID($0x2C)
常见的NRC码如下所示文章来源地址https://www.toymoban.com/news/detail-433251.html

Hex 描述 Description
0x12 子功能不支持 subFunctionNotSupported
0x13 报文长度错误 incorrectMessageLengthOrInvalidFormat
0x22 条件不满足 conditionsNotCorrect
0x31 请求超出范围 requestOutOfRange

到了这里,关于【车载开发系列】UDS诊断---动态定义DID($0x2C)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 车载诊断NRC - UDS Negative Response Code

    下表中列出了ISO14229-1:2013(E)中定义的否定响应码及其使用条件: 否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。 0x01 – 0x7F:诊断通信相关的否定响应码。 0x80 – 0xFF:服务器收到诊断服务请求时,由

    2023年04月08日
    浏览(49)
  • UDS统一诊断服务【一】诊断会话控制0X10服务

    最近在做诊断相关的开发工作,将自己接触到的知识点记录下来。前面的文章已经介绍过UDS的一些基础知识,和基本的一些概念,不清楚的可以查看之前的文章:UDS基础知识介绍 诊断会话控制服务 DiagnosticSessionControl ,SID是0X10,主要功能是控制服务端的会话模式切换。一般默

    2024年02月03日
    浏览(182)
  • 汽车诊断之UDS入门-0x27(SecurityAccess)安全访问

    安全访问服务 0x27 用来解锁 ECU 对应的安全等级 , 一般处在非默认会话 下 进行解锁,这个服务解锁的是 处在某个安全等级下的服务 。 服务格式   安全等级解闭锁   需要注意的是: 1.P owerOn 或者 R eset 后, ECU 处在 locked 状态; 2.同一时刻只有 1 个安全等级是 active ,与这个

    2024年02月08日
    浏览(75)
  • UDS统一诊断服务【三】安全访问0X27服务

    今天分享的是UDS的安全访问服务,希望能对你有所帮助 SecurityAccess 安全访问,27服务,用来保护某些诊断服务的,提供一种保护机制。例如对于重要数据的上传或者下载过程不做任何限制,可能会对整车的安全造成极大的威胁,尤其是针对底盘域的控制器更是要在这方面做好

    2024年02月16日
    浏览(54)
  • 【车载开发系列】诊断故障码中的Debounce策略

    故障诊断通常由诊断事件管理Dem模块和SW-C共同完成,即先由SWC中的Monitor Function对故障条件实时监控,并不断将故障条件的判定结果上报给Dem模块,而在Dem为了防止所有的故障误报,在其处理过程中增加一个Debouncing(去抖动)环节,也就是采用Debounce算法来确定事件的最终状态。

    2024年02月09日
    浏览(63)
  • UDS诊断系列之七 安全访问(27)服务(番外)附录I

    附录I的主要内容是通过一个状态图来描述ECU在安全访问的各状态之间的切换条件,以及如何进行状态切换即切换过程中都需要执行哪些操作。 下面直接先上图。 图看起来流程很多,但实际上很简单,先说图中的四个状态: A - ECU没有接收过任何安全访问的请求,或者刚刚接

    2024年02月10日
    浏览(53)
  • Autosar诊断实战系列16-UDS19 06扩展数据配置及工程问题讨论

    在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应用开发及诊断capl测试脚本开发等诊断相关实战内容。 Autosar诊断实战导读快速链接:

    2024年02月09日
    浏览(46)
  • 车载诊断协议DoIP系列 —— DoIP会话模式(安全与非安全)

    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己,四海皆为家。人生的

    2024年02月19日
    浏览(68)
  • Autosar诊断系列介绍20 - UDS应用层P2Server/P2Client等时间参数解析

    本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实战有更高需求,可参见诊断实战系列专栏,快速链接:Autosar诊断实战系列导读 如您MCAL配置,通信,诊断,OS等Autosar全栈实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶

    2024年02月14日
    浏览(61)
  • UDS诊断协议

    UDS 本质上是一系列服务的集合,包含 6 大类,共 26 种。每种服务都有独立的 ID ,即 SID 。 请求 SID(1Byte) + 参数 SID(1Byte) + Sub-function(1Byte) + 参数 SID + DID(2Bytes) 响应 肯定响应 SID+0x40(1Byte) + Sub-function (根据请求是否存在) + 参数 SID+0x40(1Byte) + DID + Data 否定响应 0x7F + SID + NRC(1Byte)

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包