直升机虚拟仪表DLL设计与实现

发布者:独享留白1028最新更新时间:2011-06-21 关键字:CBT  Studio  3D  MAX  DLL  属性  接口 手机看文章 扫描二维码
随时随地手机看文章
    计算机辅助训练(CBT,Computer Based Training)系统是在世界航空业广泛应用的一种培训方式。直升机CBT系统主要用于实现直升机飞行员各项模拟训练,包括通电检查、空域飞行、飞行中特情处理等。
    直升机CBT系统主要采用计算机仿真、计算机控制和图像处理显示等高新技术,实现一个融图形、图像、文字、曲线、图表、声音为一体的多媒体仿真平台。它可以为飞行员提供多方位的信息流,充分发挥飞行员多感官接收信息、应用信息的能力。
    直升机CBT系统的组成包括主控计算机系统、网络通讯系统、环境音响系统、座舱、航电及操纵系统、视景系统等。座舱、航电及操纵系统采用软硬结合的方法进行设计,座舱中仪表板和中央操纵台上的分立仪表均为触摸响应的虚拟仪表,用GL Studio进行虚拟仪表开发。座舱结构、座椅、飞行操作联动机构、驾驶杆、总距杆等均做成硬件结构,通过网络将硬件机构的控制信号传给主控计算机进行处理。
    直升机CBT系统中的分立仪表有气压高度表、空速表、陀螺地平仪、综合显示器、多功能键盘、油量控制板等,下面将详细介绍虚拟仪表DLL的设计开发过程,以及在GL Studio中进行调用的方法。

1 GL studio开发平台简介
    直升机本文基于仿真平台GL Studio,其是Disti公司为仪表仿真软件开发提供的一套系统解决方案。用户可以利用其图形交互界面以所见即所得的方式完成仪表面板的制作,通过其代码编辑器完成仪表内部的逻辑仿真。其代码生成器能够将用户的制作结果自动生成C++和Op-enGL源代码,用户既可以将代码进行单独编译,也可以嵌入到其他程序中进行编译,从而避免了大量繁琐的底层OpenGL开发过程。
    GL Studio工程可以生产两种类型的文件:一种可执行文件.exe;另一种是可独立使用的文件即DLL。在用GL Studio进行直升机CBT系统中虚拟仪表开发的时候,各分立仪表都做成单独的DLL,将虚拟仪表的输入和输出接口定义为属性。在最后的主程序开发时,只需在GLStudio的图形界面上插入各虚拟仪表DLL,根据飞行模型的需要传递参数即可。GL Studio开发虚拟仪表DLL的流程如图1所示。

a.JPG[page]

2 创建虚拟仪表DLL
2.1 制作纹理
    制作纹理有多种方法,一般采用数码相机拍摄实物照片,然后运用图形编辑软件处理。获取高质量的实物照片是制作纹理的关键,所以在拍摄直升机座舱仪表照片时需要设置好背景,调节好光线,选取合适的角度。制作纹理时,将仪表照片经过图形编辑软件处理后保存为*.png格式。
    在进行纹理制作的过程中,采用3D MAX和Photoshop制作仪表纹理非常方便。以直升机仪表中最常见的气压高度表为例,介绍仪表纹理的制作过程。
    首先,在3D MAX中,创建一个圆柱体作为盘底,再创建一个白色的小长方体作为长刻度。调整好长方体大小,将旋转轴心设为表盘中心。选择工具中的阵列选项,设置好旋转角度为36°,阵列维数为1D,数量10,按确定。同理阵列出短刻度。对立体图进行渲染,保存为*.png格式。用Photoshop打开进行编辑,添加相应的刻度数字。这种方法制作出来的表盘非常美观,而且比处理仪表照片的效率高。

a.JPG

b.JPG


