战术训练飞行模拟器综合显示系统仿真架构与实现

2020-04-13 00:43沈明辉黄绍君周兴平
指挥控制与仿真 2020年2期
关键词:模拟器子系统绘制

朱 涛,沈明辉,黄绍君,范 蓉,周兴平

(空军石家庄飞行学院飞行模拟训练中心,北京 100195)

战术训练飞行模拟器是一套人在回路的实时仿真系统,重点模拟飞机的飞行控制、综合航电、武器火控、电子对抗等系统,采用开放式座舱,仪表和座舱设备均采用虚拟仪表技术,视景系统采用多块液晶屏构成拼接幕墙,操纵系统采用带调效机构的弹簧阻尼力反馈机构。系统设计突出模块化、标准化、结构化等设计原则,便于维护、使用和升级。

战术训练飞行模拟器主要由飞行仿真子系统、操纵负荷子系统、数据采集子系统、航空电子子系统、虚拟仪表子系统、综合显示子系统、视景子系统、音响通讯子系统、网络子系统等部分组成。典型的单座模拟器系统功能组成如图1所示。

战术训练飞行模拟器能够提供逼真实用的仿真环境,能够用于部队基础技战术训练,更为重要的是多台模拟器联网后可以满足成熟飞行人员对更复杂、更深层次的训练需求,这些训练内容在实装飞行中很少甚至无法实现[1]。以联网后的多台战术训练飞行模拟器为仿真终端,结合其他系统组成航空兵分队级模拟训练系统,可以针对高技术条件下空中作战的特点及难点,开展复杂电磁环境下战术对抗训练和战术研究,提升飞行人员自主态势感知、任务管理与决策、沟通协同、威胁处理等方面能力,全面培养战术意识,提高战术素养。

1 综合显示系统仿真架构分析

综合显示系统是战术模拟器的重要组成部分,通过多个多功能显示器和平显替代以往座舱中繁杂的各类仪器与仪表,作为主要的人机交互接口与方式,通过字符、图形等形式把各类复杂的飞行参数、战场态势、作战状态与任务等信息直观地展现出来,有利于飞行员快速获取相应的信息,正确做出应对策略。

图1 单座战术训练飞行模拟器的功能组成结构图

1.1 综合显示系统与外部的信息交互结构

本文以较为复杂的双座战术训练飞行模拟器为例,分析综合显示系统与外部系统之间的信息交互。仿真系统间的信息交互结构如图2所示。

图2 双座战术训练飞行模拟器综合显示系统与外部系统的信息交互图

前舱综合显示系统通过两个共享内存与外部各系统进行交互,一个共享内存与飞控、前舱的虚拟仪表等软件系统进行数据交互(主要用于获取飞行参数及周边键和各种开关信息),另一个共享内存和航空电子系统进行数据交互(主要工作模式为综合显示系统状态改变后向共享内存中写入数据,并读取航空电子系统处理后的回馈结果),另外,还通过网络与视景系统、数据链系统、后舱综合显示系统交互相应信息。

后舱综合显示系统的信息交互相对简单,通过与后舱虚拟仪表的共享内存,并通过网络与航空电子系统以及前舱综合显示系统交互相应信息。

1.2 综合显示系统的系统架构

综合显示系统主要由配置模块、显示模块、控制模块、网络通信模块等组成。其模块结构如图3所示。

图3 综合显示系统的模块结构

其中,配置模块用于加载配置文件,并保存相关信息以便于系统后续使用,显示模块使用OpenGL技术绘制具体的画面,通信模块通过计算机网络与其他软件系统进行交互,定时模块用于创建及控制用于画面显示、共享内存读取、系统时间显示等多个定时器。控制模块用于系统的运行流程和状态控制,同时,也对读写共享内存数据、收发网络数据逻辑进行控制。

综合显示系统启动时,控制模块通过调用配置模块加载配置信息;然后,控制模块调用定时模块设置定时器,通过共享内存读写数据、调用网络通信模块接收数据,用户操作多功能显示器周边键或座舱内的开关后,将修改对应的共享内存数据,系统则会及时地读取更新后的共享内存数据,来判定系统当前的状态,并调用显示模块显示相应的画面。整个系统运行控制流程如图4所示。

