王銳鑫 趙中華 沈國榮 于 杰
(蘇州長風(fēng)航空電子有限公司,蘇州 215151)
飛機(jī)座艙顯示系統(tǒng)是人機(jī)界面,飛行員通過該系統(tǒng)了解飛行航向、高度、真/磁航向以及飛機(jī)姿態(tài)和發(fā)動機(jī)狀態(tài)的信息,并對飛機(jī)發(fā)出指揮控制指令。從早期的分立儀表發(fā)展到目前的綜合顯控,座艙顯示系統(tǒng)向綜合化、小型化、人機(jī)界面友好方向發(fā)展[1]。
ARINC661 是座艙顯示系統(tǒng)人機(jī)接口規(guī)范,該規(guī)范將畫面顯示和畫面邏輯部分隔離,這樣在座艙顯示系統(tǒng)的后期應(yīng)用過程中,畫面顯示部分的變更和畫面控制的更改就不會產(chǎn)生耦合。ARINC661為這兩部分建立了通訊協(xié)議和接口,形成了開放的體系[2]。
ARINC661規(guī)范就是將飛機(jī)座艙顯示系統(tǒng)切分為兩個互相獨(dú)立的子系統(tǒng):用戶應(yīng)用程序(User Application,UA)和駕駛艙顯示系統(tǒng)(Cockpit Display System,CDS),兩個子系統(tǒng)之間通過規(guī)定的接口和通信格式進(jìn)行通訊。ARINC661規(guī)范從產(chǎn)品的全壽命周期考慮,降低畫面生成與畫面控制邏輯的耦合。ARINC661規(guī)范采用窗體和圖層(Layer)的概念,它將顯示系統(tǒng)分成多個顯示單元,每個單元分成數(shù)個顯示窗口,每個窗口由多個圖層組成,而圖層由窗體(Widget)構(gòu)成。因此,窗體是顯示系統(tǒng)的最基本元素。畫面顯示過程中,以圖層進(jìn)行顯示,只需要通過各個圖層的接口對其所屬窗體進(jìn)行控制[3]。
ARINC661規(guī)范包含用戶應(yīng)用程序和駕駛艙顯示系統(tǒng)兩部分以及通訊協(xié)議。在初始階段對顯示系統(tǒng)的畫面進(jìn)行初始化,在運(yùn)行過程中,CDS 顯示控制軟件與UA 根據(jù)ARINC 規(guī)范約定的消息格式進(jìn)行通訊。
在系統(tǒng)運(yùn)行過程中,用戶應(yīng)用程序主要有兩部分功能,第一,通過指令控制CDS 顯示控制軟件,從而驅(qū)動畫面顯示;第二,接收CDS 顯示控制軟件的命令完成參數(shù)設(shè)置,實現(xiàn)按鍵以及顯示器屏幕控制操作[4],如圖1所示。
UA 與CDS 之間通過握手指令完成Layer 激活,首先由UA發(fā)送請求,CDS 顯示控制軟件響應(yīng)請求,圖層激活后通知UA,若Layer 屬性為不可見,UA 需發(fā)出請求,CDS 將該Layer 屬性設(shè)置為可見,該圖層所屬畫面具備顯示條件了。然后,UA 發(fā)送運(yùn)行指令,CDS 顯示控制軟件解析運(yùn)行指令并完成畫面渲染工作。飛行員對顯示器的周邊按鍵及屏幕進(jìn)行操作,CDS 顯示控制軟件將窗體事件發(fā)給UA,UA 產(chǎn)生相應(yīng)的相應(yīng)。
圖1 UA和CDS通訊示意圖
在座艙顯示系統(tǒng)運(yùn)行過程中,UA 發(fā)給CDS 顯示控制軟件的指令如下所示。
Struct A661_Block_RT{
uchar A661_bigin_block; //起始關(guān)鍵字
uchar Layerldent; //圖層號
ushort Context_number; //上下文號
ulong Block_size; //消息塊大小
ulong A661_run_comd; //指令序列組;
uchar A661_end_block; //結(jié)束關(guān)鍵字
ushort Unusedpad; //附加信息
}
上述指令采用圖層號作為標(biāo)識,UA 根本職能是控制圖層信息,圖層信息包括圖層以及其下屬的窗體部件的相關(guān)參數(shù)信息,包含在{ A661_Run_comd }+部分中,通過數(shù)據(jù)塊變更圖層信息,從而實現(xiàn)畫面的渲染。
模型-視圖-控制器模式使畫面顯示、數(shù)據(jù)和控制邏輯相分離,本文中的UA 軟件采供該模式。
座艙顯示系統(tǒng)接通后,由UA 程序生成數(shù)據(jù)邏輯數(shù)據(jù)包,發(fā)送給CDS。數(shù)據(jù)邏輯包括設(shè)置圖層中窗體的參數(shù),還需配置響應(yīng)事件所需參數(shù),當(dāng)CDS 收到窗體事件時,對相應(yīng)的窗體以及圖層進(jìn)行設(shè)置。邏輯數(shù)據(jù)設(shè)置框圖如圖2所示,界面是用戶的界面,用戶通過它來發(fā)出更改請求,控制器收到請求后,更改邏輯配置[5]。
圖2 UA軟件功能框圖
設(shè)置邏輯數(shù)據(jù)包之后,在系統(tǒng)運(yùn)行階段,UA 將數(shù)據(jù)包發(fā)送給CDS 顯示控制軟件,同時接受CDS 消息,通過上述過程來實現(xiàn)CDS 顯示控制軟件與UA 的通訊。
CDS 顯示控制軟件從根本上來說就是通過一些描述文件和運(yùn)行指令對顯示器的畫面進(jìn)行解釋,以達(dá)到動態(tài)渲染的目的。同時CDS 顯示控制軟件還需獲取飛行員的按鍵或觸控等信息,發(fā)送給UA,經(jīng)過UA 處理后接受處理結(jié)果。CDS 軟件的工作機(jī)理如圖3所示。
圖3 CDS軟件工作機(jī)理
CDS 顯示控制軟件可以讀取本地固化的定義文件(DF)文件啟動,也可以通過UA 加載的定義文件啟動。獲取定義文件后,CDS 顯示控制軟件開展對對文件的解析工作,生成一棵描述樹,該描述樹包括全部窗體,還生成圖形數(shù)據(jù)鏈表和symbol 描述鏈表各一個。完成上述工作后,系統(tǒng)進(jìn)入運(yùn)行態(tài),CDS 顯示控制軟件負(fù)責(zé)維護(hù)顯示器畫面的動態(tài)渲染、獲取用戶操作和解析UA 指令,最終完成顯示器畫面的顯示[6]。
通過對顯示控制軟件的功能原理進(jìn)行分析,可以確保該軟件的各項特性,并了解其工作流程。在工作過程中可以根據(jù)具體目的,靈活地配置這些功能。
在顯示控制軟件功能中,維系其運(yùn)行的最基礎(chǔ)功能配置如下:
(1)能夠加載本地固化的定義文件或者網(wǎng)絡(luò)傳輸?shù)亩x文件。
(2)能夠提供symbol 庫和窗體部件庫。
(3)能夠在指定顯示器上渲染窗體部件。
(4)能夠解析UA 的指令。
(5)在系統(tǒng)運(yùn)行過程中可以輸出調(diào)試信息。
(6)能夠提供操作系統(tǒng)。
(7)能夠?qū)︼@示控制軟件的錯誤進(jìn)行分析、處理。
上述功能,從最基本范疇上確保了CDS 顯示控制軟件對定義文件進(jìn)行讀取、解析、錯誤處理并對顯示畫面進(jìn)行渲染,再加上對基本的UA 指令解釋并進(jìn)行參數(shù)設(shè)置,可以滿足系統(tǒng)的運(yùn)行和基本應(yīng)用。但是對于一個完善的系統(tǒng)功能還需包括如下部分:
(1)具有font,styleset 等的定義功能,可以靈活設(shè)置個性化風(fēng)格。
(2)可以提供預(yù)定義數(shù)據(jù)和圖片支持。
(3)可以捕捉按鍵、觸摸等外部輸入,并轉(zhuǎn)換成CDS 文件發(fā)送給UA。
(4)可以實現(xiàn)功能配置,對功能模塊進(jìn)行增加刪除調(diào)整工作,優(yōu)化代碼數(shù)量。
本文研究的CDS 顯示控制軟件模塊層次和軟件接口規(guī)范,并包含豐富功能的軟件模塊。采用面向過程的方法,模塊間的邏輯清楚,也符合嵌入式軟件設(shè)計思路。本文研發(fā)的 CDS 顯示控制軟件組成模塊如圖4所示。
圖4 CDS顯示控制軟件組成模塊圖
由圖4可知,顯示控制軟件是獨(dú)立的軟件包,它與軟件環(huán)境和硬件環(huán)境無關(guān),它通過4個驅(qū)動接口來適配不同的環(huán)境,因此具有良好的移植性。顯示控制軟件包括兩個組成部分:
(1)基礎(chǔ)庫模塊。該模塊定義了符號庫、字體庫、圖片庫、顯示風(fēng)格以及窗體部件。用戶可以通過修改上述定義和顯示風(fēng)格滿足自身個性化的要求。軟件研發(fā)人員可以根據(jù)協(xié)議要求修改symbol/widget 庫。
(2)功能部分。模塊由五個部分組成:UA 指令解析,CDS調(diào)度,事件處理,異常處理和實時渲染,上述功能為系統(tǒng)運(yùn)行時功能。此外,還包括功能配置部分,該部分按照用戶的配置選擇性開展編譯工作。異常處理是用來處理定時器溢出、指令錯誤、資源緊張等各中異常。顯示控制軟件調(diào)度器作為上層應(yīng)用,控制多個功能模塊,協(xié)調(diào)模塊運(yùn)行,維護(hù)重要數(shù)據(jù)結(jié)構(gòu)。在沒有操作系統(tǒng)的情況下,由CDS 調(diào)度器調(diào)用各個功能模塊形成循環(huán)結(jié)構(gòu),在有操作系統(tǒng)的情況下,由操作系統(tǒng)來調(diào)度各個模塊,控制對資源管理。
本文在對ARINC661規(guī)范的研究的基礎(chǔ)上,提出了一種基于ARlNC661架構(gòu)的飛機(jī)座艙用戶應(yīng)用程序和顯示系統(tǒng)的軟件架構(gòu)設(shè)計方法,相信可為國內(nèi)座艙航電顯示系統(tǒng)的研究設(shè)計工作提供有效參考。