賈立山,李 昂,史曉柯,夏志朋
(1. 中國民航大學空管基地,天津 300300; 2. 中國民航大學電子信息與自動化學院,天津 300300; 3. 中國民航大學航空工程學院,天津 300300)
空管訓練仿真系統是空中交通管理系統中必備的模塊,可用于平時空管管制員的訓練。在平常的訓練中,依據訓練目的產生模擬的飛行計劃和預期航線,構建仿真場景,利用飛行仿真系統實時模擬操控空中目標按照預期的路徑飛行,將得到的航跡數據進行處理后發送并顯示在空管監視器上,然后便可以利用管制員培訓席來進行管制員訓練。因此,要建立一個比較好的訓練仿真系統,必須建立一個比較方便的、人性化的飛行計劃制作界面和一個精確的飛行仿真系統[1]。
在空管訓練仿真系統中飛行模型是仿真系統的基礎,大部分的仿真數據都是由飛行模型計算出來的,而且實時仿真中飛行模型占用運算時間也是最多的[2]。全量運動方程是飛機非線性剛體運動微分方程組,是飛機運動的原始方程,能夠準確的描述飛機的運動。在計算機仿真中,累計誤差的來源包括截斷誤差和舍入誤差兩個部分。截斷誤差由數值積分算法本身的截斷值產生,舍入誤差是在計算中由于計算機字節長度限制而產生的誤差。使用的數值積分算法的截斷值越小,截斷誤差就越小。仿真計算的步驟越少,舍入誤差就越小[3]。雖然使用高性能計算機和實時仿真硬件能夠提高仿真計算速度和數據傳輸速度[4],從而克服仿真算法計算時間長的缺陷,但是因其計算步驟多造成的舍入誤差大的問題卻是不能忽略的。使用變步長算法在每個積分過程中選擇最優步長,從而使飛行模型的準確性與快速性得到了一定的保證。最終通過 VC++/GL Studio 的混合編程來開發圖形化界面,使飛行模型算出的數據可視化,從而完成空管訓練系統界面的搭建。
定義飛機地面坐標系odxdydzd如下:
原點位于地面上某一點od(如飛機起飛點);
縱軸odxd——在地面水平面上選定某一方向;
豎軸odyd——與地面垂直,指向天空方向為正;
橫軸odzd——垂直于odxdydzd平面,指向右側為正;
定義飛機機體坐標系otxtytzt如下:
原點位于飛機的質心ot;
縱軸otxt——平行飛機機身,指向前方為正;
豎軸otyt——在飛機對稱面內垂直于otxt軸,指向上方為正;
橫軸otzt——垂直于otxtytzt平面,指向右方為正;
航跡坐標系和氣流坐標系的各軸定義均參照地面系和機體系的定義。
2.1.1 機體坐標系中的質心動力學方程
取機體坐標系作為上述的參考坐標系。以VX,Vy,Vz表示飛機質心速度在機體系下的分量,以ωX,ωy,ωz表示飛機角速度在機體系中的分量。
可得在機體坐標系中列寫的飛機質心運動方程

(1)
式中P為發動機推力,φp為發動機安裝角,Q為空氣阻力,Y為飛機升力,Z為飛機側力,α為迎角,β為側滑角,m為飛機質量,θ為俯仰角,γ為滾轉角。
2.1.2 質心的運動學方程
為了得到飛機質心在空間的位置,需要知道它在地面坐標系中的速度分量。當知道了速度分量在機體坐標系中的各分量值時,只要把速度由機體坐標系轉換到地面坐標系即可。所以有

(2)

(3)
式中Xd,Yd,Zd分別為飛機相對于原點的位置,V為飛機的絕對速度,ψ為偏航角。
2.1.3 轉動的動力學方程
飛機繞質心轉動的動力學方程:

(4)
式中Ix,Iy,Iz分別為機體軸x,y,z軸轉動慣量,Ixy為機體軸x、y軸慣性積,Mx,My,Mz分別為滾轉力矩,偏航力矩,俯仰力矩。
2.1.4 轉動的運動學方程


(5)
式(1)(2)(3)(4)(5)即為飛機全量運動方程,飛機全量運動方程為非線性一階微分方程組,它無法用普通的解析法進行解算,只能應用數值積分方法進行解算。
Runge-Kutta法是一種常用的數值積分算法。實驗已經證明,對于解算飛機全量運動方程,采用2階Runge-Kutta法能夠得到和采用4階Runge-Kutta法相近的計算精度,但是2階方法的計算量只有4階方法的一半[5]。所以,采用2階Runge-Kutta法作為飛機全量運動方程的解算方法。Runge-Kutta法作為一種單步法,其步長選擇非常重要。步長選擇過大,會增大截斷誤差,甚至使解算結果發散。步長選擇過小,會增加計算步數,從而增大舍入誤差。文獻[6]提出一種改進的Runge-Kutta變步長算法。該方法能夠快速獲取優化的步長值,如下所示:


圖1 飛行仿真程序算法流程圖
GL Studio 是面向對象、獨立于平臺的開發工具,軟件工具包主要包括圖形設計器和代碼生成器兩部分。模型開發過程分為圖形對象組建與行為代碼編寫兩部分。為實現對飛機導航界面的仿真與建模,其步驟可總結如下:
1) 制作紋理。選擇飛機的進近航圖,使用圖形編輯軟件(例如:Photo Shop 等),按照 GL Studio的要求對紋理進行制作處理,去除一些不需要的部分,將面板中需要動態表示的部分從中截取進行單獨處理并生成紋理文件;
2) 創建動作。將所有動態圖形單元重新插入到圖形設計畫布中,利用 GL Studio 工具欄,制作仿真界面所需的按鈕和數碼管等單元的構建;
3) 實現動態功能。在圖形用戶接口中編寫各個對象的方法與屬性,實現對飛機航向的動第三,動態控制,通過數碼管對飛機飛行高度,位置,速度等相關飛行信息的實時顯示以及通過按鈕對數碼管的顯示進行控制;
4) 飛行模型與GL Studio模型的連接。將飛行模型各參數輸入到GL studio模型的Class Variables輸入區內,并將其具體算法輸入到GL Studio模型的Class Method輸入區內。利用代碼生成器生成導航界面的源代碼,將源代碼嵌入到 VC++程序中,編譯生成的解決方案,并且鏈接調試[7]。
實驗所用飛機各參數如下所示:


圖2 飛機初始時航向及高度圖

圖3 飛機轉彎時航向及高度圖

圖4 飛機降落時航向及高度圖

圖5 飛機降落完成后系統界面圖
由圖可知通過對飛機操縱面進行控制,飛機可以按照飛行計劃規定的航跡進行航向的變化,飛機飛行的高度等相關飛行信息可以通過數碼管進行實時的顯示,從而要求培訓管制員做出相應的反應,這樣就可以達到訓練的目的。除此之外,對于航管系統規劃的飛行航線,也可以將其轉化為飛行計劃,輸入到模擬訓練系統,比較直觀的觀察和監視飛行過程,看是否存在空域和多機沖突的可能,從而也可以作為對航管系統航線規劃的檢驗和測試。
在整個機場終端區飛機進近仿真系統界面的搭建的過程中,飛機的建模是至關重要的一環,模型的好壞決定著整個仿真過程的逼真度和精度。本文通過飛機的全量運動方程進行建模,并在其基礎上通過GL Studio對模擬界面進行搭建,之后通過控制飛機的操縱面使飛機按照進近航圖的軌跡進行運動從而驗證了模型的正確性和有效性,為進一步構建空管訓練系統打下了基礎。