图4 综合显示系统的运行流程图

2 关键技术难点分析

关于飞行模拟器综合显示系统的仿真方法已经较为成熟,基于OpenGL、GL Studio、IData以及VAPS等工具及方法均有现成的实现方案[2-5],其中,使用OpenGL源码实现方式因其丰富的功能和广泛的平台支持度,是最佳选择之一,但也存在软件执行效率低、编程代码量大、开发周期长等缺点。针对上述问题,本文根据多年的工程项目实践经验,在系统的性能优化、可移植性及组件化设计等方面进行深入研究,形成了一种较为完善的解决方案。

2.1 系统性能高效控制策略

在战术训练飞行模拟器设计与实现时,根据模拟器的定位及特点,将综合显示系统、飞行主控系统、航电系统、数据采集系统、虚拟仪表系统规划为共用一台计算机。因此,上述各个系统可使用的计算机硬件资源有限,其中,综合显示系统的主要用途是显示各种人机交互画面,而画面绘制非常占用系统资源,如果采用普通的绘制方式可能会降低操作系统的性能,甚至会影响仿真计算机内其他软件系统的正常运行,因此,为了保证画面绘制的速度和效率,以及尽可能地降低对系统资源的占用,主要从以下几个方面保证系统的效能。

1)集中统一内存管理

系统在启动的时候即分配好相关主要内存,在退出的时候统一释放之前分配的内存,避免系统在运行过程中频繁地申请释放内存,尽可能地减少和其他软件系统的冲突。

2)画面快速渲染策略

采用纹理、显示列表、画面双缓冲[6]的方式进行绘制,尽可能地使用显卡硬件渲染而不是使用CPU临时绘制,保证画面切换流畅无卡顿等,同时降低系统资源的占用。

例如,进行画面切换的时候,由于系统在启动时即把所有需要显示的纹理数据加载到硬件渲染管道并构建了显示列表,在需要显示时无须重新绘制,这样就在很大程度上提高了画面渲染的速度,与此同时极大地降低了操作系统资源的占用,最后,利用双缓存技术将要绘制的界面先绘制在内存中一个虚拟的和正在显示界面同样大小的区域,界面变化时将这个内存中的图像一次性绘制到屏幕上,这样就真正实现了画面的切换。其基本流程如图5所示。

图5 显示画面绘制流程

在系统运行过程中,只对经常发生变化的数据进行重新绘制,以保证效率;系统退出时,销毁加载的纹理和生成的显示列表。

3)画面刷新与显示优化策略

通过深入分析显示画面的特点,对相关画面使用局部画面刷新而不是整个画面的刷新,降低操作系统的负荷,同时加快画面更新速度。

例如,在显示态势界面时,首先,要绘制导航基图,然后,根据当前工作状态、工作模式等进行绘制,相对来说,大部分画面都是不需要重新绘制的,即不需要每次都重新绘制然后重新显示。其他的诸如文字、图像等,也可以使用类似的方法处理。

另外,对于数字地图和对地攻击画面等较为占用系统资源且相对独立的显示内容,均采用自身独占的专用线程进行单独处理与解算。并且,能够根据系统的控制逻辑,在无须显示相关内容的时候,不进行解算与处理,释放相应的资源。

2.2 仿真架构可移植性研究

综合显示系统仿真架构可移植性设计综合采用以下方法:

1)多功能显示器数量及位置的可移植性。针对不同机型座舱中的多功能显示器数量及位置不同的情况,首先,在配置文件中定义显示窗口的数量及其位置信息,然后,根据配置文件使用OpenGL的C语言扩展库GLFW生成显示窗口,最后,利用共享内存中每个窗口的相关状态数据,显示各自的画面内容。

2)单、双座座舱多功能显示器的可移植性。针对单座座舱与双座座舱机型的差异情况,因为其系统仿真框架与流程完全都是一致的,可以通过良好的编码实现,最后,只需在配置文件中将其指定为前舱或后舱即可。

