朱 嶺,萬 偲
(1.中航工業直升機設計研究所,江西 景德鎮 333001;2.西北工業大學,陜西 西安 710072)
?
基于Qt/Linux的飛行仿真管理系統的研究與設計
朱 嶺1,萬 偲2
(1.中航工業直升機設計研究所,江西 景德鎮 333001;2.西北工業大學,陜西 西安 710072)
飛行仿真管理系統采用Windows系統作為其應用平臺,在某種場合下,實時性不理想。為解決上述問題,利用Linux開源操作系統和Qt圖形開發工具作為開發環境,設計一種低成本且實時性好的飛行仿真管理系統:首先,對Linux內核實時性進行改進并搭建仿真管理系統的開發平臺;然后,提出該系統軟件設計方案,包括人機交互界面的設計、分系統數據管理調度和分系統線程的建立;最后,對仿真管理系統進行仿真測試,結果表明,該仿真管理系統具有較好的可靠性和實時性。
飛行仿真管理系統;Linux操作系統;Qt;實時性
直升機研制過程中,各種新技術的開發和研究成果的驗證均需要先進而有效的研究工具,由此,現代飛行仿真技術應運而生。該仿真技術是以相似原理、控制理論、計算機技術、航空技術、精密機械技術、心理學和生物工程等為基礎,以計算機和各種物理效應設備為工具,利用系統模型對實際的或設想的系統進行動態試驗研究驗證。該技術可大體分為三種:數學仿真、含實物仿真和人在回路仿真。
飛行模擬器屬于典型的人在回路仿真系統,用來模仿直升機執行飛行任務或訓練時的飛行狀態、飛行條件及飛行環境,并為飛行員提供相似的操縱負荷、視覺、聽覺、運動感覺的試驗和訓練裝置。飛行模擬器的組成如圖1所示,主要由仿真管理系統、航電系統、飛行系統、操縱系統、視景系統和教員臺系統5部分構成。仿真管理系統在日常的飛行任務中扮演著十分重要的角色,是飛行模擬器的神經中樞,處理大量的數據信息,因此對其實時性要求很高。但是,目前國內直升機飛行模擬器基本采用Windows操作系統作為其仿真管理系統的應用平臺,實時性不理想。
因此本文針對上述直升機仿真管理系統實時性不高的缺陷,利用改進的Linux開源操作系統和Qt圖形開發工具作為開發平臺,設計并開發了成本低且實時性好的飛行仿真管理系統,同時驗證了該設計的可行性。

圖1 飛行模擬器組成圖
由于Linux操作系統開放源代碼可以免費下載,更可以自行修改內核代碼以適應具體要求,因此,本文選擇Linux作為仿真管理系統的開發平臺。但它采用的中斷處理機制、時鐘中斷機制和任務調度策略不能提供很好的實時支持[3-5],具體原因見表1。
針對表1中的問題,本文參考相關文獻設計一個實時的Linux改進版本,簡稱N-Linux,主要修改了Linux的中斷機制、時鐘機制和實時多任務調度策略。詳細實現方案如下:
1)修改Linux中斷機制,實現內核可搶占性,即在內核與硬件之間加入一個中斷模擬器接管內核對中斷的管理。當內核關中斷時,中斷模擬器把之后發生的中斷掛起并記錄下來,待內核調用開中斷命令允許中斷時,中斷模擬器對掛起的中斷進行模擬,讓Linux內核依次處理。
2)時鐘中斷機制:改變Linux原有10ms時鐘中斷的固定頻率模式,在任何需要時通過重新設定時鐘而產生中斷,這是通過時鐘控制模塊實現的。時鐘控制模塊采用周期時鐘中斷模式,即將時鐘芯片設置為任意精度的周期性中斷方式[6-7]。
3)調度算法的主要任務是保證周期任務滿足時間約束。基本思想是:由用戶根據緊迫程度為任務分配靜態優先級,具有最緊迫時限要求的任務將被分配最高優先級。
上述的實時N-Linux結構可以較好地滿足實時性應用的要求。

