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

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

3天内不再提示

LabVIEW与Xplane飞行界面数据仿真交互

jf_4uwpxRjJ 来源:小草手把手LabVIEW 2023-06-26 09:30 次阅读

很多时候,我们使用LabVIEW可以和第三方的软件进行交互,可以得到更好的效果。

今天我们分享的,是和外界软件怎么UDP通信

有些同学是做飞行控制的,在做飞行仿真时候,肯定会用到视景仿真。也就是通过屏幕,显示飞机的姿态,经纬度等信息

一般地,做飞行仿真,如果自己使用Unity3D或者UnReal的虚拟引擎来做,比较费时间,需要对机场环境建模。

而针对普通的用户,更好的方式,则是使用目前比较流行的3D飞行游戏软件来开发。

像开源的Flight Gear,或者收费的Xplane等,都提供第三方的通信接口,通过UDP,可以接收游戏引擎中飞机的基本数据,也可以向游戏引擎发数据,控制飞机姿态和位置。

今天以xplane作为一个实例,讲述LabVIEW通过UDP显示Xplane的数据,并显示在地平仪和电子地图上。

Xplane游戏界面如下,做过飞行仿真的同学肯定不陌生在地图上显示的效果如下。

由于地图放大很大,所以呈马赛克状,下图右侧为xplane的飞机姿态,左侧为LabVIEW显示的姿态和地图位置(需要看实际效果,可以跳转本文末尾,看视频更佳)

088a5a72-1361-11ee-962d-dac502259ad0.gif

首先,本文使用的版本是Xplane11,其他版本操作类似。在交互前,最重要的是进入设置界面进行数据设置。

09be5740-1361-11ee-962d-dac502259ad0.png

点击选项卡数据,数据输出。 这里可以勾选要输出的数据。

勾选有4列,第一个显示在座舱,就是飞行时候,数据会显示在飞行界面左上角。第4列是UDP输出,勾选后,软件会将勾选的数据通过UDP发送出去。

一般的勾选UDP就行,但是,第一列显示座舱勾选后,我们会直观看到实际数据是多少,这样UDP输出的数据,通过我们二次开发的软件解析,可以对比数据一致性。

0a2be0c6-1361-11ee-962d-dac502259ad0.png


记得右下角,勾选 进行网络数据输出。

0a5130c4-1361-11ee-962d-dac502259ad0.png

下图,左上角,就是刚才勾选的座舱显示的数据。

我勾选了速度,姿态,经纬度等。所以都显示出来了。

实际UDP外发的时候,也是从上到下,数据依次发送的。

我们解析数据时候,可以和这个对照一下。

0a9775ac-1361-11ee-962d-dac502259ad0.png


现在看下UDP 数据结构: 所有数据均以字节形式发送,UDP数据开头为“DATA,”

prolouge 的第五个字节是“内部使用”字节

接下来的 36 个字节是消息

消息的前 4 个字节表示数据元素的索引号,如 X-平面 中的“数据输出”屏幕所示

最后 32 个字节是数据,最多 8 个单精度浮点数

下面是从 X-Plane 发送的原始数据字符串:

68 65 84 65 60 18 0 0 0 171 103 81 191 187 243 46 190 103 246 45 67 156 246 26 67 47 231 26 67 0 192 121 196 0 192 121 196 85 254 151 193

让我们分解一下:

68,65,84,65,60 = D,A,T,A,‘’ :这些是 CHAR。我们不关心的第 5 个字节,所以当 将任何数据句子发送到 X-Plane,应在此处放置一个 0(零)。

18,0,0,0 = 18 :这是对应于X平面中特定数据集的索引号。在此示例字符串中, 我们正在查看数据集,“18:俯仰,滚动,标题”。在这 4 个字节中,我们唯一需要的字节是第一个字节。其他 3 个将始终为零。第一个字节不需要任何计算,用作整数。

171,103,…,151,193:这 32 个字节构成了需要计算的 8 个单精度浮点数。

向X-Plane发送数据句子的格式与从X-Plane发送的格式完全相同

发送句子时,请确保序言的第 5 个字节为零 (0)

并非所有数据集都使用所有 8 个浮点数。它们要么只是零,要么是“0,192,121,196”,即 -999。

对于数据集中您不希望更改或希望将控制权“交还”给X-Plane的任何项目, 发送值 -999 或 0,192,121,196。 通过上述描述和设置,我们下面可以通过LabVIEW来接收UDP数据。

程序很简单,UDP连接,UDP读取,UDP关闭。 UDP连结,端口为默认的49001,然后收到的数据,前5个是DATA,丢掉。截取后面的数据。

0b0fa6e4-1361-11ee-962d-dac502259ad0.png

