林坤
(西安航空職業技術學院陜西西安710089)
在計算機技術不斷發展的過程中,有效促進了仿真技術的持續完善及發展,使其被廣泛應用到航空航天等領域中,并且不斷成熟。飛行技術仿真是現代仿真技術的主要內容,也是計算機、系統仿真及航空等領域的相互結合,其主要將飛機的運動作為研究對象,對飛行過程中的復雜系統進行仿真。在人們對于飛行仿真對象真實性、復雜性、交互性及實時性的需求不斷提高的過程中,飛行仿真技術也成為計算機仿真的重點研究內容[1]。
在飛行過程中使用計算機仿真技術中的仿真模型替代真實的物理模型,從而能夠有效提高研制及試驗的質量,并且還能夠在計算機平臺中實現多次的重復模擬,并且對實驗結果進行分析,能夠有效縮短研制及實驗的周期,并且降低研制成本。計算機仿真技術也可應用于軍事領域中武器的研制及作戰訓練方面,為飛行戰術演練、訓練及武器裝備提供了經濟有效的途徑,從而成為目前軍事領域中的重要科技。目前,在飛行技術訓練過程中使用仿真技術,已經成為我國航空軍隊飛行員培養過程中的主要途徑。能夠在模擬訓練過程中實施的對飛行員的操作進行監控,并且使飛行員能夠有效掌握飛行技能。和傳統飛行訓練方式進行對比,基于GLStudio軟件的仿真訓練具有較大的優勢[2]。
GLStudio軟件是現代尤為先進的儀表面板開發工具,其被廣泛應用到三維、實時及照片交互的圖像界面中,其適應于人機接口應用的開發,比如飛行訓練模擬器虛擬儀表等,其開發的人機結構能夠在產品全周期中[3]。GLStudio軟件還能夠實現儀表指示、虛擬儀器動態互聯及按鍵相應等仿真,尤其適用于多功能顯示器仿真系統中的虛擬建模,其建模過程主要包括3步:
首先,設計整體外觀。GLStudio設計面板中具有面向對象的圖像界面,操作簡單方面,其中的工具欄中具有多種圖形元素及操作方式,用戶能夠通過操作基本圖像元素創建成為復雜模型,以此設計虛擬儀表外觀[4]。
另外,設計紋理貼圖。紋理貼圖能夠有效提高虛擬儀表的真實性,軟件能夠使用照片紋理,所有的多邊對象都能夠實現紋理貼圖,其能夠通過在對象中進行旋轉、縮放、平移等操作,從而實現預期的目的。
最后,人機交互的實現。GLStudio軟件中具有輸入/輸出設備,能夠根據用戶的輸入數據實現狀態的改變及用戶和輸入設備的交互。開發人員將處理事件添加到輸入設備中,以此實現處理事件的交互響應[5]。
通過以上步驟就能夠有效實現模型的設計,之后在代碼生成器中實現模型代碼元的生成。圖1為GLStudio軟件的開發流程圖。

圖1 GLStudio軟件的開發流程圖
表2為領航儀表仿真系統面板的設計結構,通過圖2可以看出來,領航儀表飛行技術仿真系統的面板主要包括地平儀、航向標、顯示器、高度表等組成,在整個系統中,平視顯示器是最核心的部分,其主要功能就是顯示飛行器在整個仿真過程中的狀態信息[6]。并且整個系統中具有多個單獨的儀表,如果使用GLStudio軟件中的圖像設計窗口實現儀表控件的統一設計,那么就會導致控件出現雜亂的現象,所以就要將儀表模塊轉換成為可插入的組件,實現儀表控件的單獨設計,從而便于管理人員對系統進行管理[7]。

圖2 領航儀表仿真系統面板的設計結構
2.2.1 儀表界面的設計
在制作儀表界面過程中,要全面了解所要研發設計的機型內部,包括儀表的顏色、尺寸、外形、儀表功能、報警指示、響應時間等,都要和實際的領航儀表相一致[8]。并且還要實現儀表的圖像處理,使用PS圖像處理軟件將其制作成為各式紋理,使其能夠與真實的儀表更加接近。在VC++中創建相應的工程模板,將用戶所創建的圖片模型在其中進行創建[9]。
2.2.2 驅動的設計及實現
為了能夠對儀表中的電門、指針及按鈕等進行控制,就要在代碼生成器中實現部件的響應及運動。使用GLStudio軟件和VC++共同編程,通過模擬儀表中的驅動程序在靜態環境中添加代碼,從而實現控件的實時動態顯示,將飛機中的飛行數據能夠顯示出來。
通過儀表內部實現驅動程序的描述,主飛行顯示器的高度、空速、導航顯示器及垂直速度等都是位置控制,簡單來說,就是通過Location控件的調用實現。姿態指示器的航向羅盤、導航顯示器、刻度帶等都是旋轉控制,就是通過DynamicRotate函數的調用進行控制,其他的風向、讀數窗口及風速等信息,都能夠將數據實時的顯示出來。本節通過航向游標介紹旋轉的設計[10]。
GLStudio軟件的API函數庫較為強大,將羅盤刻度圓周中心作為中心,創建旋轉所需要的函數,在對應的位置中將回調函數進行添加,從而實現游標對象的旋轉,創建外部控制對象在旋轉過程中使用的接口函數。首先,通過主控制界面中的Code Tab選項右擊選擇Add及Property,將成員的類型設置為double。
指針旋轉運動的控制通過以下代碼實現:

在設置界面之后,就要在儀表中創建行為及屬性,GLStudio軟件能夠支持模塊化的編程,從而使用戶在添加代碼之后能夠具有固定的接口,并且軟件自身具有API函數庫,其中包括多種常用的閃爍、旋轉等控制函數,用戶能夠在code模塊中實現函數的調用,從而動態控制模型。
通過GLStudio軟件創建類屬性,從而實現儀表動作的控制,每個添加的類屬性都能夠自動生成get函數、set函數及成員變量,用戶通過set函數的diamante實現元器件行為屬性的設置,通過get函數的調用實現屬性值的獲取[11]。
本節以駕駛桿的水平方向為例,在第二個多功能顯示器中將駕駛桿水平位置充分顯示出來。首先,通過code區創建字符變量,從而能夠夠顯示駕駛桿文本;另外通過創建全新屬性,使系統能夠自動生成屬性變量,在字符變量中將下述代碼添加進去,從而實現目前駕駛桿狀態的顯示。


領航儀表仿真系統和飛行模擬器的系統能夠相互聯系,才能夠滿足仿真系統最初設計的需求,儀表系統要與動力學仿真系統實現數據交換,通過數據流程圖確定系統的接口數據。
在現代網絡通信過程中一般使用UDP/IP或者TCP/IP協議,UDP也就是用戶數據報協議,其為面向無連接不可靠的傳輸類型,主要目的就是發送并且接受上層協議傳遞的消息,自身并沒有相關的檢測修改及回應工作,具有較高的工作效率;TCP傳輸控制協議為可靠并且面向連接的傳輸類型,其需要一定的網絡實現。由于虛擬儀表具有較高的實時性,計算機就會持續的刷新畫面,在刷新過程中偶爾丟失一兩幀,不會對畫面的渲染及效果產生影響,所以系統中的傳輸協議可以選擇DUP用戶數據報協議[12]。
使用UDP協議作為通信程序,飛行仿真機將計算之后的仿真數據進行發送,虛擬儀表端的主要目的就是實現每個循環周期的數據接收。圖3為系統的通信流程:

圖3 系統的通信流程設計
通過WinSock2開發通信程序,由于軟件中已經添加了頭文件及相關鏈接,所以用戶就能夠通過socket函數直接調用,實現網絡通信的設計。為了使系統能夠刻度,虛擬儀表計算機和飛行仿真機在連接之前要對結構體進行統一格式。在Initialize函數中添加代碼,實現套接字庫的初始化,之后實現套接字的定義,并且將其使用在數據接收緩存區中,將套接字的工作模式進行設置,之后對其進行綁定。一般情況下套接字都會出現阻塞,如果網絡出現故障,那么程序就會在原地等待,并且無法實現幀循環,那么畫面就會出現停滯的現象,所以UDP通信設定的工作是在套接字沒有出現阻塞的模式下工作的[13]。代碼為:

GLStudio軟件中包括代碼生成器,其主要目的就是在已經設計好的gls文件中自動生成云代碼,其能夠支持3種模式代碼的轉換,本文通過在Standalone模式中生成獨立應用程序,保存生成代碼,代碼的形式為源文件及頭文件。頭文件能夠實現圖像對象類生命的自動生成,源文件中包括類對象及類成員的具體定義,在VStudio中創建基于GLStudio軟件的項目,并且將頭文件及源文件添加進入,實現程序的編譯及調試[14],圖4為成功的領航儀表仿真系統執行效果。

圖4 成功的領航儀表仿真系統執行效果
系統的仿真是通過管道通信實現,在虛擬儀表啟動的時候就會自動創建管道服務,在打開驅動數據編輯器之后就會自動連接管道服務。通過添加和刪除按鈕,實現管理的演示,每添加或者刪除演示計劃之后,驅動數據文件就會自動實現更新。最后點擊飛行控制按鈕,從而為虛擬儀表發送相關的讀取驅動數據指令,虛擬儀表就會執行演示模式。每個演示模式會通過執行自身的運動算法實現預設的參數值,參數值能夠在演示過程中通過手動進行刪除[15]。圖5為仿真飛行虛擬儀表的顯示。

圖5 仿真飛行虛擬儀表的顯示
文中通過GLStudio軟件的高效率、逼真形象、良好的代碼移植等優點,使用UDP協議和飛行仿真模型通信,從而實現了基于GLStudio軟件的領航儀表飛行技術仿真系統的設計,并且實現了系統的編譯及運行。此系統能夠實時的顯示飛行狀態的參數,并且能夠滿足系統對交互性及實時性的需求。目前,虛擬儀表軟件被成功使用在某飛行控制系統仿真平臺中,能夠有效節約訓練成本,提高了飛行人員的安全,并且提高了飛行訓練的質量,并且為虛擬儀表開發設計相關人員提供了參考。