3)平显系统的可移植性。针对嵌入在视景系统中的平显子系统,由于也是使用OpenGL实现的,可以将多功能显示器中的设计成果移植到视景生成软件中,实现功能与画面的一致性,避免重复设计。

4)其他子模块的可移植性。最后针对数据链导航及态势、精确制导对地武器攻击画面的显示方法、目标威胁等级的计算方法[7]以及通用的航迹法、航线法、综合法等航线导航方法等多个方面也作了标准化、通用化处理,充分满足系统的可移植性需要。

这种架构已经在多型战术训练模拟器中应用,不同型号的综合显示系统均采用此架构进行统一设计,提高了综合显示系统的可靠性和可维护性, 在保证产品质量的情况下,大大加快了综合显示系统的研制开发进程。

2.3 基于面向对象思想的显示画面组件化设计

综合显示系统需要显示多种类型的画面,每种类型下面还可能有子画面,即需要多层次、多级别的进行显示。如果要添加其他类别的显示画面或者修改现有的显示画面,按照普通的面向过程逻辑去实现则会相当复杂。另外,还需要注意到,在综合显示系统内很多显示画面或画面中的某些部分(如数据链导航与态势画面、雷达画面、平显画面等)在许多机型中是通用的,可以将其独立出来作为组件为多个系统共用。根据上述分析的系统特点,采用基于“类-继承”面向对象方法以及组件化模式为复杂系统研究提供了一种强有力的技术手段,能够很好地满足系统设计的全过程需要[8]。下面介绍实现过程中的具体原则、方法。

对于所有需要显示的画面,都将其类化,这样就转化为类的级别关系,进而,转化为父类和子类的继承关系,便于描述和修改。

综合显示系统中画面类的基本设计原则如下:

1)所有画面类的逻辑处理和功能处理都是分开的,如控制和绘制等;

2)所有画面类都使用统一的绘制函数接口,该接口在基类中定义;当需要显示某一级的某个画面时,只需要调用该画面类的绘制函数并传入相关参数即可;

3)所有画面类都有一个全局唯一的标签,以和其他画面类进行区分;每个画面类都有一个级别定义,以区分不同画面类的层次;

4)所有画面类都存在子类或者父类,或者二者都有,子类必须实现父类所规定的虚函数,但拥有其独立的与其本身相关的函数与成员变量等规则。

基于以上原则很好地保证了画面类的可扩展性和设计更改独立性,在具体开发中,如果需要添加新的显示画面,则只需要根据需要显示的画面的级别,继承相应的父类并实现绘制函数等父类规定的必须实现的虚函数即可。对于设计更改,由于画面类的控制处理和绘制等功能处理是分开的,因此,也只需要在其对应的基类或者子类中进行修改即可,而不会影响其他的画面类的显示等功能。

采用基于组件化的设计方法可以在很大程度上提升了画面类的标准化程度及可重用性。具体做法是对于可以多系统共用的公共画面及子画面,将其独立出来,设计为基础组件。新的系统或系统内的其他模块通过标准化的接口直接使用该组件,然后,在此基础上叠加形成新的功能及画面。

3 结束语

本文通过深入研究分析综合显示系统与战术训练飞行模拟器其他系统的交互关系、系统运行流程,并对系统性能高效控制策略、系统仿真架构的可移植性、画面类的面向对象组件化设计等技术难点进行攻关,最终实现了一种较为通用的系统仿真架构,成功研制多型战术训练飞行模拟器。其中,综合显示系统高效稳定、功能完善、操作方便。以战术训练飞行模拟器为仿真终端,依托航空兵分队级模拟训练系统,顺利开展了大规模常态化战术对抗训练,取得良好效果。今后,该仿真框架也将用于更多后继研制任务中,发挥更大的作用与效益。

猜你喜欢
模拟器子系统绘制
Painting ski maps 绘制滑雪地图
驾驶模拟器转向系统的设计与研究
绘制童话
盲盒模拟器
绘制世界地图
网络空间供应链中入侵检测及防御子系统的投资机制研究
网络空间供应链中入侵检测及防御子系统的投资机制研究
中国首个自主研发的地球模拟器投入使用
团队与知识管理的关系研究
浅谈中职学校新型模块化机房建设