2.2 设计图形界面
    设计图形界面即创建仪表模型,创建的模型分为静态模型和动态模型。以气压高度表为例,高度表盘为静态模型,仪表上的指针、旋钮、气压表盘为动态模型。
    GL Studio设计器支持的所见即所得绘制方式,使开发仪表工作变得简单、直观。在GL Studio中进行绘制图形和添加纹理。纹理添加完毕后,注意调整各元件之间的层次关系,确定图形的正确显示。仪表界面的最终效果如下,给气压高度表每个独立的部件进行合理命名,以方便行为代码的编写。[page]

    场压选择旋钮的制作方法:在设计面板“Geometry”栏中,高亮“PBS”点功能键“Converts Selected to GlsKnob”创建旋钮。右击生成的旋钮,在“Knob”选项卡中设置旋钮转动的角度及连续性。

c.JPG


2.3 定义接口
    气压高度表只有一个输入接口:气压值。最少只需要添加一个属性,Baro_hPa(),通过飞行动力学模型给该属性接口传值,单位统一为hPa。

e.JPG


2.4 编写行为代码
    气压表左下角的旋钮为场压选择旋钮。仪表右边的气压表盘会随着场压选择旋钮转动指示设定的场压值。添加变量PBS_hPa,该变量记录设定的场压值。
    (1)场压选择旋钮代码编写。
    旋钮的位置范围为0~100,用来设定场压PBS_hPa,气压修正范围为950~1 050 hPa。在设计气压高度表的时候,假设初始场压在1 013 hPa。
    >场压选择旋钮的初始化代码
    self->PositionVal(63.of);//旋钮初始位置设为63PBS_hPa=950.0+(self->PositionVal());//63.0对应场压1 013 hPa
    PBSDisc->DynamicRotate(2.4 * self->Posi-tionVal(),Z_AXIS);
    //气压刻度盘初始旋转角151.2°,即1 013 hPa气压值所在角度
    >场压选择旋钮回调函数代码
    if(ObjectEventIs(ev,“PositionVal”))
    {
    PBS hPa=950.0+(self->PositionVal());
    //旋钮位置范围0~100,对应的气压修正范围为950~1 050 hPa。
    PBSDisc->DynamicRomte(2.4 * self->Posi-tionVal(),Z_AXIS);
    //气压刻度盘通过换算在0~240°逆时针旋转,与气压表盘950~1 050 hPa场压对应
    }[page]

    (2)Baro_hPa()属性函数编写。
    Baro_hPa()为输入接口,用来接收主程序传来的外界气压大小(静压)。3 000m以下,每升高12m气压下降133.3Pa。通过静压和旋钮设定的场压,即可算出直升机所在的高度。
    >Baro_hPa()属性函数的行为代码
    _baro_hPa=value;
    float altitude=(PBS_hPa*100-_baro_hPa * 100)*12.0/133.3://通过静压和场压差算出高度
    float alt_long=(float)fmod(altitude,1 000.of);
    longNeedle->DynamicRotate(-(alt_long*(360.0/1 000)),Z_AXIS);//长指针根据高度值大小旋转,1 000 m转动360°
    float alt_short=(float)fmod(altitude,10 000.Of);
    shortNeedle->DynamicRotate(-(alt_short*(36.0/1 000)),Z_AXIS);
    //短指针根据高度值大小旋转,1 000m转动36°
2.5 生成代码、发布DLL
    选择菜单栏中code->Generate All生成代码,在Microsoft Visual Studio.NET 2003中选择编译选项为Live Component Release,编译、连接,即可生成气压高度表DLL,在Licensed LiveComponent Release文件夹下可以找到生成的Barometric Altimeter.dll。

3 DLL的加载
3.1 插入虚拟仪表DLL
    在程序中,有以下两种加载动态链接库的方式:隐式链接和显式加载。而GL Studio中对DLL的加载方式更加简便,程序员不需要了解底层的加载方式即可对DLL进行操作。
    在工具栏中点击“ j.jpg(Inserts a Component)”,选中需要加载的仪表DLL,即可将该虚拟仪表插入到GL Studio编辑器中。调整该虚拟仪表的大小,放到仪表板底板合适的位置。插入进来的虚拟仪表DLL实际上是一个类对象指针。
3.2 给虚拟仪表DLL传递参数
    插入虚拟仪表DLL并进行合适的命名后,剩下的工作就是在Calculate()对该虚拟仪表的接口进行读写操作,即传递控制参数。
    在GL Studio中,Resource()函数可以读写DLL的属性,这也是在创建虚拟仪表DLL的时候将所有输入输出接口定义为属性的原因。调用方式如下:
h.JPG
    在总仪表板程序的calculate()中给各虚拟仪表DLL传递参数,以model_作为前缀的变量是根据直升机飞行动力学模型解算出来的值:
i.JPG

3.3 调试并完善
    在项目后期联合调试和完善的过程中,如果需要对某个仪表的功能进行修改和扩充,只需要修改该虚拟仪表的程序代码,编译连接生成新的DLL。用新的DLL替换原有的DLL文件即可。

4 结束语
    当CBT系统越来越逼真,每个虚拟仪表的设计也必然会越复杂。这时采用本文所介绍的方法,将各分立仪表做成单独的DLL。采用DLL编程可以使程序层次清晰,既细化了前期开发过程中项目的分工,又使得项目后期的修改和扩展变得简单方便,极大地提高了程序的可扩充性和可维护性。

关键字:CBT  Studio  3D  MAX  DLL  属性  接口 引用地址:直升机虚拟仪表DLL设计与实现

上一篇:指针式电测仪表自动化检定系统
下一篇:用IPK5手持式激光火车轮轮缘轮廓测量仪测量磨损

推荐阅读最新更新时间:2024-03-30 22:15

标准接口的基本技术知识
  对于设计人员而言,根据应用的性能、电源、存储器以及接口要求寻找特定的嵌入式处理器是一项令人生畏的艰巨任务,因为即便是相似的系统也存在着显着的差异。尽管ARM?处理器提供十几种选择,系统设计人员却很难找到“完美的搭配”.   本文将重点介绍各种标准接口,并揭示它们对不同嵌入式芯片厂商的区别所在。了解基本接口可帮助设计人员优先考虑哪些接口应为片上。另外,虽然标准接口具有很高的使用价值,但为了提供额外的片上资源,也需要可定制化的片上接口。本文将介绍两种这样的外设块。   USB   通用串行总线 (USB) 接口最初的开发目的是用来连接个人计算机与外设。随着时间的推移,它已经成为工业与基础设施应用的常用接口。诸如键盘、鼠标以
[嵌入式]
3D打印对供应链模式的变革
当今市场环境下,制造业的竞争已不再局限于单个企业之间的竞争,而是 供应链 之间的竞争,欲在竞争中获得优势,必须实施供应链的新变革和资源整合。所谓供应链管理,就是指把供应链上各企业、部门之间的物流、资金流和信息流进行计划、协调、控制,提高供应链运作效率,降低运作成本,实现效益最大化。其目的在于更经济地将原始材料转变为零部件进行装配,并将最终产品快速、低成本地传递至消费者手中。也许您会问,这与 3D打印 有什么关系呢?   3D打印对供应链模式的变革 其实,深入了解后不难发现,物联网、大数据、机器人及人工智能等新兴技术的发展与应用,顶多就是对现有供应链的某种优化而已。而3D打印却大为不同,随着其迅猛发展及大规模采用,传统的供应链模式将
[嵌入式]
ADAS和工业应用推动 SSD接口朝PCI-e升级大势所趋
eeworld嵌入式小编午间播报: NAND Flash读写性能持续提升,已超越原本为机械硬盘设计的SATA接口所能提供的带宽。为解除效能瓶颈,固态硬盘(SSD)接口朝PCI-e升级,已经是大势所趋。然而,考虑到个别应用市场的需求,SSD控制器供货商的解决方案组合必须更加多样化。 固态硬盘的接口正在朝PCI-e世代演进,但由于各类应用对效能、价格的接受程度不同,对SSD控制器供货商而言,其解决方案的涵盖范围势必要不断扩张,才能创造出新的市场版图。 目前采用PCI-e接口的固态硬盘,大多采用四信道PCI-e接口,市场则主要集中在服务器、数据中心储存设备等对效能要求极高的应用。但对于主流消费市场而言,四通道PCI-e所提供的效能,却远
[嵌入式]
日本将实时传输手术辅助机器人的裸眼3D手术影像实验
  日本信息通信研究机构(NICT)和日本Ultra-Realistic Communications Forum(URCF)将于2012年2月15进行传输裸眼3D手术影像的实证实验,远程实时转播美国Intuitive Surgical公司“da Vinci”手术辅助机器人的3D手术影像。目的是通过此次实验来征集医疗人员的意见及要求,提高实用化技术水平。     显示在裸眼3D显示器上(示意图)   日本藤田保健卫生大学主任教授宇山一朗是日本使用da Vinci辅助手术的屈指可数的专家之一。届时将由宇山主刀实施消化器官外科手术,并将3D手术影像通过超高速互联网卫星“WINDS”向日本德岛大学医学部进行IP传输。为此将在
