李曦,付強,諶鉞,汪嗣堯
(中國航空工業集團公司西安飛機設計研究所,陜西 西安 710089)
航電顯示控制系統是飛行員獲取飛機狀態、控制飛行的核心系統,顯控系統顯示是否正確會直接影響飛行安全[1],所以需要對航電顯控系統進行全面測試。但是受飛行安全與測試成本的限制,顯控軟件的測試驗證基本都通過仿真模擬技術進行[2]。模擬仿真過程中,控制顯控軟件畫面顯示的傳感器參數無法直接通過傳感器獲取,要利用信號仿真系統進行信號模擬。
目前航電顯控系統的測試驗證主要有模型測試、軟硬件結合仿真等方式[3-4]。其中模型測試一般依賴模型設計工具[5],工具不同模型測試方法差異較大,會導致實驗人員調試測試工作量成倍增加。
而軟硬件仿真需要利用物理設備模擬信號,通過總線傳輸[6],設備復雜、數量少、成本高。且軟硬件仿真測試平臺往往不同于軟件開發平臺,需要在開發基本完成后才能在測試平臺上進行完整測試,開發測試效率不夠高。
航電顯控軟件調用底層OpenGL SC/ES命令的高層級圖形庫完成顯控界面的繪制。因為OpenGL支持跨平臺使用,開發的航電顯示控制系統可運行在Windows系統下,實現顯控界面跨平臺顯示,但是無法實現信號激勵。
本文介紹的信號激勵系統可在Windows系統開發和運行,實現顯控系統的開發和驗證同平臺。仿真系統顯示畫面通過建模生成,調用OGLX庫繪制畫面,可以對各種傳感器信號值進行模擬修改。此外,仿真系統通過管道傳輸,將激勵數據發送給顯控系統,顯控系統刷新信號值,根據最新數據更新畫面。利用信號激勵系統即可對顯控系統界面進行快速驗證,如圖1。
信號激勵系統中不同控件均通過SCADE Display進行建模,包含開關控制、旋鈕控制、拖動條控制、加減控制等多種控件。根據不同的需求給控件添加控制變量,即通過點擊、拖動等操作實現對控制變量數值的修改。軟件可根據建模生成代碼調用OGLX庫函數,實現圖形的渲染繪制。
信號激勵系統擁有一個信號控制面板,通過鼠標、鍵盤控制修改控件數值,涉及大量的鼠標、鍵盤事件處理。本系統使用freeglut(OpenGL跨平臺使用工具庫)對鼠標、鍵盤事件進行處理[7]。
利用鼠標移動回調和鼠標點擊回調函數可以獲取到鼠標位置和鼠標長按狀態。識別到鼠標位置在旋鈕內部且長按時,會觸發鼠標位置在旋鈕中角度計算,更新旋鈕對應控制變量數值。
2.2.1 windows進程間通信
信號激勵系統與顯控系統為兩個進程,涉及到進程間通信。Microsoft Win32 API提供多種進程間通信的方法,如文件映射、匿名管道、命名管道等[8]。文件映射可以實現多個進程間共享數據,但需要控制進程間同步。匿名管道可以實現父進程與子進程之間的數據傳輸,但不能讓兩個不相關的進程進行通信。
而命名管道可以實現服務器進程和多個客戶進程之間通信,服務器進程創建命名通道后,其他客戶進程可以通過管道名稱打開管道進行通信。仿真系統為了將信號激勵發送給顯控系統,涉及到兩個不相關進程,因此選擇使用命名管道[9]進行數據傳輸。
2.2.2 連接與數據傳輸
(1)服務端創建命名管道
顯示控制軟件是管道服務端,圖2為顯示控制界面初始化流程。在初始化過程中除了要初始化顯示控制所需的資源,還需要創建命名管道。服務端通過CreateNamedPipe()創建一個命名管道的實例并返回管道的句柄。調用ConnectNamedPipe()函數,服務端會一直等待,偵聽來自客戶端的連接請求。當有客戶端進程連接到命名管道,顯示控制系統開始從命名管道中接收激勵信號。
(2)客戶端連接命名管道
信號激勵系統式管道客戶端,圖3為仿真系統初始化流程。客戶端調用WaitNamedPipe()函數,服務端等待來自客戶端的實例連接,如果有可用管道則進行連接。調用CreateFile()實現客戶端與服務端的連接,如果此時服務端接受與客戶端的連接,客戶端會獲得指向命名管道實例的句柄。客戶端獲得句柄后可以通過句柄向命名管道中發送數據。
(3)仿真系統與顯控界面間數據傳輸
仿真系統與顯控界面建立連接后,服務端與客戶端利用管道文件句柄讀寫文件,進行信息交互。具體傳輸緩存內的信號包含哪些,根據信號激勵需求來定義,緩存中是一個結構體變量。
該管道傳輸消息結構體中定義了信號激勵所涉及的所有信號,顯控系統涉及飛行指示、導航、水平狀態、飛控等大量顯示畫面,管道傳輸消息結構體可根據需求定義不同的信號。在顯示控制系統模型不變的前提下,根據測試需要更新結構體成員變量。仿真系統將用于激勵的緩存數據發送給顯控系統,更新顯控畫面。
信號激勵系統作為客戶端,通過界面上各種旋鈕操作修改顯控信號數值,將修改數據賦值給消息傳輸結構體變量,以字符流形式將大量數據送入管道。顯控界面作為服務端,從管道中接收數據,在每次繪制顯控界面前,更新顯控信號數值,再進行畫面渲染繪制。從而實現了仿真系統對顯控界面的信號激勵,實現顯控系統快速驗證,控制流程如圖4。
顯控軟件與信號激勵系統連接順序為啟動顯示控制軟件,服務端創建命名管道等待連接;客戶端(信號激勵系統)向服務端請求連接;服務端收到客戶端連接請求,客戶端獲取管道實例句柄,連接成功。兩個進程完成初始化,開始繪制渲染圖像。
在信號激勵系統與顯控軟件連接成功后,信號激勵系統開始向顯控發送激勵數據。根據驗證畫面的不同,需要激勵的信號不同。如在顯控飛行指示畫面驗證中,需要氣壓高度、預置氣壓高度、速度、預置速度、俯仰、橫滾、告警等信號變量,管道傳輸所用的緩存結構體如圖5。
通過仿真系統的控制面板可對圖5中定義的結構體變量就行修改,這些信號會實時發送給顯控系統,顯控界面畫面會馬上更新數據進行顯示。數據傳遞過程如圖6。
圖7中為飛行指示畫面信號激勵過程演示。圖中左側為飛行指示畫面,畫面從左到右依次為速度帶、姿態區、高度帶、垂直速度帶。右側為信號激勵控制面板,面板上可以控制空速、垂直速度、側滑角、氣壓高度、橫滾角、俯仰角、自動飛行指引的橫滾與俯仰、告警等信號,這些信號會驅動畫面每幀繪制前更新飛行參數。從圖中可以看到,右側激勵信號值與左側飛行參數畫面顯示一致。比如,為驗證飛行指示畫面中左側速度帶空速值顯示正確,調整右側控制面板中空速旋鈕,將空速值調整到355.5,此時控制面板畫面繪制完成后會將最新的激勵信號值通過命名管道發送給顯控系統。顯控系統更新畫面參數進行繪制,從速度窗口中可見速度值為355.5,且速度窗口箭頭指向的刻度值也為355.5,驗證得到飛行指示畫面中顯示的空速與要求 一致。
該信號激勵系統保證了信號傳輸的正確性與畫面更新的實時性,實現對顯控軟件的快速驗證。且該信號激勵系統可以通過控制面板修改信號,實現對激勵信號修改的可視化,支持模擬飛行過程中參數各種變化情況,操作簡單直觀。
本文中介紹的信號激勵系統可以完成顯控系統軟件驗證工作,開發與測試環境統一,不需要龐大的硬件設備與復雜的總線傳輸,從開發源頭進行顯控軟件測試。并且該系統有獨立的控制面板,信號數據激勵直觀且操作簡單。仿真系統與顯控界面通過命名管道進行數據流傳輸,數據流可根據驗證畫面信號的不同靈活修改,使得仿真系統不會限制于某一模型設計工具或某一種型號飛機,仿真系統可移植性好、復用性強。
但是,當前為實現仿真系統與顯控系統的連接,需要修改顯控軟件代碼,后續可以將通信部分改為動態鏈接庫,避免測試驗證對顯控軟件的直接影響。并且該仿真系統受操作界面操作限制,多個信號數據不能同時修改,后續為更充分測試,計劃增加多場景測試,模擬真實飛行環境多信號變化,進一步提高顯控系統模型驗證準確性。