文/秦正運 葛晨 程新滿
座艙顯示(CDS: Cockpit Display System)作為與飛行員交互的第一接口,集成了飛機系統狀態顯示、飛行指令引導、偵察告警、火力攻擊等重要功能,具有信息量大,內容顯示復雜等特點。目前,國內對座艙顯示的開發主要是采用C 語言使用OpenGL 編程實現,具有工作量大、開發周期長、開發效率低、后期維護難、顯示效果差等缺點。
針對如上特點,本文引入了可視化的圖形開發工具VAPS 進行座艙顯示設計,以此來提高顯示的質量,縮短開發周期。
VAPS XT 是由加拿大Presagis 公司研發的人機界面設計工具,專用于航空、車輛儀表等高性能電子設備應用的設計開發。VAPS XT擁有良好的用戶界面,用戶可以利用其提供的控件來快速設計所需要的儀表圖形,具有快速、可視化等優點;并且VAPS XT 支持UDP、TCP、共享內存等方式和外界進行數據交互。在設計結束后,可通過代碼生成器將設計的圖形轉換成C++代碼,無需改動即可以應用到各個平臺上去。VAPS 已經在NH90、F-22、V-22等多個系列的飛機座艙顯示設備。
座艙顯示(CDS)和用戶系統(UA)兩部分構成了座艙顯示控制軟件,CDS 作為顯示終端,接收來自UA 的畫面數據信息,這些信息包括畫面號、各個圖符的驅動數據等;CDS 向UA 反饋用戶的人機接口的交互指令信息,用于UA 控制畫面信息。
CDS 軟件主要分為兩個部分:畫面顯示和數據通訊。
VAPS 主要用于CDS 的顯示畫面的開發。首先VAPS 通過一系列強大的GUI 編輯器對顯示圖符進行建模,形成圖符庫;然后根據設計的具體需求配置圖符的屬性,添加相應的邏輯,從而組建完整的畫面。圖符庫的使用可以提高圖符控件的標準化程度,減少開發工作量,提高開發效率。
VAPS 工程與通訊應用的數據交互采用nCOM 進行。為了能夠使用nCOM,必須構建數據描述文件(DD:Data Description File),并將外部應用的數據與之映射。座艙顯示端將總線上接收的數據按照DD 文件規定的格式進行處理,才能被VAPS 工程所用。因此,我們需要根據顯示畫面的數據信息來制定DD 文件,導入VAPS 工程,并與畫面數據關聯,從而驅動畫面的動態顯示。如圖1所示。
通過對座艙顯示軟件的功能需求分析,座艙顯示軟件主要分為3 個部分:
(1)設計圖形符號庫,從中選擇相應的圖形符號控件,設置其屬性,構成畫面。
(2)根據畫面交互的要求,設計DD 文件。
(3)通信數據的I/O 處理。
3.1.1 構建圖形符號
標準圖形符號設計為CDS 的基本圖形接口,CDS 的主題設計過程可以簡單的描述為圖形符號的結構和屬性設計,這實際上是為CDS 的設計引入了開放的開發模式,即隨著圖形符號部件的配置不同,座艙顯示可以呈現出不同的內容。標準圖形符號庫的構建和使用為CDS 端畫面顯示的開發實現提供支持。CDS 端畫面由各種圖形符號構成,按照相關標準設計的圖形符號,使構成的整個畫面更加規范,同時符合標準的圖符庫的構建和圖符復用,能夠提高畫面開發效率,形成家族化的畫面顯示風格,積累顯示系統開發的資產,奠定后續開發和改進的基礎。
VAPS 中包含大量圖形、字符、儀表、數據和計算控件,圖形符號設計就是通過VAPS提供的這些部件進行HMI 的圖形化開發,將這些基本圖元部件自由的組合,并通過建立圖形符號對象的輸入輸出,關聯內部控制邏輯,形成更復雜的圖形符號;設計好的圖形符號保存在圖形符號庫內,在設計畫面時,將其從庫中拖拽到設計界面,設置好圖形符號的輸入輸出數據,即可使用。
3.1.2 畫面布局
在VAPS XT 中建立一個Format 對象,從圖形符號庫選取所需的圖形符號,根據用戶需求,合理分配圖形符號位置,配置圖形符號屬性,實現整個畫面布局。
3.1.3 實現內部邏輯
VAPS XT 內部邏輯是通過數據流(Data Flow)實現的,在數據流中可以使用數值比較、邏輯判斷等VAPS 提供的語句,對各個圖符的輸入輸出數據進行邏輯判斷,實現圖符的狀態控制。
3.1.4 畫面的輸入輸出
畫面數據的輸入輸出是通過DD 文件實現的(設計方法見3.2 節),在設計好DD 文件之后,將其導入到VAPS 工程中,VAPS 工程將其視為一種數據結構類型,通過創建Data Sender/Receiver 對象,各創建一個數據接收和發送對象,這兩個對象同時映射到同一個內存空間,Data Sender 向其發送數據,Data Receiver 從內存接收數據。將這兩個對象加入到畫面中與畫面進行關聯,則完成用戶到畫面的接口操作。3.1.5 畫面測試
在畫面設計完成后,需要對畫面的顯示邏輯、接口通訊進行測試。通過設置Data Sender 對象的各個元素的值,畫面便可以通過Data Receiver 對象接收到數據,從而實現對畫面進行測試。如圖2所示。
為了使兩個或多個VAPS XT 設計的應用能夠互相交聯,或者使VAPS XT 構建的應用和外部應用交聯,VAPS XT 提供了nCom 接口進行通訊。nCom 提供了DD 文件作為數據接口,通過構建Data Sender/Receiver 對象,來實現應用間的通訊。
因此,DD 文件可以作為通訊數據與畫面顯示的通道。CDS 端接收總線的通訊數據,并解析處理,將解析后的數據以DD 的格式通過nCom 傳遞給構成畫面的每個圖符模型的參數,驅動畫面中每個圖符的顯示。
DD 文件本質上是XML 格式文件,文件語法遵從XML,并在其基礎上有所簡化,一個簡單的DD 文件如下:


表1

圖1:座艙顯示架構

圖2:VAPS XT 畫面設計流程

DD 文件必須以dataDescription 為根節點,其屬性名字必須與DD 文件名一致,如上述文件為Float50.dd,文件的dataDescription 節點的屬性必須為Float50;field 為子節點,每個field 子節點都標示一個變量;每個field 節點都包換三個子節點name、type、cardinality,這三個子節點的元素分別標示變量名、變量類型、變量維數。值得一提的是,DD 文件不支持二維數組和結構體,如果想使用結構體,則必須采用DD 文件嵌套的方式。
CDS 端顯示的數據從根本上來說是各個航電子系統的數據,這些數據是UA(User Application)端從總線上獲取的,然后再經過處理通過總線或者共享內存的方式傳輸到CDS 端。由于UA 端和CDS 端的硬件或者軟件配置的不同(例如系統大小端序不同、結構體對齊方式不同等),CDS 通訊應用需要把接收到的通訊數據再一次處理,轉換成VAPS工具中的DD 文件結構。
在VAPS XT 中,DD 文件最終轉換為用戶I/O 緩存,可以通過DD 的名字來索引到I/O 緩存的句柄。將CDS 處理后的數據復制到I/O 緩存里,VAPS XT 便可以獲取數據到從而驅動畫面顯示。VAPS XT 分別為C++和C 語言分別提供了索引DD 共享內存的方式,在這里我們采用的是C++方式。
VAPS XT為我們提供了一個vxtRTUserIntegrationCallbacksI 的基類,通過設計這個基類的派生類可以完成I/O 數據緩存等用戶接口的初始化。此基類提供了4 個虛函數需要實例化,具體見表1。
VAPS XT 工具的使用從根本上改變了座艙顯示開發方法,使得設計工作主要集中在構建畫面和數據接口上,省去了大量圖形的編程開發與調試工作,也可以很方便的將設計過程中的文件移植到不同的環境中去。VAPS XT工具的使用使得需求和設計緊密結合,快速高效迭代,從而優化了設計過程,降低開發成本。