[医疗电子]
带有串行接口的FRAM RFID LSI
  铁电随机存储器(FRAM) RFID由于存储容量大、擦写速度快一直被用作数据载体标签。内置的串行接口可将传感器与RFID连接在一起,从而丰富了RFID应用。    概述   到目前为止,富士通半导体已经开发出了高频段(13.6MHz)和超高频段(860 MHz到960 MHz)RFID LSI产品。这些产品最重要的特点就是它们内嵌FRAM。由于擦写速度快、耐擦写次数高,它们已经作为数据载体型被动RFID LSI而被全世界广泛采用。   大存储数据载体的优势就是RFID可以记录可追溯数据,如制造数据、生产数据、物流数据、维护数据等,因此它可用于各种资产、产品和零部件的管理。由于大存储数据载体具有这些优势,人们希望进一
[嵌入式]
3D打印磁性网格“机器人”的性能介绍
当你想到机器人时,你可能没有联想到可以漂浮在水面上的弹性网状物,但这正是北卡罗来纳州立大学的研究人员所开发的。这些柔软的结构是的,并嵌入了磁性颗粒,可以拉伸和压缩以抓取和移动小物体。 为了制造这些“机器人”网格,该团队首先混合了由硅微珠、液体硅,水和重要的羰基铁颗粒制成的“墨水”。随后这些东西可以被3D打印成各种网状,然后在烤箱中固化,形成柔软、柔韧的结构。这些“机器人”可以像昆虫一样漂浮在水面上。 为了控制结构,团队可以改变磁场,上下调整强度或令其打开和关闭。例如,打开该磁场可能会导致网格朝向一端碾压,然后在再次关闭该区域时弹回到其原来的尺寸。通过改变网格的大小和形状,团队能够为各种目的创建一些不同的“机器人”
[机器人]
带你了解什么是3D IC?
面对激烈的市场竞争,终端消费电子产品在“轻、薄、短、小”的外形尺寸以及多元功能的追求不曾停歇,目前封装业研发重点在于把厚度做最大利用,3D IC技术是目前唯一能满足上述需求的关键技术,这项技术是利用 3D IC堆叠、矽穿孔、TSV等技术将 芯片 整合到效能最佳、体积最小的状态。  什么是3D IC?   将一只移动处理器 芯片 与独立的存储 芯片 结合到一起,这是一种自然发展出来的3D结构。而减少IC之间互连的长度可能会给移动系统应用的性能、功率和封装尺寸带来一种巨大的飞跃,主要动力就是3D IC。   SoC设计基础架构一直是IC产业的经典。因此,从SoC生产转向多芯片策略,成为让大多数公司望而生畏的一大挑战,因为他
[半导体设计/制造]
带你了解什么是<font color='red'>3D</font> IC?
μC/OSII任务创建和销毁的用户接口改善
引 言:   就目前而言,μC/OSII 称得上是最小的操作系统内核软件。它由Jean J. Labrosse于1992年推出第一版,立刻在嵌入式系统领域引起强烈反响,而其本人也早已成为嵌入式系统会议(美国)的顾问委员会成员。μC/OS最鲜明特点就是源码公开,便于移植和维护,而且对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。自问世以来,μC/OS的稳定性和可靠性得到了广泛认可,现已通过美国FAA认证,并被众多的研究开发者作为操作系统的样板,移植到各种的硬件平台上。 1 μC/OS任务用户接口的缺点   μC/OSII中任务的用户接口并不友善,与众多程序员熟悉的Windo
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved