田兆锋,闫楚良
(北京飞机强度研究所,北京100083)
飞机载荷谱实测是将飞机在使用过程中的状态参数、载荷参数等进行信息采集和记录,为飞机全机试验、结构可靠性设计提供试验数据与科学依据[1-2].飞机载荷谱实测数据类型复杂,对于不同的机型,采集参数不同,数据结构也不相同,使得飞机载荷谱数据资源比较难以组织和管理[3-6].随着测试需求的不断提高和测试设备的迅速发展,在飞机载荷谱实测试验中,飞行架次不断增长,实测数据量急剧增加,以某预警机245个飞行架次为例,原始采集数据和数据统计处理中的过程数据达到了6 TB的级别,完全可以划归为大数据,这对于数据有效性验证、机动动作判别和后期数据统计分析带来了极大的困难,并且技术人员会花费大量时间.
视景仿真系统是数据可视化技术的进一步发展,数据可视化是运用计算机图形学、图像处理技术和虚拟现实将数据转化为图形或者场景并进行交互处理的理论、方法和技术[7].视景仿真技术是综合了数据可视化、网络通讯和数据传输、模型仿真等多项高新技术发展而来的,在此基础上形成的视景仿真系统为航空工业、军事模拟等领域提供一种低成本、高安全性的数据分析和验证方式[8-10].通过视景仿真系统为使用者建立基于数据驱动的虚拟环境,从而使各种设计方案或者试验数据得到虚拟实现和验证,并可以反复修改,为设计者提供决策支持,可大幅度地降低设计成本和工作量,这一技术优势无疑会使视景仿真技术在军事领域得到更为广泛的应用.
目前,国外对视景仿真的研究主要集中在以下两个方面:①构建通用的虚拟视景仿真应用开发平台,能让非专业人士开发出高水平的视景仿真应用;②重视在视景仿真中的技术细节部分,如场景管理、实体物理建模等.国内的虚拟视景仿真领域面临的主要问题是针对特定的视景仿真要独立编写程序来实现,未能形成通用的平台来适应不同场景的虚拟视景仿真,对开发人员的专业素质要求比较高,项目开发周期长[11].
在飞机载荷谱实测飞行试验中,通常需要进行几百架次的飞行,同步采集大量的实测数据,以往判断飞行数据是否有效、飞机瞬时受载状态和任务段划分主要通过观察关键参数的飞行曲线,其直观性不足并且容易出现判断错误[12].
本文提出了基于数据双缓冲和绘图双缓冲的方法,通过构建的飞行实测数据视景仿真系统连接实测数据库和模型数据库的方式,实现了TB级别的实测数据可视化分析与有效性验证,为准确判读数据有效性和任务段识别提供了直观的决策依据,并且该系统可以自动匹配不同机型的数据和模型,具有良好的兼容性和适应性.
该视景仿真系统根据飞机载荷谱实测试验特殊性和视景系统本身特点,提出了具体的要求,本文阐述的视景系统的设计和关键技术主要解决以下问题:①如何统一不同测试机型的实测数据结构:不同测试机型因测试要求不同形成的实测数据结构不同;②如何利用数据双缓冲将实测数据库中大量的实测数据作为仿真驱动数据并兼顾系统效率;③如何将复杂的飞机模型解析并自动匹配实测数据;④如何利用绘图双缓冲解决视景仿真系统实时图像闪烁问题.
如图1所示,该系统结构主要由数据源、视景仿真数据库和视景生成子系统组成.数据源主要包括两部分:一部分是由飞机载荷谱实测改装过程中加装的传感器或者机载计算机总线信号,实时按照一定的规范传送到计算机而形成的实时数据流;另一部分是完成一定飞行架次后由数据采集设备提取的实测数据,经校验有效后发布到载荷谱实测数据库中.视景仿真数据库由实测数据库、地形地貌数据库和飞行器模型数据库构成,其中飞行器模型数据和实测数据库相关联,可以自动匹配飞行器模型与该机型的实测数据.视景生成子系统利用数据源驱动飞行器模型,经过数据双缓冲和绘图双缓冲优化生成实测数据视景实时传送给用户端.
图1 飞机载荷谱实测数据视景仿真系统结构Fig.1 Structure of visual simulation system of aircrafts’load spectrum measured data
飞机载荷谱实测数据的主要对象是通过机载数据记录设备所记录下来的各种实测参数的脉冲编码调制(PCM,Pulse Code Modulation)编码数据流或者PCAP(Packet Capture)格式网络数据包,由于不同机型测试的参数数量、类型都不相同,因此,其记录的数据格式和数据结构各不相同.同时根据测试目的的不同,各种不同的参数使用不同的采样频率来进行记录.如:飞机飞行参数等数据,采样率32 Hz;机翼载荷变信号,采样率64 Hz;飞机起落架载荷数据,256 Hz;振动信号,采样率6144 Hz等,给同步记录和后期处理数百甚至上千物理通道的飞行实测数据带来极大困难.通常处理不同数据结构的实测数据文件有两种方式:一种方式是针对不同的测试机型开发不同版本的数据处理软件,此种方式开发的软件无通用性,每个不同的机型都需要大量的软件开发重构工作,但是不用考虑软件兼容性;另一种方式是针对不同的机型编写适用的数据接口,但会大大增加软件的复杂程度,代码调试和维护困难,而且新增机型测试项目仍然需要加入新的接口程序.飞机载荷谱实测过程中,测试方案和参数会不断变化和调整,无论采取上述任何一种方式,都不能有效解决不同测试项目的数据结构不统一的问题.
本文为克服上述困难提出了逻辑数据通道的概念,建立了不同数据结构的实测数据统一模型.逻辑数据通道将每个实测参数定义为一个数据通道,所有的实测参数是同步采集的.以PCM数据流为例,采集的实测数据经过模拟信号离散化转换为数字信号(如图2所示),数据采集系统以PCM数据帧的形式,串行化发送到接收设备或者保存到记录设备.针对不同采样率的特性,经过数字化的PCM数据帧按照以下存储策略行程物理通道文件:①以二进制格式保存数据.②将PCM数据帧解码,按采样率将参数进行分组,将相同采样率的参数存储到同一个物理文件,如图3所示,按照n种采样率,形成n个数据文件.如果采样率为nHz,那么每秒钟的数据由n帧组成,每一帧由二进制形式存放的m个参数数值构成.③对每个物理文件,都具有成为具有简单行格式的规则化的数据文件,有利于高效率的寻址和随机读写.④不同文件之间,存在确定的帧时间同步关系.
图2 PCM数据帧量化过程Fig.2 Digitization process of PCM data frame
图3 数据文件构成Fig.3 Data file structure
根据以上存储策略,每个飞行起落的实测数据通常由多个文件组成,文件扩展名以采样率为标识,如A.32,A.64等形式,不同的文件可以有不同的采样频率,但应满足整数倍数关系.通过对物理文件的分析和抽象,可以将物理文件转化成为单一的逻辑数据文件(如图4所示).通过逻辑数据通道完全屏蔽了物理数据通道的差异,对于用户而言,飞行实测数据完全由不同采样率组的数据文件组成.
图4 物理通道转为逻辑数据通道Fig.4 Conversion of physical channel to logical data channel
在数据层中,逻辑数据通道的建立完全屏蔽了不同数据结构的物理上的差异,其实现方式依赖于载荷谱数据库系统的开发环境,视景仿真系统使用Visual C++的开发平台,逻辑数据通道可由数据结构体定义,方式如下:
原始飞行数据由飞行实测数据服务器存储,由于原始数据容量均为GB级别,考虑到视景仿真系统执行效率问题,基于载荷谱实测数据库采用了数据双缓冲技术访问实测数据.数据双缓冲的实现原理如下:
1)客户端使用自定的数据传输协议访问载荷谱数据库获得请求的机型数据.自定义数据传输协议格式为App:///服务器地址+目录+数据文件,客户端会自动监视此格式链接,一旦用户请求此链接,客户端软件根据自定义协议链接格式进行解析得到真实的数据文件地址,取得数据文件进行处理.
2)为保证视景仿真系统的执行效率,视景仿真系统客户端运行时,在内存开辟两个缓冲区,缓冲区A用于存储从载荷谱数据库取得实测数据,缓冲区B用于存储校验后的缓冲区A的数据,如果数据出现无码,则使用前一时刻的数据进行视景仿真,以减少由于GPS信号丢失等原因造成的数据误码现象.
飞机模型的运动是基于该机型飞行实测数据驱动的.飞机姿态含6自由度参数,根据飞行实测数据的航姿信息,在飞行动力学理论的基础上模拟飞行航迹[13].为形成载荷-时间历程的动态画面,需在视景仿真系统窗口不断刷新和绘制视图.在未经任何优化的情况下,视图会因为背景清除和绘制过程延迟而不断闪烁.
双缓冲的绘图机制指的是在绘图时除了在屏幕上有图形进行显示外,在内存中也有图形在绘制[14-17].在屏幕上实现绘制图形以前,OpenGL先分配两个缓存区,在显示前台缓存中的图像同时,后台缓存绘制第2幅图像.当后台绘制完成后,后台缓存中的图像就显示出来,此时原来的前台缓存开始绘制第3幅图像,通过不停地循环应用双缓存,每一帧三维曲面只在绘制完成之后才显示出来,所以观察者可以看到每一帧绘制完成的三维场景,而不是场景的绘制过程,使得画面看起来是连续的.
视景可视化系统主界面是飞行起落实测数据可视化视图,用户可以按照需要调节数据回放速度,支持最大320倍速的数据实时回放并可以随时调节播放速率.系统采用多窗口视图方式开发,不同可视化窗口之间通过消息驱动,以获取用户指令和数据交换.飞行历程曲线视图将发送自定义消息WM_FLIGHTSIMBARUPDATE给飞行模拟窗口,将航姿数据存入数组数据缓冲区,并将数据缓冲区的首地址作为用户自定义窗口消息的参数发送给飞行可视化窗口.
视景可视化系统在数据初始化后后台产生定时器,以30 Hz的频率向飞行视景可视化窗口发出更新数据的系统消息,以驱动可视化视图的进行数据更新.通过系统消息驱动方式,简化数据逻辑,不同视图之间通过系统消息通信,异步地进行飞行模拟窗口更新,增强了各模块之间的独立性,避免了飞机姿态数据变化时强制重绘可能导致的系统响应停顿的问题.
在飞机实测数据载荷谱数据库基础上,视景仿真系统客户端采用ChtmlView模式内嵌载荷谱数据库访问控件,当运行视景仿真系统时,客户端软件自动访问飞机实测数据载荷谱数据库和飞机模型数据库,并读取客户端软件配置文件中[FlightSimModel]节点,该节点以 FlightSimModel=Key1.MS3D;Key2.MS3D;…;KeyN.MS3D 的格式定义了使用到的机型模型,其中Key1~KeyN为识别飞机机型的特征字,在某机型完成一个飞行架次,实测数据从机载数据采集器存储介质转换到计算机时,该特征字已经写入对应的飞行实测数据,视景仿真系统通过该特征字自动匹配机型实测数据.
当视景仿真系统通过访问实测数据载荷谱数据库和模型数据库取得指定飞行架次的实测数据后,通过解析实测数据头特征字获得需要的机型模型,用户通过启动飞行模拟窗口进入飞行历程的可视化仿真,此时实测数据自动播放并实时驱动飞行模拟窗口更新,直至实测数据播放至结尾,从而实现整个飞行历程的可视化再现,在此过程中,用户可以通过鼠标滚轮调节数据播放速度和点击数据曲线任意位置查看飞机飞行状态,以节省数据播放时间.
以某型号飞机20110716A飞行架次数据为例,实测数据量10.6GB,在视景仿真系统配置文件中定义使用的飞机模型其格式如下:FlightSimModel=[Key].MS3D,其中[Key]为识别飞行实测数据的特征字,在向服务器发送的数据请求信息中包含了该关键字,服务器接受请求后,如果在该特征字描述的机型实测数据中发现了对应的飞行架次,便 以 APP:///服 务 器 地 址//数 据 目 录//20110716A格式返回对应的该机型的实测数据文件,视景仿真系统首先生成实测数据轮廓,并从服务器端提取飞机航姿数据曲线,如图5所示.通过视景仿真系统数据播放功能,实时解析实测数据,并以消息方式驱动实时更新数据,以获得整个飞行实测历程的可视化过程.图6是根据对应航姿数据对整个飞行实测数据的可视化过程截图.
图5 飞行历程曲线视图Fig.5 Curve view of flight course
图6 飞行视景可视化截图Fig.6 Visualization screenshot of flight visual
本文利用数据双缓冲和绘图双缓冲机制,建立了飞行实测数据视景仿真系统.系统利用逻辑数据通道的概念在服务器端以载荷谱数据库为基础,完全屏蔽了不同测试机型数据结构的差异,实现了异构数据源的统一,视景仿真系统客户端内嵌浏览器加载飞行实测数据,通过绘图双缓冲机制创建了飞行实测数据可视化环境,自动匹配机型数据,完整地再现整个飞行历程,经对实测数据进行仿真,结果表明:
1)该飞行实测数据视景仿真系统具有良好数据解析能力,目前完全满足单个起落容量小于20 GB飞行历程可视化性能需求,能够批处理所有飞行起落数据.
2)通过某歼击机和某型预警机飞行实测历程可视化仿真和校验,可作为飞机飞行历程机动动作识别的可视化工具,提高了技术人员采用关键参数判别机动动作的准确性和效率.
3)在飞行实测大纲确定的前提下,通过飞行历程可视化仿真系统可以检验飞行数据是否满足大纲规定的技术要求,为数据有效性验证和数据后期处理提供可视化平台.
References)
[1] 闫楚良.飞机载荷谱实测技术与编制原理[M].北京:航空工业出版社,2010:5-6.Yan C L.Aircraft load spectrum measurement technique and compilation principle[M].Beijing:Aviation Industry Press,2010:5-6(in Chinese).
[2] 闫楚良,卓宁生,高镇同.雨流法实时计数模型[J].北京航空航天大学学报,1998,24(5):623-624.Yan C L,Zhuo N S,Gao Z T.Model of rain-flow real-time counting method[J].Journal of Beijing University of Aeronautics and Astronautics,1998,24(5):623-624(in Chinese).
[3] Yan C L,Liu K G.Fatigue scatter factor of whole life and reliability of aircraft structure service life[J].Advanced Materials Research,2008,44-46:739-744.
[4] 闫楚良,刘克格.飞机结构经济寿命设计与可靠性评定[M].北京:航空工业出版社,2010:248-249.Yan C L,Liu K G.Aircraft structure design and reliability evaluation of economic life[M].Beijing:Aviation Industry Press,2010:248-249(in Chinese).
[5] 阎楚良,高镇同.飞机高置信度中值随机疲劳载荷谱的编制原理[J].航空学报,2000,21(2):118-123.Yan C L,Gao Z T.Compilation theory of median stochastic fatigue load-spectrum with high confidence level for airplane[J].Acta Aeronautica et Astronautica Sinica,2000,21(2):118-123(in Chinese).
[6] 刘克格,闫楚良.飞机起落架载荷谱实测与编制方法[J].航空学报,2011,32(5):841-848.Liu K G,Yan C L.Load measurement and compilation of landing gear of airplane[J].Acta Aeronautica et Astronautica Sinica,2011,32(5):841-848(in Chinese).
[7] 周海燕,郭建忠,王家耀.知识发现与数据可视化技术浅析[J].信息工程大学学报,2002,3(4):78-80.Zhou H Y,Guo J Z,Wang J Y.Tentative study of knowledge discovery and data visualization techologies[J].Journal of Information Engineering University,2002,3(4):78-80(in Chinese).
[8] 钟啸,高颖,费益,等.基于VR的虚拟视景系统关键技术研究[J].计算机仿真,2008,25(11):233-237.Zhong X,Gao Y,Fei Y,et al.Research on virtual scene system based on openGVS[J].Computer Simulation,2008,25(11):233-237(in Chinese).
[9] 李春香.飞行数据可视化技术研究[J].中国安全科学学报,2009,19(1):166-171.Li C X.Research on the visualization technology of flight data[J].China Safety Science Journal,2009,19(1):166-171(in Chinese).
[10] 李德信,罗刚,应锦春.面向对象数据库管理系统中内存的双缓冲管理机制[J].机械与电子,2001(3):43-45.Li D X,Luo G,Ying J C.Double buffer management mechanism of memory for OODBMS[J].Machinery & Electronics,2001(3):43-45(in Chinese).
[11] 张亮.基于双缓冲技术的VC++图形刷新技术的原理和实现[J].福建电脑,2010,26(6):110-110.Zhang L.VC++graphical refresh technology and implementation based on the principle of double buffer technique[J].Fujian Computer,2010,26(6):110-110(in Chinese).
[12] 金志宏.大量数据处理时的高效率VC++编程方法[J].计算机光盘软件与应用,2010(8):148-149.Jin Z H.Efficient method of VC++programming in large amounts of data processing[J].Computer CD Software and Applications,2010(8):148-149(in Chinese).
[13] 叶舸,田兆锋,闫楚良.基于OpenGL的飞机飞行实测数据可视化研究[J].航空学报,2011,32(6):1050-1057.Ye G,Tian Z F,Yan C L.Flight-test data visualization of aircraft’s flight course based on openGL[J].Acta Aeronautica et Astronautica Sinica,2011,32(6):1050-1057(in Chinese).
[14] 尚游,陈岩涛.OpenGL图形程序设计指南[M].北京:中国水利水电出版社,2001:7-8.Shang Y,Chen Y T.Open Graphics Library[M].Beijing:China Water& Power Press,2001:7-8(in Chinese).
[15] 刘晔,王斌,师丹,等.基于VC++的飞机模拟负载自动管理系统设计[J].软件导刊,2010,9(10):136-139.Liu Y,Wang B,Shi D,et al.Design of automatic management system of aircraft load simulator based on VC++[J].Soft Ware Guide,2010,9(10):136-139(in Chinese).
[16] 张哲源,熊庆国,李文翔.基于双缓冲技术解决游戏开发中画面更新问题[J].信息技术,2011(8):17-19.Zhang Z Y,Xiong Q G,Li W X.Based on double buffering technology to solve game development in pictures updated problem[J].Information Technology,2011(8):17-19(in Chinese).
[17] 黄华,徐幼平,邓志武.基于Flightgear模拟器的实时可视化飞行仿真系统[J].系统仿真学报,2007,19(19):4421-4423.Huang H,Xu Y P,Deng Z W.Real-time visual flight simulation system based on flightgear simulator[J].Journal of System Simulation,2007,19(19):4421-4423(in Chinese).