0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DDS传递簇与大型数组的教程

华穗科技 来源:华穗科技 2025-02-28 17:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

数据分发服务(Data Distribution Service,DDS)源于美军的数据链,作为网络数据通讯的核心技术,能可靠实时地交换分配群体数据,其传输能力比通常的战术数据链高几个数量级。DDS必须确保在极少的时间和不限制网络中的报告数据容量的条件下,高度可靠地传输数据。

大家在使用DDS传递数据时可能遇到过波形采样数过大导致无法传递的情况,或者无法使用DDS传递Cluster的情况,今天小编将带领大家一起解决这个问题,下面请跟随小编一起来学习一下吧!

本文教程:

DDS传递簇与大型数组的教程

两种情况的发生和当前传递数据的数据类型有关,如果使用DDS传递的数据类型为字符串,所有其他形式的数据类型最终都会以特定的方式转变成字符串,再在DDS中进行传递。

当波形采样数大于2000时,波形数据向字符串转换时会导致字符串过长而无法传递;当使用Cluster时,Cluster向字符串转换的过程会发生问题,导致字符串数据的异常。

为了在一般环境下解决这个问题,我们就需要使用RTI DDS的工具来创建一些用于“传递特定数据类型的VI”实现利用DDS传递特定数据类型数据。

下图为波形数据向字符串转换的逻辑

3f2bf3dc-f579-11ef-9310-92fbcf53809c.png

一、解决方法:

1、RTI DDS安装

首先我们需要安装RTI DDS的工具包。

在VIPM中搜索“RTI DDS”在选中弹出的“RTI DDS Toolkit”然后点击右上角的“Install”等待自动安装。

3f4c6c3e-f579-11ef-9310-92fbcf53809c.png

2、创建一个自定义类型

若想借助 RTI DDS 的工具创建一个用于 “传递特定数据类型” 的 VI,第一步要创建一个自定义类型,以此作为生成 “传递特定数据类型” VI 的前提条件。我们以波形数据为例展开说明,它兼具大数组和 Cluster 的特性。

创建一个自定义类型,在项目树“My Computer”右击选中“New”-“Type Definition”。

3f6e7482-f579-11ef-9310-92fbcf53809c.png

在为“传递特定数据类型的VI”创建自定义类型过程中,需注意以下三点:

1、必须为自定义类型命名。

2、若自定义类型中包含数组元素,需严格设定数组长度,并需要设为默认值。设定方法为:跳转至目标索引(如示意下图中的10000位),随后输入“0”或预设的初始化数据值。注意:完成“Make Current Value Default”设置后,建议先退出编辑界面再重新进入,以便确认操作成功生效。

3、变体以及部分特定数据类型不可用于自定义类型之中。

3f8f3262-f579-11ef-9310-92fbcf53809c.jpg

3、创建API

RTI DDS提供了一个工具,用于创建“传递特定数据类型的VI”。单击工具栏的“Tool”,在弹出的菜单栏中选中“RTI DDS Toolkit”-“RTI DDS ComplexType Generator…”。

3faffea2-f579-11ef-9310-92fbcf53809c.png

在弹出的VI界面按下图进行配置

3fd8134c-f579-11ef-9310-92fbcf53809c.png

Type of Generation:这里选择“Advance”(高级)。创建复杂数据类型一定要选这个。Simple只能创建一些简单的数据类型。

Save the Type Definition:可以选择“Yes”or“No”,取决于你是否希望生成VI的同级文件目录下包含用于创建VI的自定义数据类型。

Path to the Custom Type Definition:用于选择刚刚创建的自定义数据类型的文件路径。

Output Directory:用于VI生成的文件路径,最后所有的VI都会生成在此文件路径下。

Generate Example VIS:决定是否生成VI范例。

Domain ID:DDS的一种属性,这里是用于生成范例的一个参数。

Topic Name:DDS传递数据的一种属性,这里是用于生成范例的一个参数。

完成配置后,单击“Generate Code”开始生成VI。弹出如下提示,则表示生成成功。

3ff8ca88-f579-11ef-9310-92fbcf53809c.png

最后在刚刚选择的“Output Directory”文件路径下会生成一些VI,如果“Save the Type Definition”选择“No”,则不会出现“.ctl”文件。

4011ea68-f579-11ef-9310-92fbcf53809c.png

4、范例演示

在项目中新建一个虚拟文件夹,将刚刚生成的VI全部加到项目中(如果项目中包含用于创建VI的自定义类型,则不要将生成的自定义类型加入,否则会冲突报错)。

然后选择“Write Example”以及“Read Example”,分别运行两个VI,即可进行数据传递。

40352d98-f579-11ef-9310-92fbcf53809c.gif

