陳思悅,徐健龍,黃素娟
(1.上海大學(xué)通信與信息工程學(xué)院,上海 200444;2.上海飛機(jī)設(shè)計(jì)研究院,上海 201315)
隨著航空電子技術(shù)的不斷發(fā)展,現(xiàn)代民用飛機(jī)使用ARINC661 標(biāo)準(zhǔn)進(jìn)行搭載的座艙顯示系統(tǒng)(Cockpit Display System,CDS)的設(shè)計(jì)也越來(lái)越復(fù)雜[1]。國(guó)外對(duì)ARINC661 的應(yīng)用可以追溯到空客A380,實(shí)現(xiàn)了其在分布式顯控系統(tǒng)中的應(yīng)用。國(guó)內(nèi)對(duì)于ARINC661 標(biāo)準(zhǔn)的研究和應(yīng)用設(shè)計(jì)也在不斷地深入,如李笑瑜等研究了ARINC661 規(guī)范和工作原理,探究和搭建了人機(jī)交互系統(tǒng)[2],李回寶設(shè)計(jì)了ARINC661 仿真和監(jiān)控試驗(yàn)臺(tái),支持開(kāi)展ARINC661系統(tǒng)自動(dòng)化測(cè)試[3],王敬馳等分析了ARINC661 的適用性[4]。電源系統(tǒng)中也有相關(guān)的CDS 應(yīng)用——斷路器顯示與控制(Circuit Breaker Indication and Control,CBIC)系統(tǒng),該系統(tǒng)是一種能在駕駛艙內(nèi)顯示并控制電源系統(tǒng)內(nèi)部所有配電斷路器的系統(tǒng)。在眾多CDS應(yīng)用中,對(duì)CBIC 的分析非常少,且針對(duì)系統(tǒng)內(nèi)部UA間的數(shù)據(jù)同步方法沒(méi)有相關(guān)的研究成果,因此在ARINC661 標(biāo)準(zhǔn)的基礎(chǔ)上,對(duì)CBIC 系統(tǒng)的通信數(shù)據(jù)幀及通信流程進(jìn)行分析,并且對(duì)CBIC 系統(tǒng)內(nèi)部的UA 之間數(shù)據(jù)同步的通信機(jī)制展開(kāi)研究并進(jìn)行仿真實(shí)驗(yàn)有著重要意義。
ARINC661 標(biāo)準(zhǔn)發(fā)表于2001年,其主要目的是規(guī)范CDS 和UA 之間的接口,為航空電子器件與不同類型CDS 之間的相互連接提供了一個(gè)平臺(tái)[5]。該標(biāo)準(zhǔn)將圖形顯示與處理邏輯分離開(kāi),CDS 和UA 之間的聯(lián)系轉(zhuǎn)變?yōu)橐?guī)范自身定義的通信協(xié)議[6]。ARINC661簡(jiǎn)化了顯控開(kāi)發(fā)流程,縮短了開(kāi)發(fā)周期并降低了開(kāi)發(fā)成本[7]。ARINC661 成員系統(tǒng)之間的通信信號(hào)稱為拓展數(shù)據(jù)包(Extended Block Package,EBP),EBP 信號(hào)結(jié)構(gòu)如表1 所示。
表1 EBP信號(hào)結(jié)構(gòu)
ARINC661 雖然規(guī)定了CDS 和UA 之間的通信格式,但對(duì)于使用何種總線進(jìn)行數(shù)據(jù)傳輸并未要求。由于CDS 與航電系統(tǒng)之間通信數(shù)據(jù)量大,且要求傳輸帶寬大、傳輸可靠性高,因此民用飛機(jī)常使用航空電子全雙工交互式以太網(wǎng)進(jìn)行通信[8]。
CBIC 系統(tǒng)主要由CDS 中的顯示器(Display)和UA 組成,Display 集中位于駕駛艙中,顯示電源系統(tǒng)中配電斷路器的名稱、位置信息、狀態(tài)信息等。電源系統(tǒng)內(nèi)的斷路器主要有熱斷路器(Thermal Circuit Breaker,TCB)和電子斷路器(Electrical Circuit Breaker,ECB)。在CBIC 系統(tǒng)中,顯示界面可以顯示TCB 與ECB 的全部狀態(tài)信息。由于TCB 只能進(jìn)行人工插拔的物理斷路器,因此CBIC 只能控制ECB 的狀態(tài)。
CDS 是系統(tǒng)實(shí)現(xiàn)畫面顯示的功能模塊,其主要實(shí)現(xiàn)的功能有顯示加載文件(Definition File,DF)解析、圖形界面繪制、與UA 進(jìn)行通信以及人機(jī)交互[9]。
CDS 與UA 之間的通信都是由事件驅(qū)動(dòng)的,事件包括請(qǐng)求(Request)和通知(Notification)兩種類型,所有的消息都以異步的方式進(jìn)行發(fā)送[10]。CDS 的交互功能主要由光標(biāo)控制系統(tǒng)(Cursor Control Device,CCD)或是鍵盤來(lái)實(shí)現(xiàn),飛行員或維修人員可以通過(guò)CCD 操作顯示界面向CDS 輸入指令。
UA 是駐留電源系統(tǒng)中的用戶應(yīng)用軟件,也是CBIC 系統(tǒng)的邏輯處理中心,其主要實(shí)現(xiàn)的功能有DF文件管理、與CDS 通信、接收CDS 命令、接收外部數(shù)據(jù)、邏輯處理[11]。
UA 接收來(lái)自電源系統(tǒng)內(nèi)部各個(gè)控制器所有的斷路器信息以及CDS 發(fā)送給UA 的Notification 事件和反饋信息,通過(guò)Layer ID 與相應(yīng)的圖層進(jìn)行綁定,控制圖層部件,對(duì)接收到的數(shù)據(jù)與信息分別進(jìn)行處理后,發(fā)送Request 事件給CDS,請(qǐng)求刷新顯示畫面或改變顯示畫面[12]。
為了防止CBIC 中出現(xiàn)單UA 自身故障或通信中斷等特殊情況,電源系統(tǒng)分別為負(fù)責(zé)接收左右兩側(cè)斷路器數(shù)據(jù)的UA 設(shè)置了備份UA,因此CBIC 系統(tǒng)中的UA 數(shù)量為4,該操作增加了顯控系統(tǒng)的冗余度,提高了CBIC 系統(tǒng)數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
CBIC 系統(tǒng)的通信機(jī)制即基于ARINC661 標(biāo)準(zhǔn)的CDS 與UA 間的通信機(jī)制。CDS 與UA 之間使用EBP信息進(jìn)行數(shù)據(jù)傳輸,根據(jù)一定的通信流程實(shí)現(xiàn)駕駛艙斷路器信息的集中顯示。CDS 與UA 之間的異步通信既能節(jié)省帶寬,又能減少延時(shí)[13]。CDS 與UA 間的通信流程如圖1 所示,主要包括通信端口初始化、CDS 與UA 握手建立連接、選擇主UA 進(jìn)行通信、與備份UA 保持連接、切換UA。
圖1 CDS與UA的通信流程圖
飛機(jī)上電后,CDS 的Display加載CBIC系統(tǒng)的DF 文件,將顯示功能載入Display,完成CDS 端的初始化。初始化后,UA 和Display 中的服務(wù)器(Server)之間開(kāi)始以200 ms 的頻率互相發(fā)送握手信號(hào),嘗試建立連接。
當(dāng)Server 和UA 兩者的握手信號(hào)AH 標(biāo)志均為0x01時(shí),認(rèn)定當(dāng)前連接建立成功。如果CDS 或UA在若干周期內(nèi)沒(méi)有接收到對(duì)方發(fā)送的握手信號(hào),則主動(dòng)發(fā)送AH 標(biāo)志為0x00 的空包信號(hào),表明握手不成功。
建立連接后,Server 將從握手成功的UA 中選擇主UA 進(jìn)行數(shù)據(jù)傳輸。當(dāng)UA 接收到的信號(hào)中SA 標(biāo)志為0x01時(shí),按照預(yù)先設(shè)定好的UA 優(yōu)先級(jí)順序選擇主UA,剩下的作為從UA。主UA 向Server 發(fā)送同樣SA 標(biāo)志為0x01 的EBP 信號(hào),剩下的從UA 作為備份UA 向Server發(fā)送SA 標(biāo)志為0x00 的EBP信號(hào)。
當(dāng)主UA 選擇完畢后,機(jī)組人員激活相應(yīng)顯示畫面,Server 將該外部輸入轉(zhuǎn)換成激活事件A661_Layer_Active 發(fā)送至主UA,主UA 接收到激活通知后,發(fā)送部件參數(shù)更新命令A(yù)661_CMD_SET_PARAMETER 和圖層可見(jiàn)性請(qǐng)求A661_Layer_Visible_Request 至Server,實(shí)現(xiàn)駕駛艙CBIC 畫面顯示。
在主UA 支持Display 顯示畫面期間,從UA 和Server 繼續(xù)以200 ms 頻率的EBP 空包信息持續(xù)發(fā)送心跳信號(hào),確保從UA 處于熱備份狀態(tài)。
在Server和主UA 保持?jǐn)?shù)據(jù)傳輸期間,主UA 檢測(cè)到自身發(fā)生故障、檢測(cè)到與Server之間的通信出現(xiàn)連接錯(cuò)誤,或是UA 之間的同步出現(xiàn)故障時(shí),需要將主UA 切換成從UA,重新執(zhí)行源選擇和保持連接這兩個(gè)步驟,繼續(xù)實(shí)現(xiàn)CBIC的相關(guān)顯示和控制功能[14]。
為了在CDS 中顯示出完整的斷路器相關(guān)信息且在UA 切換時(shí)保證數(shù)據(jù)與指令的一致性,必須在CBIC 系統(tǒng)中增加UA 間數(shù)據(jù)同步機(jī)制。該機(jī)制的設(shè)計(jì)主要涉及通信數(shù)據(jù)、通信線路方案設(shè)計(jì)及流程的設(shè)定。
電源系統(tǒng)內(nèi)的UA 所接收的數(shù)據(jù)主要有從左側(cè)一次配電盤箱(Left Distribution Panel,LDP)、RDP、應(yīng)急配電盤箱(Emergency Distribution Panel,EDP)、集成斷路器板(Integrated Circuit Breaker Panel,ICBP)和遠(yuǎn)程配電裝置(Remote Power Distribution Unit,RPDU)發(fā)來(lái)的TCB 和ECB 的位置、狀態(tài)信息以及從CDS 發(fā)來(lái)的斷路器控制指令。
當(dāng)主UA 工作時(shí),必須將外部輸入數(shù)據(jù)、當(dāng)前畫面顯示信息和控制指令與從UA 進(jìn)行同步。外部輸入數(shù)據(jù)主要是飛機(jī)各個(gè)內(nèi)部系統(tǒng)傳感器所采集的設(shè)備狀態(tài)信息等具體數(shù)據(jù),UA 之間的同步需要讓每一個(gè)UA 都擁有其他UA 所有的數(shù)據(jù),防止采集或者傳輸出現(xiàn)數(shù)據(jù)錯(cuò)誤,導(dǎo)致UA 切換時(shí)顯示信息不一致;畫面顯示信息的同步保證主UA 出現(xiàn)故障或通信中斷時(shí),從UA 可以提供和主UA 相同的顯示信息;控制指令同步可以實(shí)現(xiàn)主UA 對(duì)非其管轄設(shè)備的控制。UA 間數(shù)據(jù)同步方案如圖2 所示。
圖2 UA間數(shù)據(jù)同步方案
CBIC 系統(tǒng)中設(shè)定的UA 優(yōu)先級(jí)順序?yàn)閁A1-UA2-UA3-UA4,UA 間數(shù)據(jù)同步流程如圖3 所示。
圖3 UA間數(shù)據(jù)同步流程
飛機(jī)上電后,CDS 與UA 進(jìn)行通信,設(shè)定UA1 為主UA,在所有UA 健康狀況良好的情況下,UA2 向主UA 發(fā)送其所有的斷路器信息,主UA 同步數(shù)據(jù)至其備份機(jī)UA3中,完成UA 數(shù)據(jù)同步的初始化操作。當(dāng)主UA 收到操作斷路器狀態(tài)變更的消息事件時(shí),主UA 對(duì)該消息事件進(jìn)行判斷,發(fā)出命令信號(hào)至相應(yīng)的UA,由對(duì)應(yīng)的UA 進(jìn)行斷路器狀態(tài)控制。當(dāng)收到變更左側(cè)斷路器消息時(shí),主UA 發(fā)出命令指令至左側(cè)RPDU 控制ECB 狀態(tài),更新主UA 接收到的斷路器數(shù)據(jù),將變更后的斷路器狀態(tài)信息發(fā)送給其從機(jī)UA3。當(dāng)收到變更右側(cè)斷路器消息時(shí),主UA 發(fā)出命令指令至UA2,由UA2 命令右側(cè)RPDU 控制ECB 狀態(tài),更新UA2 接收到的斷路器數(shù)據(jù),將變更后的斷路器狀態(tài)信息發(fā)送給其從機(jī)UA4 和主UA,再由主UA發(fā)送該狀態(tài)信息至其從機(jī)UA3。
為了驗(yàn)證UA 間數(shù)據(jù)同步的必要性,模擬CBIC系統(tǒng)的顯示與控制功能,利用兩塊單片機(jī)模擬主從UA,分別為UA1 和UA2、以太網(wǎng)交換機(jī)作為網(wǎng)關(guān)設(shè)備、PC 模擬CBIC 系統(tǒng)中的CDS端,三者之間由網(wǎng)線連接,以此實(shí)現(xiàn)數(shù)據(jù)傳輸與同步的功能,其中傳輸所使用的協(xié)議為UDP 協(xié)議,使用Python 設(shè)計(jì)顯示界面與控制界面[15]。
實(shí)驗(yàn)中的單片機(jī)選擇STM32F407VET6,該單片機(jī)板上帶有以太網(wǎng)通道和32 位計(jì)時(shí)器,RAM 大小為196 kB,時(shí)鐘頻率為168 MHz,滿足需要模擬UDP 通信的要求。由于單片機(jī)上僅有一處網(wǎng)絡(luò)接口,因此需要網(wǎng)關(guān)設(shè)備將兩塊單片機(jī)和PC 端連接起來(lái),該實(shí)驗(yàn)中選擇的是以太網(wǎng)交換機(jī)作為網(wǎng)關(guān)設(shè)備。該測(cè)試環(huán)境的完整硬件連接圖如圖4 所示。
圖4 硬件連接圖
為了達(dá)到更直觀的視覺(jué)效果,該實(shí)驗(yàn)以單片機(jī)上裝載的三個(gè)led 燈來(lái)模擬CBIC 中的斷路器,led 燈設(shè)置有三種狀態(tài),即開(kāi)啟、關(guān)閉和閃爍。單片機(jī)上裝載的第四個(gè)led 燈表示前三個(gè)燈的狀態(tài)是否被更改,燈亮表示該UA 的某個(gè)led 燈狀態(tài)改變,燈滅表示該UA 的led 燈狀態(tài)未改變。
該實(shí)驗(yàn)軟件部分主要使用輕型網(wǎng)際互連協(xié)議(Light Weight Internet Protocol,LWIP)進(jìn)行單片機(jī)之間以及單片機(jī)與PC 端之間的通信。該協(xié)議適合應(yīng)用于資源有限的小型嵌入式系統(tǒng)中,在保持網(wǎng)絡(luò)協(xié)議的傳輸功能的前提下減少RAM 的使用。在單片機(jī)上實(shí)現(xiàn)通信的軟件流程如圖5 所示。
圖5 軟件流程圖
首先需要定義通信鏈路上傳輸?shù)臄?shù)據(jù)格式、模式及需要連接的遠(yuǎn)端IP 地址,此處PC 端IP 地址為169.254.67.187,由于PC 端與兩塊單片機(jī)需要在同一子網(wǎng)中,因此根據(jù)子網(wǎng)掩碼設(shè)置兩塊單片機(jī)的IP地址分別為169.254.67.122 和169.254.67.56。在完成基本定義后,通過(guò)UA_udp_new()創(chuàng)建新的進(jìn)程控制塊(Process Control Block,PCB),在該控制塊中設(shè)定控制塊相關(guān)信息及遠(yuǎn)端設(shè)備端口號(hào)為6000。創(chuàng)建成功后,執(zhí)行UA_udp_connect(),該命令需要提供創(chuàng)建好的PCB 名稱、遠(yuǎn)端IP 地址和端口號(hào)。執(zhí)行命令過(guò)程中,判斷本地設(shè)備的IP 地址是否和遠(yuǎn)端設(shè)備處于同一局域網(wǎng)中,若是,則本地設(shè)備與遠(yuǎn)端設(shè)備綁定連接;若否,則建立連接失敗[16]。在單片機(jī)中設(shè)置接收定時(shí),每200 ms 詢問(wèn)一次是否接收到數(shù)據(jù),若收到則調(diào)用UA_udp_recv(),執(zhí)行接收回調(diào)函數(shù),在單片機(jī)中該函數(shù)設(shè)置為最高優(yōu)先級(jí)。當(dāng)本地設(shè)備有發(fā)送信息的需求時(shí),執(zhí)行發(fā)送模塊命令,首先分配數(shù)據(jù)包空間UA_pbuf_alloc(),通過(guò)UA_pbuf_take()將需要發(fā)送的數(shù)據(jù)復(fù)制到數(shù)據(jù)包中,接著運(yùn)行UA_udp_send()發(fā)送數(shù)據(jù),最后釋放數(shù)據(jù)空間UA_pbuf_free()。在流程中沒(méi)有發(fā)送或接收要求時(shí),開(kāi)啟定時(shí)器,每200 ms詢問(wèn)一次鏈路是否保持連接,若否,則斷開(kāi)連接,通信結(jié)束。
圖6(a)所示為CBIC 系統(tǒng)功能仿真實(shí)驗(yàn)的顯示與控制界面,當(dāng)前PC 端僅連接了一臺(tái)單片機(jī)UA1,UA1 與UA2 之間的同步未完成。上電后,PC 端顯示當(dāng)前與UA1 連接,顯示界面僅顯示出UA1 的三個(gè)led燈狀態(tài),UA2 的三個(gè)led 燈狀態(tài)為空白。
圖6 顯示與控制界面示例
圖6(b)所示為UA1 與UA2 之間完成同步后的顯示界面。上電后,PC 端顯示當(dāng)前與UA1 連接,顯示界面顯示出UA1 與UA2 上的led 燈狀態(tài),可見(jiàn)主從UA 間的數(shù)據(jù)同步可以使顯示界面顯示出完整的數(shù)據(jù),因此驗(yàn)證了UA 間同步是非常必要。
在控制界面選擇需要更改的led 燈、位置、序號(hào)、狀態(tài)等信息,點(diǎn)擊更改狀態(tài)按鈕,可見(jiàn)圖6(c)所示顯示界面中相應(yīng)的led 燈狀態(tài)改變。在硬件環(huán)境中,UA1 的led 燈亮暗情況無(wú)變化,UA2 中的第二個(gè)led燈由關(guān)閉狀態(tài)轉(zhuǎn)換為開(kāi)啟狀態(tài),第四個(gè)led 燈點(diǎn)亮,說(shuō)明該UA 上有l(wèi)ed 燈狀態(tài)發(fā)生變化,驗(yàn)證了CDS 與UA 間傳輸數(shù)據(jù)與指令的一致性。
通過(guò)設(shè)置單片機(jī)的按鈕來(lái)模擬連接中斷,當(dāng)UA1 與PC 端的連接斷開(kāi)后,PC 端與UA2 進(jìn)行連接并傳輸數(shù)據(jù),此時(shí)UA1 與UA2 間依然保持同步。圖6(d)所示為PC 端當(dāng)前連接為UA2,UA1 與UA2 的數(shù)據(jù)同步已完成,此時(shí)顯示界面依然能顯示出完整的數(shù)據(jù),且數(shù)據(jù)與UA 切換前一致。
由于民用飛機(jī)上的用電負(fù)載非常多,需要眾多斷路器去保護(hù),而斷路器則需要人來(lái)控制其開(kāi)啟或關(guān)斷。對(duì)于機(jī)組人員而言,能夠在駕駛艙直觀清晰地獲取斷路器位置及狀態(tài)等信息是必需的,因此提出建立基于ARINC661 標(biāo)準(zhǔn)的CBIC 系統(tǒng)。針對(duì)CBIC 系統(tǒng)中的通信方法進(jìn)行了深入研究,分析了CDS 與UA 間傳輸?shù)臄?shù)據(jù)格式、通信協(xié)議。但在顯示與控制時(shí)需要實(shí)現(xiàn)界面數(shù)據(jù)與控制指令的一致,因此提出了一種UA 間的數(shù)據(jù)同步方案。該方案將主從UA 連接起來(lái),保證了顯示界面數(shù)據(jù)的完整性,考慮了UA 的數(shù)據(jù)備份,提高了CBIC 數(shù)據(jù)傳輸?shù)目煽啃?。最后?duì)完整的CBIC 功能進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證了基于UA 間數(shù)據(jù)同步的通信方法研究的可行性。