基于VAPS的虚拟航空仪表显示系统

(整期优先)网络出版时间:2018-12-22
/ 2

基于VAPS的虚拟航空仪表显示系统

潘晶晶

航天神舟飞行器有限公司天津300301

摘要:虚拟航空仪表系统是飞行模拟器的重要组成部分。结合虚拟仿真技术和飞行模拟器样机的技术要求,阐述了虚拟航空仪表的构建和虚拟仪表系统的实现方法。系统采用软件VAPS进行虚拟仪表的外形设计;采用VAPS和C++混合方式进行驱动显示;采用C编程语言实现虚拟航空仪表系统内部的通讯,网络通讯采用UDP/IP通讯形式。仿真结果证明,VAPS建模形象逼真,是一种简捷高效的仪表仿真软件,将其应用于航空仪表面板仿真中,能够取得良好的效果。

关键词:虚拟仪表;飞行仿真系统;VAPS;VC++6.0

虚拟航空仪表显示系统的指导思想是建立一个模块化、面向对象的仿真系统。它提供一个控制模型,通过优化设计和飞行参数的具体分析和处理,可直接验证理论模型的准确程度,达到实时仿真的效果。本文侧重于虚拟航空仪表系统软件的开发,主要用于地面训练模拟器上,实现航空仪表参数的显示、修改、读取、存储等功能。本文结合航空仪表系统的实际应用确定虚拟航空仪表系统开发的整体方案和流程,来开发飞行模拟器虚拟航空仪表显示系统。

1系统功能模块描述

虚拟航空仪表显示系统是整个飞行仿真系统的重要组成部分,实现大部分飞行仿真数据的人机交互。其中主飞行显示器(PFD)上主要显示飞机速度、高度、姿态和航向等一系列参数以及飞行管理系统(FMS)的当前状态,导航显示器(ND)是主要的导航显示仪,显示飞机的航向信息,提供飞机当前位置、目的地机场位置、飞行航线、航路点、导航台、飞机与目的地及航路点的距离和航向信息,发动机指示和机组告警系统(EICAS)显示发动机系统参数、燃油系统参数、滑油系统参数等;飞行方式控制面板(MCP)主要实现对飞机飞行的控制,发动机显示控制面板用于对EICAS上有关显示信息的控制。

2系统功能模块实现

2.1仪表界面开发

座舱仪表按显示方式可分为飞行仪表和显示器两类,其中飞行仪表主要包括:柱形仪表、盘式仪表和矩形仪表,显示器主要为LED显示。仪表画面分为运动和静止两类图形,分别进行数字建模。制作过程:利用VAPS生成HMI的图形框架,建立一个工程(project)文件,然后在其下建立图形(frame)文件以用来绘制HMI图元(GraphicalObject)。可以为每个图元定义动作,并可以将这些动作组合成为更加复杂的行为。

(1)盘式仪表建模

以马赫表圆周刻度建模为例,马赫表圆周刻度的分布是不均匀的,采用的是先疏后密的排列顺序,为了让输入数据能与变化后的刻度一一对应起来,必须进行数值变换。以下为马赫表数值变换的部分代码:

floatm=100;

m=(float)x[5];

if(m<=100)

m=(m-60)*1.7+60;

elseif(m<=150)

m=(m-100)*1.8+(60+40*1.7);

elseif(m<=200)

m=(m-150)*0.8+(60+40*1.7+60*1.8);

elseif(m<=250)

m=(m-200)*0.85+(60+40*1.7+60*1.8+40*0.8);

elseif(m<=400)

m=(m-250)*0.7+(60+40*1.7+60*1.8+40*0.8+50*0.85

elsem=400*9;

变换程序中马赫表输入系数的确定,是按照刻度分布规律地推得到的,并通过运行仿真程序来校正其系数,直到完全符合要求为止。

(2)柱式仪表的建模

利用VAPS创建一个圆柱,然后控制滑块移动。在初始化函数中调用函数GetLocation()获得滑块初始位置给结构体Lsjd_init,然后在代码添加窗口添加如下代码::

voidJSBZSQGClass::Lsjd_angle(constfloat&

value){

Vertexv;

v.x=Lsjd_init.x;

v.z=Lsjd_init.z;

v.y=(_lsjd_angle)*(68.0/25.0)+Lsjd_init.y;

v.z=Lsjd_init.z;

v.y=(_lsjd_angle)*(68.0/25.0)+Lsjd_init.y;

up_slide1->Location(v);}

生成代码,在VC++环境下进行调试。

(3)LED数码显示仪表的建模

LED显示仪表是一种通过LED发光管显示数值的仪表。下面以偏流地速显示器为例,研究LED显示仪表的建模过程。LED显示模型需要定义七条线并赋予相应的纹理,分别命名为Line1~Line7,然后通过控制线的显示来显示数字,显示程序如下:

voidNum_display(constint&value)

{_num_display=value;

switch(value)

{case0://显示0

Line1->Visibility(true);

Line7->Visibility(true);break;

case1://显示1

case9://显示9break;}}

2.2驱动显示

当一块虚拟航空表的外观和运动属性定义完成后,要对其内部逻辑驱动程序进行编译。为了实现对仪表板中仪表指针、电门、旋钮等部件的控制,要在代码生成器中完成各部分的运动和响应关系。在ObjectInspector可以实现数据和目标的联接、VAPS环境中数据的操作以及HMI应用和其他进程的数据交换。其工作界面为图形化界面,只需将数据通道与图元的目标属性相连即可完成对图元的驱动;在ATN文件中定义HMI图元的行为、逻辑。它提供一个电子表格式接口来定义HMI应用中的复杂交互。将状态、事件和反映等进行定义后,VAPS可自动生成控制逻辑的相应程序。最后,在运行界面中验证、观察HMI效果并加以改进。

2.3通讯接口的实现

当内部逻辑驱动程序编译完成后,虚拟仪表便具备了按照预定逻辑运动的能力,此时需要建立与外界信号通讯的接口程序。在仪表和仪表之间进行通讯,有时是一台机器上的不同仪表之前通讯,或者不同机器之间的仪表进行通讯。经由VAPS开发的仪表之间的通讯统称为VAPS内部通讯。通讯的方式采用UDP/IP。

内部通讯设计涉及到通道连接,通过C语言来实现。以下为以C语言为例,通过调用VAPS中通道函数实现本地机发送和接收数据。部分代码如下:if(!(vaps_dir=getenv("VAPS_DATA")))

{vaps_dir=".";}

if(!(vaps_filename=getenv("VAPS")))

{vaps_filename="vp_network";}

if(*vaps_filename=='/')

{printf("%s\n",vap_filename);}

else{printf("%s/%s\n",vaps_dir,vaps_filename);}

结语

本文研究了基于VAPS的仪表仿真技术,并将其应用到飞机座舱仪表板的虚拟仿真中,取得了良好的仿真效果,在系统开发的全过程中实现了需求与设计一致性行,实现了需求验证和设计修改的快速、高效迭代,达到了优化设计过程、方便需求分析、降低开发成本的目的,在民用飞机、运输机和特种飞机的航空电子系统设计方面具备了相当的应用前景和潜力。

参考文献

[1]王大勇.基于VAPS下虚拟航空仪表的开发.哈尔滨工业大学,2006.

[2]乔林,费广正.VisualC++高级编程技术-OpenGL篇.北京:中国铁道出版社,2005.

[3]马锐,马存宝,宋东,张加圣.民用飞机电子仪表仿真系统的设计与实现.计算机仿真,2006,23(12):62−64.