5、程序解析

我们从整体结构来看,其实DDS的读和写只有三个步骤:

①创建读写节点

②读写数据

③释放节点

406947a4-f579-11ef-9310-92fbcf53809c.png

408cec22-f579-11ef-9310-92fbcf53809c.png

6、总结

如果我们想在一般环境下利用DDS传递Cluster以及大型数组,流程如下:

1、创建自定义类型

2、确认自定义类型中没有DDS不能解析的数据类型

3、确认自定义类型中的数组已经定义了大小

4、选择好参数之后,利用工具创建VI

5、使用VI搭建功能

以上就是DDS传递簇与大型数组的教程的所有内容啦,欢迎大家留言讨论,交流分享!

以上内容就是本期的全部内容,更多关于测试系统中的实际软硬件应用知识,可关注本公众号/下方合集,敬请期待!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDS
    DDS
    +关注

    关注

    22

    文章

    683

    浏览量

    156069
  • 波形
    +关注

    关注

    3

    文章

    401

    浏览量

    32895
  • 字符串
    +关注

    关注

    1

    文章

    594

    浏览量

    23040
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27114

原文标题:教程 | DDS传递簇与大型数组的教程

文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于数组

    在如下图的数组中如何把不同时间的温度显示出来?
    发表于 11-06 21:47

    关于数组的一个问题

    我有一个数组是这样的,是一个菜谱,中有一个字符串输入控件,一个数值输入控件,一个确定按钮。我想捕捉输入控件值改变的事件,确定按钮的事件是解绑然后找哪个为真,但字符串和数值就不行了
    发表于 11-29 20:32

    转换为数组,无法转换

    两个相同的控件;一个一维数组,2列,已转换为显示控件;一个创建数组函数。报错:已连接两个包含不同内容的。请帮忙查找一下问题原因!谢谢!
    发表于 03-20 15:42

    问一下数组到底怎么做的啊

    图中的数组是把数组里,还是数组里?
    发表于 05-04 21:18

    数组的操作

    这个程序的要求是这样的:1. 产生100个0到5之间的实数数组;2. 产生150个实部在-2到2之间,虚部在-2i到2i之间的复数数组;3. 将上面两个数组组成一个;4. 从上面的
    发表于 08-03 11:25

    数组的操作

    数组的操作的一个实例,写的比较仔细,文章最后附有代码,方便学习。本人原创,翻版必究。
    发表于 08-30 23:41

    labview的数组编辑

    我将严格自定义类型的放到空数组中,编辑以后保存再打开,结果还是编辑之前的界面,已哭晕...求大神给个指点啊!
    发表于 11-29 16:48

    关于数组问题

    如图,如何解绑带有2个数值和一个一维数组数组还不损失数据
    发表于 05-06 11:01

    LabVIEW数组转换元素的对应问题

    `新手做数组的转换,为什么出现了第1个数组元素没有和的第一个元素对应呢?`
    发表于 02-28 15:35

    创建数组不匹配的问题

    我在利用创建数组函数创建数组时,出现了下面的问题:我的程序框图和前面板如下,查不出错误
    发表于 03-26 16:13

    Labview之创建数组

    Labview之创建数组,很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:23 0次下载

    Labview之数组与二维数组显示

    Labview之数组与二维数组显示,很好的Labview资料,快来下载学习吧。
    发表于 04-19 11:28 0次下载

    介绍了数组数据类型以及创建和使用数组的方法

    本教程介绍了数组数据类型,以及创建和使用数组的方法。 数组由元素和维度构成,可以是输入控件或显示控件,但不能同时包含输入控件和显示控
    发表于 11-16 18:13 1.3w次阅读
    介绍了<b class='flag-5'>数组</b>和<b class='flag-5'>簇</b>数据类型以及创建和使用<b class='flag-5'>数组</b>和<b class='flag-5'>簇</b>的方法

    LabVIEW初级教程之数组的详细资料说明

    在编程中,有时将相关数据归为一组很有用。在LabVIEW中使用数组将相关数据归为一组。数组将相同类型的数据组合成一个数据结构,将多个数据类型的数据组合成一个数据结构。
    发表于 01-15 09:59 9次下载
    LabVIEW初级教程之<b class='flag-5'>数组</b>和<b class='flag-5'>簇</b>的详细资料说明

    LabVIEW初级教程之数组的相关例程免费下载

    本文档的主要内容详细介绍的是LabVIEW初级教程之数组的相关例程免费下载。
    发表于 01-15 09:59 22次下载
    LabVIEW初级教程之<b class='flag-5'>数组</b>和<b class='flag-5'>簇</b>的相关例程免费下载