賈立山,李 昂,史曉柯,夏志朋
(1. 中國民航大學(xué)空管基地,天津 300300; 2. 中國民航大學(xué)電子信息與自動化學(xué)院,天津 300300; 3. 中國民航大學(xué)航空工程學(xué)院,天津 300300)
空管訓(xùn)練仿真系統(tǒng)是空中交通管理系統(tǒng)中必備的模塊,可用于平時空管管制員的訓(xùn)練。在平常的訓(xùn)練中,依據(jù)訓(xùn)練目的產(chǎn)生模擬的飛行計劃和預(yù)期航線,構(gòu)建仿真場景,利用飛行仿真系統(tǒng)實時模擬操控空中目標(biāo)按照預(yù)期的路徑飛行,將得到的航跡數(shù)據(jù)進行處理后發(fā)送并顯示在空管監(jiān)視器上,然后便可以利用管制員培訓(xùn)席來進行管制員訓(xùn)練。因此,要建立一個比較好的訓(xùn)練仿真系統(tǒng),必須建立一個比較方便的、人性化的飛行計劃制作界面和一個精確的飛行仿真系統(tǒng)[1]。
在空管訓(xùn)練仿真系統(tǒng)中飛行模型是仿真系統(tǒng)的基礎(chǔ),大部分的仿真數(shù)據(jù)都是由飛行模型計算出來的,而且實時仿真中飛行模型占用運算時間也是最多的[2]。全量運動方程是飛機非線性剛體運動微分方程組,是飛機運動的原始方程,能夠準(zhǔn)確的描述飛機的運動。在計算機仿真中,累計誤差的來源包括截斷誤差和舍入誤差兩個部分。截斷誤差由數(shù)值積分算法本身的截斷值產(chǎn)生,舍入誤差是在計算中由于計算機字節(jié)長度限制而產(chǎn)生的誤差。使用的數(shù)值積分算法的截斷值越小,截斷誤差就越小。仿真計算的步驟越少,舍入誤差就越小[3]。雖然使用高性能計算機和實時仿真硬件能夠提高仿真計算速度和數(shù)據(jù)傳輸速度[4],從而克服仿真算法計算時間長的缺陷,但是因其計算步驟多造成的舍入誤差大的問題卻是不能忽略的。使用變步長算法在每個積分過程中選擇最優(yōu)步長,從而使飛行模型的準(zhǔn)確性與快速性得到了一定的保證。最終通過 VC++/GL Studio 的混合編程來開發(fā)圖形化界面,使飛行模型算出的數(shù)據(jù)可視化,從而完成空管訓(xùn)練系統(tǒng)界面的搭建。
定義飛機地面坐標(biāo)系odxdydzd如下:
原點位于地面上某一點od(如飛機起飛點);
縱軸odxd——在地面水平面上選定某一方向;
豎軸odyd——與地面垂直,指向天空方向為正;
橫軸odzd——垂直于odxdydzd平面,指向右側(cè)為正;
定義飛機機體坐標(biāo)系otxtytzt如下:
原點位于飛機的質(zhì)心ot;
縱軸otxt——平行飛機機身,指向前方為正;
豎軸otyt——在飛機對稱面內(nèi)垂直于otxt軸,指向上方為正;
橫軸otzt——垂直于otxtytzt平面,指向右方為正;
航跡坐標(biāo)系和氣流坐標(biāo)系的各軸定義均參照地面系和機體系的定義。
2.1.1 機體坐標(biāo)系中的質(zhì)心動力學(xué)方程
取機體坐標(biāo)系作為上述的參考坐標(biāo)系。以VX,Vy,Vz表示飛機質(zhì)心速度在機體系下的分量,以ωX,ωy,ωz表示飛機角速度在機體系中的分量。
可得在機體坐標(biāo)系中列寫的飛機質(zhì)心運動方程
(1)
式中P為發(fā)動機推力,φp為發(fā)動機安裝角,Q為空氣阻力,Y為飛機升力,Z為飛機側(cè)力,α為迎角,β為側(cè)滑角,m為飛機質(zhì)量,θ為俯仰角,γ為滾轉(zhuǎn)角。
2.1.2 質(zhì)心的運動學(xué)方程
為了得到飛機質(zhì)心在空間的位置,需要知道它在地面坐標(biāo)系中的速度分量。當(dāng)知道了速度分量在機體坐標(biāo)系中的各分量值時,只要把速度由機體坐標(biāo)系轉(zhuǎn)換到地面坐標(biāo)系即可。所以有
(2)
(3)
式中Xd,Yd,Zd分別為飛機相對于原點的位置,V為飛機的絕對速度,ψ為偏航角。
2.1.3 轉(zhuǎn)動的動力學(xué)方程
飛機繞質(zhì)心轉(zhuǎn)動的動力學(xué)方程:
(4)
式中Ix,Iy,Iz分別為機體軸x,y,z軸轉(zhuǎn)動慣量,Ixy為機體軸x、y軸慣性積,Mx,My,Mz分別為滾轉(zhuǎn)力矩,偏航力矩,俯仰力矩。
2.1.4 轉(zhuǎn)動的運動學(xué)方程
(5)
式(1)(2)(3)(4)(5)即為飛機全量運動方程,飛機全量運動方程為非線性一階微分方程組,它無法用普通的解析法進行解算,只能應(yīng)用數(shù)值積分方法進行解算。
Runge-Kutta法是一種常用的數(shù)值積分算法。實驗已經(jīng)證明,對于解算飛機全量運動方程,采用2階Runge-Kutta法能夠得到和采用4階Runge-Kutta法相近的計算精度,但是2階方法的計算量只有4階方法的一半[5]。所以,采用2階Runge-Kutta法作為飛機全量運動方程的解算方法。Runge-Kutta法作為一種單步法,其步長選擇非常重要。步長選擇過大,會增大截斷誤差,甚至使解算結(jié)果發(fā)散。步長選擇過小,會增加計算步數(shù),從而增大舍入誤差。文獻[6]提出一種改進的Runge-Kutta變步長算法。該方法能夠快速獲取優(yōu)化的步長值,如下所示:
圖1 飛行仿真程序算法流程圖
GL Studio 是面向?qū)ο?、獨立于平臺的開發(fā)工具,軟件工具包主要包括圖形設(shè)計器和代碼生成器兩部分。模型開發(fā)過程分為圖形對象組建與行為代碼編寫兩部分。為實現(xiàn)對飛機導(dǎo)航界面的仿真與建模,其步驟可總結(jié)如下:
1) 制作紋理。選擇飛機的進近航圖,使用圖形編輯軟件(例如:Photo Shop 等),按照 GL Studio的要求對紋理進行制作處理,去除一些不需要的部分,將面板中需要動態(tài)表示的部分從中截取進行單獨處理并生成紋理文件;
2) 創(chuàng)建動作。將所有動態(tài)圖形單元重新插入到圖形設(shè)計畫布中,利用 GL Studio 工具欄,制作仿真界面所需的按鈕和數(shù)碼管等單元的構(gòu)建;
3) 實現(xiàn)動態(tài)功能。在圖形用戶接口中編寫各個對象的方法與屬性,實現(xiàn)對飛機航向的動第三,動態(tài)控制,通過數(shù)碼管對飛機飛行高度,位置,速度等相關(guān)飛行信息的實時顯示以及通過按鈕對數(shù)碼管的顯示進行控制;
4) 飛行模型與GL Studio模型的連接。將飛行模型各參數(shù)輸入到GL studio模型的Class Variables輸入?yún)^(qū)內(nèi),并將其具體算法輸入到GL Studio模型的Class Method輸入?yún)^(qū)內(nèi)。利用代碼生成器生成導(dǎo)航界面的源代碼,將源代碼嵌入到 VC++程序中,編譯生成的解決方案,并且鏈接調(diào)試[7]。
實驗所用飛機各參數(shù)如下所示:
圖2 飛機初始時航向及高度圖
圖3 飛機轉(zhuǎn)彎時航向及高度圖
圖4 飛機降落時航向及高度圖
圖5 飛機降落完成后系統(tǒng)界面圖
由圖可知通過對飛機操縱面進行控制,飛機可以按照飛行計劃規(guī)定的航跡進行航向的變化,飛機飛行的高度等相關(guān)飛行信息可以通過數(shù)碼管進行實時的顯示,從而要求培訓(xùn)管制員做出相應(yīng)的反應(yīng),這樣就可以達到訓(xùn)練的目的。除此之外,對于航管系統(tǒng)規(guī)劃的飛行航線,也可以將其轉(zhuǎn)化為飛行計劃,輸入到模擬訓(xùn)練系統(tǒng),比較直觀的觀察和監(jiān)視飛行過程,看是否存在空域和多機沖突的可能,從而也可以作為對航管系統(tǒng)航線規(guī)劃的檢驗和測試。
在整個機場終端區(qū)飛機進近仿真系統(tǒng)界面的搭建的過程中,飛機的建模是至關(guān)重要的一環(huán),模型的好壞決定著整個仿真過程的逼真度和精度。本文通過飛機的全量運動方程進行建模,并在其基礎(chǔ)上通過GL Studio對模擬界面進行搭建,之后通過控制飛機的操縱面使飛機按照進近航圖的軌跡進行運動從而驗證了模型的正確性和有效性,為進一步構(gòu)建空管訓(xùn)練系統(tǒng)打下了基礎(chǔ)。