跟我学UDS(ISO14229) ———— 0x2C(DynamicallyDefineDataIdentifier)

  客户端请求动态定义数据标识符,这些数据标识符随后可以由 0x22(ReadDataByIdentifier) 服务读取。该服务的目的是为客户端提供将一个或多个数据元素分组为数据超集的功能,可以通过 0x22(ReadDataByIdentifier) 或0x2A(ReadDataByPeriodicIdentifier) 服务进行整体请求。动态定义的 dataIdentifier 会将包含数据参数定义的串联。分组的数据元素可以由以下任何一个组成:
—— 源数据标识符,位置和大小
—— 内存地址和内存长度
—— 上面列出的两种方法的组合

  该服务在处理诊断应用程序的临时数据需求方面提供了更大的灵活性,超出了可以通过静态定义的 DID 读取的信息的范围,并且还可以通过避免频繁的请求/响应从而降低带宽利用率。动态定义的 DID的定义可以通过单个请求消息或通过多个请求消息来完成。**重新定义动态定义的 DID则是通过清除当前定义并重新定义。虽然该服务不禁止这种功能,但是不建议。**因为删除引用的记录可能会在引用记录内造成数据一致性问题。该服务还提供清除现有动态定义的数据记录的功能。如果指定的数据记录标识符在服务器支持的有效动态数据标识符的范围内,则清除数据记录的请求应得到肯定的响应。服务器需要维护动态定义的数据记录,直到清除或由车辆制造商指定为止。例如,在会话转换或服务器断电时删除动态定义的数据记录。

  该服务支持两种类型的数据记录实现,以定义动态DID :
—— 组合数据块:位置参数应引用组合数据块中的起点,size参数应反映在动态定义的DID中的数据的长度。测试人员负责在动态数据记录中仅包含数据的复合数据块的一部分基本数据记录。
—— 两字节PID:位置参数应设置为 1,大小参数应反映PID的长度(基本数据记录的长度)。测试人员负责在动态数据记录中仅不包含两字节PID值的一部分。

  动态定义的数据记录中的数据顺序应与客户请求消息中指定的顺序相同。除了定义动态 DID 之外,此服务还提供了通过绝对存储器地址和存储器长度信息定义动态定义的 DID 的功能。 但建议仅在服务器的开发阶段使用这种定义动态数据标识符的机制。

诊断请求格式

sub-function 参数的值为 defineByIdentifier 的 格式要求:
在这里插入图片描述
sub-function 参数的值为 defineByMemoryAddress 的 格式要求:
在这里插入图片描述
sub-function 参数的值为 clearDynamicallyDefinedDataIdentifier 的 格式要求:
在这里插入图片描述


关于 Sub-function 参数的解释,请查阅下表:

sub-function parameter definition
HexNameDescription
00ISOSAEReservedISO 保留,未定义
01defineByIdentifier向服务器指定动态DID的定义应通过DID引用进行
02defineByMemoryAddress向服务器指定动态DID的定义应通过地址引用进行
仅在开发阶段使用
03clearDynamicallyDefinedDataIdentifier清除指定的动态DID
04ISOSAEReservedISO 保留,未定义
...
7F


关于上述提到的一些参数,对其的解释也请从下表查阅:
other parameters definition
NameDescriptionComment
dynamicallyDefinedDataIdentifier指定在将来对 0x22 服务或 0x2A 服务的调用中如何引用由客户端定义DIDdynamicDefinedDataIdentifier 必须在 0x22 服务中作为 DID 处理
sourceDataIdentifier仅在 参数 sub-function = defineByIdentifier 中存在在逻辑上指定要包含在动态 DID 中的信息源
positionInSourceDataRecord仅在 参数 sub-function = defineByIdentifier 中存在用于指定要包含在动态数据记录中的源数据记录摘录的起始字节位置
addressAndLengthFormatIdentifier每个半字节分别编码bit 7-4:memorySize参数的长度(字节数)
bit 3-0:memoryAddress参数的长度(字节数)
memoryAddress仅在 参数 sub-function = defineByMemoryAddress 中存在要包含在动态 DID 中的信息的内存源地址
memorySize指定源数据记录/内存地址中要包含在动态DID中的字节总数-

正响应格式

具体的格式如下:
在这里插入图片描述
如果请求消息中存在dynamicDefinedDataIdentifier参数,则存在dynamicallyDefinedDataIdentifier;否则不包括该参数。


负响应NRC 码

具体的NRC码如下:
在这里插入图片描述




  该服务的理解上比较难,可以多参考ISO 14229中的例子。这里就不过多的引用。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小趴菜_自动驾驶搬砖人

谢谢大爷赏饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值