李万军,王宏军,王航宇,谭婕娟
(西安航空职业技术学院 电 子工程系,陕西 西 安710089)
为了满足基于教学工作过程需要,凸现航空特色,创设集“教、学、做”一体化的教学情境环境,开发了运5简易飞行模拟器设备,该项目以真实的运5飞机为载体,以LabWindows/CVI[1-6]为开发环境,主要面向学生演示飞机的飞行的姿态(纵向、升降、倾向、俯仰、横滚和航向)以及飞行过程中各种仪器仪表的变化,使学生对飞机的飞行原理以及驾驶技术具有一定了解,使其在模拟器上完成简单的飞行操作。
由于该模拟器仅用于教学,参观演示,仅涉及了飞机飞行过程一些飞机飞行过程中的必须设备和必须功能,因此,对模拟器简易化处理后,它主要包括仪表控制系统、操纵负荷系统和视景环境模拟系统,该飞行器控制系统[7]框图如图1所示。
图1 飞行模拟器控制系统框图
操纵模拟控制系统又称操纵负荷系统,是整个项目的核心,主要为飞行员提供逼真的座舱操纵感觉。座舱操纵感觉是飞行员移动操纵感觉时的负荷感觉,它受到操纵面偏转的影响,并由此产生操纵输入引起飞机的响应。操纵负荷系统分为操纵负荷装置和飞机操纵系统模型两部分。其中,操纵负荷装置用于产生实际的模拟器座舱操纵力;飞行操纵系统模型用于仿真给定条件下特定飞机操纵系统的各种力的形成。通过这两部分的集成,仿真实现所需的座舱操纵力,从而产生操纵力的感觉,这种感觉与飞行员在真实飞机中的体验感觉相似。
运5模拟器的操纵负荷系统采用电动系统,该系统包括两个主要的子系统:操纵负荷计算机子系统和操纵负荷装置子系统。前者用于计算飞机飞行操纵系统以及作动器控制回路的数学模型,控制器的输出提供驱动作动器通道的控制信号;而后者用于将控制信号转换为电动作动器的运动,驱动座舱操纵装置。
运5模拟器仪表控制系统是运5模拟器的重要组成部分。该系统主要实现运5飞机在模拟飞行状态时,各个仪表在操纵系统作用下的指示,让操作者有身临其境的感觉。运5简易模拟器采用运5飞机上的真实仪表,座舱内基本保持运5飞机结构不变。整个仪表控制系统的驱动信号由模拟信号控制系统和气压信号控制系统构成,它结合视景及音响实时显示飞机的飞行姿态以及所处的高度等。
3D环幕视景系统主要由两部分组成:一是舵通道图形处理系统,通过该系统处理高分辨率的视频文件或图片,在图形处理系统内部实现源文件的多通道分割,舵通道图像重叠,融合带的亮度调节、像素级的边缘集合校正、羽化处理。最后实现多通道无缝完整图像输出;二是3D多通道输出系统,接收到经图形处理系统处理过的源文件后,经过本身处理器件的2D、3D效果的多通道视频或图片。
整个系统从性能与方便性着手,在保证了完美融合效果的基础上简化了系统的控制过程,使整个系统更实用、更人性化。
整个模拟器以工控机为核心,运行信号均源于操纵负荷系统,操纵负荷系统分为操纵负荷装置和飞机操纵系统,如图2所示。其中操纵负荷装置可以产生实际的模拟器座舱操纵力,使升降舵、副翼和方向舵发生相对的运动,通过传感器对位移,角度进行测量,工控机对所收到的信号进行分析处理,通过以太网传给视景仿真计算机,使视景显示器显示相应的视景画面;工控机还将分析处理过的信号通过适配箱送往座舱仪表,驱动仪表显示相应的数值。
图2 飞行模拟器控制系统硬件结构图
LabWindows/CVI是一个基于ANSI C的交互式可视化软件开发环境,是美国NI公司推出的面向仪器与测控过程的C/C++交互式开发平台。它将功能强大、应用广泛的C语言与测控专业工具有机地结合起来,利用其集成化开发环境、交互式编程方法、丰富的函数面板、强大的接口功能、丰富的库函数以及功能齐全的软件工具包,大大增强了C语言的功能。它将源代码编辑、强有力的仪器库、32位ANSI C编译、链接、调试以及标准ANSI C库集成在一个交互式开发环境中,极大地简化了图形用户接口的设计,同时为使用者提供了灵活的、内置式数据采集分析和显示功能。具有多种与硬件通信的方式,例如RS232,VXI等。同时,也可以建立TCP/IP通信机制。相对于VC、VB等其他开发工具,LabWindows/CVI具有更强的硬件控制和数据分析处理能力,特别适用于各种测试、控制、故障分析及信息处理软件的开发,尤其是大型复杂的测控软件,可获得优良的测控性能。在LabWindows/CVI中,还加入了数据库和网络开发的软件包,使其能够满足超大容量数据的存储和大型分布式远程网络测控系统的开发。
鉴于以上LabWindows/CVI的优点,考虑到整个模拟器运行的信号都来源于操纵负荷系统,这便构成了以操纵负荷系统为主的测控系统。故本项目以LabWindows/CVI虚拟仪器编程语言作为软件开发平台。
2.2.1 软件结构模块设计
软件采用模块化、结构化的设计思想[5],提高了编程效率,增强了软件的可维护性和可扩展性。根据需要,系统软件模块设计了数据采集、执行控制与辅助三大模块,具体有以下9个部分。其整体结构如图3所示。
图3 基于CVI的模拟飞行器软件整体结构图
1)数据采集模块负责各种标准信号的采集,按通道传送给显示、存储模块,并对输入的波形信号进行同步,其中还包括硬件的初始化和采集参数的设置。
2)数据存储模块按照规定的格式将采集到的数据存入数据库。
3)数据显示模块根据不同的需要实时显示模拟器航姿、仰角等参数以及波形、轨迹和各种谱图。
4)数据分析模块将采集回来的数据进行分析,和预设的数据相比较,进而算出调节量。采用的数据分析方法有:时域分析、频域分析、相关分析、回归分析、数理统计、趋势分析和高级分析等。
5)仪表驱动模块将控制数据发送至通道,产生各种调节仪器的控制命令。
6)文件管理模块提供数据输出、报表打印以及历史查询。
7)数据库管理模块实现对数据库中各类数据进行有效的管理,同时存放检测数据和结论,根据检测内容做出记录表单。
8)报警模块系统出现故障时报警,显示故障类型并启动保护措施。
9)TCP通信模块完成3D视景系统之间的通信。
运5操纵负荷系统仿真系统采用该软件进行设计,其流程如图4所示。
图4 运5飞行模拟机软件开发流程
主程序完成初始化后,调用权限操作、采集、视景通信模块、控制(仪表驱动、操作机构、俯仰控制)等模块,并随时响应串口和键盘中断。为防止干扰,采集模块采用多次采集,去掉最大和最小数据,取平均值的方法。经采集所取得的数据经由存储模块和显示模块存入数据库并显示于面板,需要的时候可以通过数据库管理模块和文件管理模块进行查询和打印。另外,根据采集的数据信息便可通过仪表驱动模块完成操纵机构、俯仰控制等功能。
2.2.2 软件编程中的关键模块
1)俯仰控制模块函数int ComWrt(int COMPort,char buffer[],int count)通过串口COMPort向变频器发送控制命令,命令数据存储在存储器buffer[]中,数据长度为count字节。控制变频器的运行、停止、正/反转。
函数void CRC_WrtFre(int FRECOM,unsigned int DValue,unsigned FreAdr,int Length_CRC)设定变频器的工作频率。通过串口FRECOM向变频器发送工作频率值Dvalue。调用:
CRC_WrtFre(RS485_COM,speed,Motor_Num,6);//设定变频器的工作频率
2)操纵机构控制模块函数double sensor_com(int ID);功能说明:向传感器发送读取数据命令,读取和存储传感器输出的原始数据,并计算出传感器的位移量。计算方法为:(Rdata[3]-ASCII_0)×100+(Rdata[4]-ASCII_0)×10+(Rdata[5]-ASCII_0)+(Rdata[6]-ASCII_0)×0.1。
3)仪表驱动控制模块函数void da_send(int com,int kahao,int channel,double da_sendata)用来发送电压表所需的电压值;函数double AD24(int COM,int CardID,int way,double*Val)用来采集电压,对于需要采集的电压进行采集并将其显示在面板上;函数void Relay(int comport,int cardID,int chanelNum,char ctrldata[17])用来控制继电器的通断状态;函数void YB_High(double sjd_A)根据升降舵的变化来控制高度表和升降速度表的指示,其中YB_High为函数名,sjd_A为升降舵值;函数void YB_Airspeed(double ymg_V)根据油门杆来控制变频器的频率;函数void YB_Qhq(double Value)和void YB_Pq(double Value)分别是汽化器温度表和排气温度表的驱动函数,驱动变量为副翼;函数void YB_Wxdhigh(double Value)用来驱动无线电高度表,其中YB_Wxdhigh是函数名,Value为油门杆位置;函数void YB_Sy(double Value)三用表的驱动,其中YB_Sy为函数名,Value为油门杆位置;函数void YB_Dq(double Value)驱动大气温度表,其中YB_Dq为函数名,Value为油门杆位置。
4)视景音响控制模块函数void calculate()根据3个舵面和油门杆的数据计算视点位置的x坐标、y坐标、z坐标、俯仰角、滚转角、偏航角;函数void(*InitNet)(int flg),函数功能:初始化网络。初始化包括IP地址,端口号等信息;函数void(*SendFlightData)(int flg)向视景计算机传送数据。
函数void(*CloseNet)(int flg)用于关闭网络;函数void(*ChangeData)(float viewx,float viewy,float viewz,float thet,float gam,float psi)用于交换数据。将控制系统软件生成的数据FlyData传送到视景软件,实现数据的实时更新交换,这是实时通信的基础所在。
该系统以LabWindows/CVI虚拟仪器编程语言作为软件开发平台,以性能稳定、数据处理能力强大的工控机为硬件系统的核心,数据库技术和模块化相结合,大大缩短了系统开发周期,同时使得系统具有良好的可视性、交互性和扩展性。它能够完成飞行模拟器各个参数的采集、控制,并通过计算机的数据采集、参数控制、实时曲线、事故报警等画面,使操作人员能够了解机载设备的运行情况,及时发现和处理问题,测试功能齐全,防差错能力强,工作运行稳定可靠,用户界面友好,为飞行器装备的技术保障提供强大支持。
[1]张毅刚,乔立岩.虚拟仪器软件开发环境LabWindows/CVI6.0编程指南[M].机械工业出版社,2002.
[2]刘璟.高级语言C++程序设计[M].北京:高等教育出版社,2000.
[3]张易知,肖啸,张喜斌,等.虚拟仪器的设计与实现[M].西安:西安电子科技大学出社,2002.
[4]刘君华.虚拟仪器编程语言LabWindows/CVI教程[M].北京:电子工业出版社,2001.
[5]NI上海分公司.NI宣布推出最新版LabWindows/CVI7.0[J].国外电子测量技术,2003,22(5):48-49.
[6]祖先锋,潘孟春,罗飞路.基于LabWindows/CVI的导弹检测虚拟仪器系统[J].仪表技术,2006,35(3):6-8.
[7]文传源.现代飞行控制系统[M].北京:北京航空航天大学出版社,1992.