表1 實現Linux實時性所要解決的關鍵問題
2.1 仿真管理系統開發平臺搭建
考慮到仿真管理系統主要是為直升機飛行模擬器提供人機交互、數據和任務管理調度等功能,通過對其功能的分析,本文仿真管理系統開發環境采用多臺X86結構的高性能計算機,開發平臺為實時改進的N-Linux操作系統(Centos 6.0)和QT圖形開發工具,QT是一種跨平臺的開源界面庫,性能較好,邏輯簡單,易于開發,可有效地、實時地完成各個分系統之間的任務調度,開發語言為C/C++。另外,航電系統、飛行系統、操縱系統、視景系統和教員臺系統(以下簡稱分系統)與仿真管理系統采用高速以太網進行通信,其示意圖如圖2所示。 高速以太網通信協議采用用戶數據報協議(UDP),選取依據如下:從軟件可維護性的角度出發,應選擇當前流行的編程接口和通信協議,又考慮到管理軟件開發基于多種平臺,所選擇的協議必須對所有這些操作系統都是兼容的。因此,選擇了當前流行的TCP/IP協議:傳輸控制協議TCP和UDP。TCP提供面向連接的服務,由于TCP要提供可靠的傳輸服務,因此,TCP就不可避免地增加了許多開銷,如應答、流量控制、定時器以及連接管理等,這不僅使協議數據單元的首部增大很多,還要占用許多的處理機資源;UDP提供無連接、不可靠的服務,在傳送數據之前,不需要先建立連接,遠程主機在收到數據報后,不需要做出任何應答。由此,為提高網絡通信的速度,本文選用用戶數據報的方式,即UDP協議[8-9]。

圖2 仿真管理系統通信示意圖
2.2 仿真管理系統軟件設計
仿真管理系統對各分系統的應用程序進行統一調度和管理,其與各分系統的通信按任務劃分,且每個任務都用一個線程來實現,包含飛行系統任務、航電系統任務、教員臺系統任務、操縱系統任務和視景系統任務。軟件設計流程如圖3所示。

圖3 軟件設計流程圖
1)系統初始化
系統初始化包含系統相關變量的初始化(如計數器變量)及分配各分系統的UDP端口號和IP地址。以下詳細說明系統人機界面設計、分系統任務創建和分系統的數據處理。
2)人機界面設計
Qt采用面向對象的框架,擁有直觀、強大的API(應用程序編程接口),因此系統人機界面的設計采用Qt圖形開發工具。從Qt的官網下載最新的基于Linux的qt-sdk安裝包,進入Linux根目錄下,在終端里更改用戶權限,解壓安裝包進行安裝。進入QtCreator,開發仿真管理系統的人機界面。
人機界面的主要功能:顯示仿真管理系統從各分系統接收的數據,向分系統發送經解算后的數據及顯示分系統的連接狀態。因此在界面的設計中選用QTableWidget控件顯示分系統數據,詳細界面設計參看仿真管理系統測試一節。
3)分系統任務創建
為保證飛行模擬器的正常運行,仿真管理系統與各分系統必須協調地工作。仿真管理軟件系統由多任務(進程和線程的統稱)組成,每項任務(由線程實現)負責處理與各分系統的信息交互。
分系統線程利用N-Linux的實時線程來實現,圖4是基于N-Linux的仿真管理系統任務調度實例。操縱系統任務T1、飛行系統任務T2、教員臺系統任務T3、視景系統任務T4、航電系統任務T5的靜態優先級分別為100、90、80、70、60,數值越大表示優先級越高。在飛行員使用飛行模擬器訓練時,若在視景系統任務T4運行中,教練員通過教員臺系統任務T3更改飛行跑道(初始位置),T3將搶占T4任務而投入運行,但飛行系統任務需結合T3的初始位置信息解算直升機位置,故T2任務被激活,T3任務被搶占,待T2完成時,依次轉入T3和T4任務。

圖4 基于N-Linux的仿真管理系統任務調度實例
同時設定N-Linux時鐘中斷為50μm激活一次,保證仿真管理系統與各分系統實時通信。任務在創建線程的入口函數中采用Qt的信號與槽機制實現UDP數據通信,并顯示在Qt界面中。
4)分系統數據處理
飛行仿真管理系統的主要任務是管理、解算和調度分系統飛行數據。以飛行系統為例,圖5為仿真管理系統處理飛行數據流程。

圖5 仿真管理系統處理飛行數據流程圖
在圖5中,由于各系統使用的坐標位置不同,因此仿真管理系統需將接收的數據經解算處理再分發給分系統:教員臺系統(如直升機經緯度)、視景系統(直升機經緯度)、航電系統(如直升機經緯度)、操縱系統(側滑角/操縱配平位置/攻角)。解算公式為:
Lat1=Lat×cosφ+Lng×sinφ+Lat0
(1)
Lng1=Lng×cosφ-Lat×sinφ+Lng0
(2)
hp1=hp+hp0
(3)
psi1=psi+psi0
(4)
其中,φ=π×(-psi0)/180.0,Lat1,Lng1,hp1,psi1分別表示經解算得到的經緯度/氣壓高度/真航向;Lat,Lng,hp,psi分別表示接收飛行的經緯度/氣壓高度/真航向;Lat0,Lng0,hp0,psi0分別表示接收教員臺的初始經緯度/氣壓高度/真航向。
購買saitek公司生產的模擬真實飛行操縱設備的游戲柄(腳蹬、總距操縱桿、周期操縱桿),搭建模擬的飛行操縱系統,選擇某型飛行模擬器的飛行系統、視景系統、教員臺系統和航電系統用于測試本文開發的仿真管理軟件。實驗環境為一臺x86計算機(windows操作系統),首先安裝游戲桿的驅動程序,使用自帶的軟件完成游戲桿的測試。系統的測試環境如圖6所示。

