本站小編為你精心準(zhǔn)備了飛機虛擬儀表建模仿真研究參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
《飛機設(shè)計雜志》2014年第三期
1軟件結(jié)構(gòu)
本課題研發(fā)的通用虛擬儀表設(shè)計/仿真系統(tǒng)基于如圖1所示的結(jié)構(gòu)設(shè)計思路。面板界面為用戶與虛擬儀表系統(tǒng)的人機接口,提供接受輸入、做出響應(yīng)并顯示結(jié)果的功能,用戶可以通過點擊響應(yīng)的開關(guān)、按鈕等進行人機交互的輸入操作,儀表面板接受用戶的輸入操作,對輸入操作向控制和響應(yīng)模塊進行數(shù)據(jù)傳輸,并接受控制和響應(yīng)模塊的響應(yīng)反饋。在用戶界面的顯示儀表上做出相應(yīng)顯示,如指針轉(zhuǎn)動、數(shù)字?jǐn)?shù)據(jù)變化、飛行姿態(tài)變化等。該模塊對于用戶體驗有著重要意義,必須做到逼真度高,才能達到系統(tǒng)的沉浸性的要求。數(shù)據(jù)庫模塊有兩方面功能。一方面,接受來自外部數(shù)據(jù)源的導(dǎo)入和儀表設(shè)計人員對數(shù)據(jù)庫的直接可視化修改。數(shù)據(jù)源來自文獻資料、飛行器制造商手冊、航空公司、機場、空管局等的來源。另一方面,接受控制和響應(yīng)模塊的查詢,并反饋出響應(yīng)的數(shù)據(jù)信息。數(shù)據(jù)庫的完善程度和準(zhǔn)確性對于虛擬儀表系統(tǒng)的準(zhǔn)確性和功能覆蓋率有著重要意義。所以建立完善、準(zhǔn)確的數(shù)據(jù)庫是虛擬儀表設(shè)計系統(tǒng)必須要做的工作。控制和響應(yīng)模塊是虛擬儀表系統(tǒng)的核心部分,接收來自面板界面的消息響應(yīng),根據(jù)該消息向數(shù)據(jù)庫模塊發(fā)出查詢命令,接收來自數(shù)據(jù)的返回數(shù)據(jù),再向面板界面發(fā)出數(shù)據(jù)顯示命令,控制面板界面的顯示狀態(tài)。控制和響應(yīng)模塊影響到虛擬儀表系統(tǒng)的系統(tǒng)性能,控制和查詢算法的準(zhǔn)確性和先進性直接影響到虛擬儀表系統(tǒng)的準(zhǔn)確性和運行速度。所以建立準(zhǔn)確并采用先進算法的控制和響應(yīng)模塊也是虛擬儀表設(shè)計系統(tǒng)的關(guān)鍵部分。COM組件封裝是虛擬儀表系統(tǒng)通用性和可移植性的保證。采用通用、跨平臺的封裝方式,使得虛擬儀表系統(tǒng)可以被多語言、多平臺的軟件調(diào)用,而且模塊化設(shè)計的思路也為后續(xù)的升級、修改提供了便利。本通用虛擬儀表設(shè)計軟件基于VC++MFC單文檔,可視化創(chuàng)建儀表面板系統(tǒng),可視化編輯儀表之間邏輯和函數(shù)關(guān)系,可視化修改儀表細節(jié),可視化修改數(shù)據(jù)庫,最后進行DLL模塊封裝,可以跨平臺調(diào)用。
2設(shè)計思路
2.1靜態(tài)元件制作部分為了保證儀表面板的逼真性,本課題在構(gòu)建儀表面板上靜態(tài)元件的時候采用真實照片,然后通過圖片處理軟件使靜態(tài)元件的固定部分和撥動部分分離,再重新組合,在仿真控制的時候進行調(diào)用加載。采用圖層分層的方法[6],結(jié)構(gòu)圖如圖3所示。圖4為一個靜態(tài)元件——由表盤和旋鈕組成,先將表盤和旋轉(zhuǎn)部分分離,再改變旋鈕位置,指向不同的指示狀態(tài),使用圖像處理軟件進行處理,將各圖保存成BMP格式,以保證在放大和縮小時不影響顯示質(zhì)量。
2.2儀表的狀態(tài)位設(shè)定通過紋理制作之后的表盤圖片在虛擬儀表設(shè)計軟件中加載,然后在表盤選取各個儀表單元進行單獨定義,彈出信息錄入界面進行各儀表單元的信息錄入,包括名稱、儀表類型、儀表位置、檔位個數(shù)、邏輯上層元件、需要載入的該儀表紋理圖片路徑等。在定義完各個儀表單元之后定義各個儀表單元的狀態(tài)位,包括狀態(tài)位名稱、對應(yīng)該狀態(tài)位的圖片等。軟件界面如圖5所示。
2.3儀表邏輯的可視化編輯儀表元件之間邏輯關(guān)系的設(shè)定,是創(chuàng)建虛擬儀表系統(tǒng)的重要組成部分。在定義完各個儀表及狀態(tài)位后,將數(shù)據(jù)庫中的儀表元件及狀態(tài)位信息整合,在可視化邏輯編輯界面(圖6)進行顯示,采用所見即所得的方法,儀表元件在邏輯樹中可以動態(tài)拖曳,元件之間的函數(shù)關(guān)系可以自由設(shè)定,儀表單元之間的邏輯關(guān)系隨著邏輯樹中邏輯的變化自動生成,同時也可以查看各器件的詳細信息、器件之間已設(shè)定的函數(shù)關(guān)系等。
2.4動態(tài)顯示儀表的多線程創(chuàng)建進程是計算機中已運行程序的實體,進程本身不會運行,是線程的容器。每個進程皆可以同步(循序)或不同步(平行)的方式獨立運行。由于線程是操作系統(tǒng)能夠進行運算調(diào)度的最小單位,被包涵在進程之中,是進程中的實際運作單位。本文在動態(tài)顯示儀表的創(chuàng)建上選擇多線程技術(shù),考慮如下兩方面:首先,每個進程需要占用很大的系統(tǒng)資源,而且進程之間共享資源、通信等也會增大系統(tǒng)開銷,而線程可以共享同進程的內(nèi)存等資源,通信也更為方便;其次,存在多個動態(tài)顯示儀表需要同時響應(yīng)的情況,把它們放在同一個進程里面,用不同線程創(chuàng)建可以采用分時的辦法,加快響應(yīng)速度,增加刷新頻率。在飛機儀表面板上,通常會有多個儀表同時變化的情況,為了能夠準(zhǔn)確模擬這種情況,本文采用多線程技術(shù)進行虛擬航空儀表動態(tài)模擬。若按以往方法,采用單線程既增加了系統(tǒng)負擔(dān),又不能同時響應(yīng),不能實時模擬飛機當(dāng)前狀況;采用多線程既減小了系統(tǒng)負擔(dān),又能同時對當(dāng)前狀況做出響應(yīng)。在虛擬航空儀表建模與仿真過程中,涉及的顯示儀表主要有指針表、數(shù)字表和飛行姿態(tài)表等,儀表單元模塊的結(jié)構(gòu)如圖7所示。仿真進程中的主線程為面板響應(yīng)程序,該程序基于Windows窗體框架,而虛擬顯示儀表面板則作為輔線程被調(diào)用。該進程中的各線程通過線程間相互通信機制實現(xiàn)交互通信[11],由面板響應(yīng)程序完成該面板變量在各種狀態(tài)下的仿真與交互。整個仿真系統(tǒng)的設(shè)計包含開發(fā)面板響應(yīng)程序、設(shè)計虛擬顯示儀表以及配置編譯環(huán)境、設(shè)計和集成多線程等幾個主要過程。
2.4.1設(shè)計單線程虛擬顯示儀表面板依照上一節(jié)中提到的設(shè)計過程,遵循設(shè)計與實際需求分析結(jié)果保持一致的原則,進行面板響應(yīng)程序的設(shè)計,這是構(gòu)造整套仿真系統(tǒng)的重要步驟。具體說來,就是要確保創(chuàng)建的虛擬顯示儀表面板與實際設(shè)備的外觀一致、功能一致,并且對虛擬儀表面板的電表操作、按鍵操作等功能反復(fù)進行試驗,直至仿真效果滿足實際需求。
2.4.2實現(xiàn)控制函數(shù)和啟動線程添加儀表響應(yīng)函數(shù)主線程中虛擬面板程序過程如下:(1)添加線程控制函數(shù)控制函數(shù)定義線程。輸入此函數(shù)后,線程開始,此函數(shù)退出時線程終止。(2)創(chuàng)建輔助線程通過AfxBeginThread創(chuàng)建CWinThread線程,并通過AfxBeginThread的參數(shù)傳遞來進行初始化。示例代碼如下:(3)主輔線程間通信與輔線程間同步這里要解決主輔線程間通信與輔線程間同步的問題。由于輔線程中的虛擬顯示儀表只是用作顯示用,只存在主線程對輔線程消息,輔線程對主線程沒有消息[12],因此可以采取全局變量和全局函數(shù)的方法,在主線程響應(yīng)函數(shù)中,改變?nèi)肿兞炕蛉趾瘮?shù)的值即可改變輔線程中虛擬顯示儀表的顯示狀態(tài)。由于存在主線程同時調(diào)用兩個及以上輔線程的情況,線程有可能和其他線程共享一些資源,如內(nèi)存,文件,數(shù)據(jù)庫等。當(dāng)多個線程同時讀寫同一份共享資源的時候,可能會引起沖突,所以對臨界資源的訪問應(yīng)當(dāng)采取互斥的機制。(4)在主線程中定義線程消息響應(yīng)代碼添加ON_THREAD_MESSAGE消息響應(yīng),具體過程分為兩步:①將消息響應(yīng)函數(shù)在CWinApp的頭文件里聲明VoidOnThreadMsgPitch(WPARAM,LPARAM);②在對應(yīng)的代碼文件里添加對線程消息響應(yīng)的代碼。
3封裝與
3.1封裝形式虛擬航空儀表系統(tǒng)設(shè)計和仿真完成后,使用DLL形式進行封裝,主要有以下優(yōu)點:可以提高重用性,可以在不同的仿真系統(tǒng)中調(diào)用同一套座艙儀表系統(tǒng),只要它們與座艙儀表一致即可;提高移植性,方便以后座艙儀表系統(tǒng)的升級,只要重新加載封裝好新座艙儀表系統(tǒng)的DLL,即可完成該仿真系統(tǒng)中儀表系統(tǒng)的更新和升級維護,見圖8。
3.2軟件接口函數(shù)及功能在本文中,為了方便虛擬維修平臺加載虛擬儀表系統(tǒng)后,能夠很方便地調(diào)用該系統(tǒng),提供多種多樣的接口函數(shù),在虛擬維修平臺中使用這些接口函數(shù)可以對虛擬儀表系統(tǒng)進行訪問、控制,可以根據(jù)不同的故障狀況控制儀表系統(tǒng)顯示相對應(yīng)的儀表狀態(tài)。本文出于模塊化、封裝性的考慮,設(shè)計了主要接口函數(shù)。在波音737飛機虛擬維修平臺中的仿真結(jié)果如圖10所示。
4仿真效果
在該虛擬儀表設(shè)計/仿真軟件中進行的仿真測試結(jié)果如下,圖9為空調(diào)儀表部分在仿真軟件的仿真效果。5結(jié)論本文提出了一種低成本飛機虛擬儀表系統(tǒng)的通用建模方法。該方法注重通用性和可移植性,采用面向?qū)ο蟮脑O(shè)計思想,基于MFC完成儀表系統(tǒng)的設(shè)計與封裝,并以COM組件的形式成功應(yīng)用于仿真、測試等工程中。本文所提出的方法性能良好、設(shè)計周期短、代碼重用率高、開發(fā)成本低、通用性強,設(shè)計者可根據(jù)自身情況選用多種集成開發(fā)環(huán)境,其設(shè)計思想亦可沿用至Linux、嵌入式系統(tǒng)等其它操作系統(tǒng),具有一定實用價值。
作者:邱偉龍陳國興單位:中國民航大學(xué)航空工程學(xué)院北京首航直升機通用航空服務(wù)有限公司