后面数据,每4个字节为一个数据。虽然有一个数据是序号,但是也是4个字节。

所以,我们强制转换成单精度,得到我们要的数据。

通过对比实际座舱右上角显示的数据,我们通过索引,可以得到想要的数据。

我们会发现有一个数据特别大,那是因为不应该用单精度转化,是参数的ID号,可以通过条件结构来筛选需要的信息,不过参数固定的话对我们来说可以不用管。

0b41654e-1361-11ee-962d-dac502259ad0.png

通过LabVIEW编写的地面站软件显示得到如下的效果(动图)。

从软件界面可以清晰看到Xplane飞机的俯仰角、横滚角、经纬度、高度,飞机电子地图显示等。

0b8747b2-1361-11ee-962d-dac502259ad0.gif

如果需要使用LabVIEW控制Xplane飞行,则需要使用UDP发送。发送时候,格式需要查看xplane的说明。

后面,大家可以自由使用LabVIEW获取飞机信息啦。





审核编辑:刘清

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

    关注

    1970

    文章

    3654

    浏览量

    323330
  • UDP通信
    +关注

    关注

    0

    文章

    21

    浏览量

    1901

原文标题:【LabVIEW的UDP通信实例】LabVIEW与Xplane飞行界面数据仿真交互

文章出处:【微信号:小草手把手LabVIEW,微信公众号:小草手把手LabVIEW】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW界面求解答

    哪位大神会用LabVIEW做一个导弹六自由度弹道仿真的人机交互界面啊,可以跟simulink进行通讯?求大神们帮帮忙
    发表于 11-04 10:20

    怎么用LabVIEW定义一个导弹的六自由度弹道仿真界面

    怎么用LabVIEW自定义一个导弹(飞行器)的六自由度弹道仿真界面,使其能够和simulink进行联合仿真,并且能够在
    发表于 12-20 21:40

    LabVIEW数据采集系统交互界面怎么做?

    LabVIEW数据采集系统交互界面怎么做,比如在前面板点击“采集数据”就开始运行数据采集模块
    发表于 04-20 11:29

    labview2012和Multisim12做交互仿真

    有人会labview2012和Multisim12做交互仿真吗? 我已经装了控制和仿真模块了!但是在函数没找到Mul***,为什么?求牛人指引
    发表于 08-11 17:54

    LabVIEW相关问题 MATLAB与LabVIEW数据交互

    请教各位一个问题 我在MATLAB中得到了电压波形 也转化为数据保存到了工作空间。 现在想把数据交互LabVIEW中, 以便后边在LabVIEW
    发表于 04-03 09:38

    基于MATLAB_Simulink和LabVIEW的发动机仿真讲解

    一篇关于simulink和Labview交互仿真应用的实例,供大家参考
    发表于 12-15 11:32 15次下载

    LabVIEW人机界面

    LabVIEW官方例程,同步辐射演示界面程序。
    发表于 05-06 10:25 0次下载

    LabVIEW 界面设计秘诀

    LabVIEW 界面设计秘诀对想做漂亮LV界面的童鞋来说是有用的。
    发表于 05-17 16:41 114次下载

    如何才能美化Labview界面

    本文档的主要内容详细介绍的是如何才能美化Labview界面
    发表于 04-26 08:00 12次下载
    如何才能美化<b class='flag-5'>Labview</b><b class='flag-5'>界面</b>

    基于LabVIEW数据仿真程序免费下载

    本文档的主要内容详细介绍的是基于LabVIEW数据仿真程序免费下载。
    发表于 06-11 08:00 7次下载
    基于<b class='flag-5'>LabVIEW</b>的<b class='flag-5'>数据</b><b class='flag-5'>仿真</b>程序免费下载

    LabVIEW界面设计的秘诀

    LabVIEW中的一些技术和功能,可让您创建更好的用户界面无需做太多额外的工作。
    发表于 04-25 15:44 74次下载

    教你如何美化Labview界面教程下载

    教你如何美化Labview界面教程下载
    发表于 09-12 09:40 75次下载

    教你如何美化Labview界面.pdf

    教你如何美化Labview界面.pdf
    发表于 10-28 15:16 41次下载

    labview界面中英文语言切换学习教程

    labview界面中英文切换,labview界面语言切换学习
    发表于 10-26 15:23 17次下载

    labview上位机界面设计

    LabVIEW是一种功能强大的计算机化系统设计和仿真软件,被广泛应用于科学研究、工业控制、仪器仪表、数据采集与处理等领域。作为一款图形化编程工具,LabVIEW具备直观友好的用户
    的头像 发表于 12-28 11:16 7657次阅读