圖6 系統的測試環境
仿真管理系統的測試界面見圖7。

圖7 系統測試界面
其測試步驟如下:
第1步:使用joyGetNumDevs()函數獲取當前系統支持的游戲設備數量。
第2步:使用joyGetPos()函數/ joyGetPosEx()函數獲取游戲桿設備的坐標位置。
第3步:采用QT for windows開發平臺,并利用第1、2步中的函數完成操縱系統測試軟件的開發,如圖7(a)所示,操縱系統界面中包含腳蹬、俯仰、橫滾和總距4個操縱量。
第4步:編寫操縱系統網絡通信代碼,即利用UDP的writeDatagram()函數并啟動定時器定時向仿真管理系統發送操縱桿量。
第5步:仿真管理系統界面如圖7(b)所示,從圖中可以看出,接收的操縱數據與游戲桿的變化量一致;同時,分系統狀態欄中顯示操縱系統處于連接狀態,正在通過UDP協議實時接收操縱系統的操縱桿量。
第6步:最后,結合某型飛行模擬器的其他分系統測試此仿真管理系統。
問題:在飛行的過程中,出現卡屏現象。
分析:使用QTableWidget控件顯示飛行數據時,涉及到QString變量與Double量的轉化,然而在轉化時直升機的經緯度精度降低,導致視景系統接收的直升機位置不連續。
解決:采用QString::Number(latitude/longitude ,"g", n)強制提升精度。其中latitude/longitude為直升機經緯度;n表示精度位數,這里n=11即可。
因此,通過測試驗證了本文設計的飛行仿真管理系統在實時性、穩定性方面都滿足要求。
本文利用Linux開源操縱系統、Qt圖形開發工具開發出成本低且實時性好的飛行仿真管理系統。由于飛行模擬器采用Windows操縱系統作為其飛行仿真管理系統的應用平臺,其實時性不是很理想,針對實現Linux實時性所要解決的關鍵問題,提出改進Linux內核的方案N-Linux,以滿足系統對實時性的要求。然后提出飛行仿真管理系統軟件設計方案,包括人機交互界面的設計、分系統線程的建立和分系統數據管理、解算和調度,搭建模擬的操縱系統。選用某型飛行模擬器分系統測試仿真管理系統,驗證了飛行仿真管理系統的實時性和穩定性都滿足要求,現已應用在多種型號模擬器上。
[1] 李 林,等.飛行模擬器[M].北京:北京理工大學出版社,2012:1-4.
[2] 閻鋒欣,等.C++ GUI Qt4編程[M].北京:電子工業出版社,2008.
[3] 曾 煒,沈為群. 基于RTAI Linux的飛行仿真實時管理系統[J]. 計算機工程,2008(10):261-263 .
[4] NISLEY E. Real-TIME Linux[J]. Dr. Dobbs Journal,2003,28(4):78-81.
[5] 肖和龍,唐文勝. 基于RTAI改進的Linux實時調度算法[J].計算機工程與應用,2012,(48):81-83.
[6] BARABANOV M, YODAIKEN V. Introducing real-time Linux [J]. Linux Journal, 1997 (34):19-23.
[7] 宋穎慧,等.增強Linux內核實時性能的研究與實現[J].哈爾濱工業大學學報,2005.
[8] Drude P. Theory of Optics[M]. New York:Dover,1959.
[9] 劉 暢,彭楚武. Linux下UDP編程實例[J].儀表技術.2005(4):62-64.
Flight Simulation Management System Research and Design Based on Qt/Linux
ZHU Ling1,WAN Cai2
(1.China Helicopter Research and Development Institute, Jingdezhen 333001, China;2.Northwestern Polytechnical University, Xi’an 710072,China)
Windows system was used as the application platform of flight simulation management system, in some case, the real-time performance was not ideal. In order to solve the above problem, the Linux open source operating system and Qt graphical development tool were used as a development platform, a low cost and good real-time flight simulation management system was designed: first, the real-time performance of Linux kernel was set up; then, the software design of this system was proposed including the man-machine interface design, subsystem data management scheduling and subsystem thread creation; finally, the simulation management system was tested, the simulation results show that the simulation management system had good reliability and real-time.
flight simulation management system; Linux operating system; Qt; the real-time performance
2014-09-17
朱 嶺(1986-),女,吉林省前郭人,碩士,設計員,主要研究方向:飛行模擬器仿真管理系統。
1673-1220(2015)01-034-05
文獻標識碼: A