,,,
(南京航空航天大學(xué) 自動化學(xué)院,江蘇 210016)
隨著民用客機(jī)的迅猛發(fā)展,飛機(jī)的用電量不斷增多,電氣負(fù)載和電網(wǎng)規(guī)模不斷加大,配電系統(tǒng)通訊總線的數(shù)據(jù)吞吐量也迅速攀升,這就對大型民機(jī)配電系統(tǒng)通訊總線的實(shí)時(shí)性和可靠性提出了更高的要求。傳統(tǒng)的航空通訊總線技術(shù)主要采用ARINC429/629、MIL-STD-1553B、CAN等協(xié)議,這些數(shù)據(jù)通信協(xié)議已經(jīng)廣泛地應(yīng)用在航空電子系統(tǒng)中,但是它們均存在傳輸速率較低的缺點(diǎn),總線帶寬均未超過2 Mbps,數(shù)據(jù)吞吐量上無法滿足今后大型民機(jī)配電系統(tǒng)對于通訊總線的要求[1]。因此,波音和空客公司開發(fā)了高實(shí)時(shí)性、高可靠性和高帶寬的新一代航空總線——AFDX總線。
國內(nèi)外的學(xué)者對AFDX總線做了很多的研究工作,文獻(xiàn)[2]開展了AFDX總線協(xié)議與CAN總線協(xié)議間網(wǎng)關(guān)技術(shù)的研究;文獻(xiàn)[3]開展了如何優(yōu)化AFDX總線端系統(tǒng)之間的傳輸延時(shí)問題的研究;文獻(xiàn)[4]提出了插入額外幀的方法來提高AFDX總線的穩(wěn)定性。然而這些研究都是針對AFDX總線協(xié)議本身的,針對端系統(tǒng)中AFDX總線的應(yīng)用技術(shù)研究開展的較少。
本文以AFDX總線為基礎(chǔ),模擬了大型民機(jī)配電系統(tǒng)的通訊網(wǎng)絡(luò),針對大型民機(jī)配電系統(tǒng)數(shù)據(jù)吞吐量大以及AFDX端系統(tǒng)的底層驅(qū)動不支持LabVIEW軟件的問題,開展了AFDX總線應(yīng)用技術(shù)研究。優(yōu)化了端系統(tǒng)的數(shù)據(jù)處理能力,解決了基于LabVIEW軟件的航電模擬系統(tǒng)與AFDX通訊網(wǎng)絡(luò)的兼容問題和配電系統(tǒng)雙余度控制器通訊的冗余管理問題。
AFDX(Avionics Full Duplex Switched Ethernet)全稱為航空電子全雙工交換式以太網(wǎng),是基于標(biāo)準(zhǔn)以太網(wǎng)技術(shù)(IEEE 802.3),由ARINC664協(xié)議第7部分定義的一種確定性網(wǎng)絡(luò)。
AFDX通訊總線由端系統(tǒng)、交換機(jī)和物理鏈路三部分構(gòu)成星形拓?fù)浼軜?gòu)。AFDX網(wǎng)絡(luò)的傳輸路徑是靜態(tài)的,通過網(wǎng)絡(luò)配置表直接加載實(shí)現(xiàn),可靠性較高。
1)端系統(tǒng):端系統(tǒng)是AFDX通訊網(wǎng)絡(luò)中的重要元件,保證了網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)間安全、可靠的數(shù)據(jù)交換。除了提供硬件接口,端系統(tǒng)還向用戶提供了各種軟件程序接口,實(shí)現(xiàn)用戶數(shù)據(jù)的讀寫和收發(fā)。
2)交換機(jī):交換機(jī)在AFDX網(wǎng)絡(luò)中承擔(dān)著數(shù)據(jù)轉(zhuǎn)發(fā)的功能,負(fù)責(zé)連接各個(gè)端系統(tǒng)。交換機(jī)之間可以通過互相級聯(lián)擴(kuò)展交換端口,便于大型通訊網(wǎng)絡(luò)的組建。
虛擬鏈路(Virtual Link)技術(shù)是AFDX總線的核心技術(shù),其建立了一個(gè)源終端到一個(gè)或多個(gè)目標(biāo)終端的邏輯上的單向連接,并有效的分割帶寬資源,實(shí)現(xiàn)了實(shí)際帶寬的分時(shí)復(fù)用。
在發(fā)送端,采用了流量整形技術(shù)對虛擬鏈路進(jìn)行資源的分配,端系統(tǒng)會預(yù)先為每條虛擬鏈路設(shè)定帶寬分配間隙(Bandwidth Allocation Gap,BAG,代表幀與幀之間發(fā)送的最小時(shí)間間隔)和最大幀長度(Lmax)這兩個(gè)參數(shù),從而限制了每條虛擬鏈路的最大可用帶寬(最大可用帶寬= Lmax/ BAG),保證了每條虛擬鏈路按照預(yù)先設(shè)定時(shí)間間隔進(jìn)行傳輸,避免虛擬鏈路之間的互相沖突。
參考B787的通訊架構(gòu),本文構(gòu)建了大型民機(jī)配電技術(shù)研究系統(tǒng)的電網(wǎng)框圖和通訊網(wǎng)絡(luò)架構(gòu)如圖1所示。
圖1 配電系統(tǒng)通訊網(wǎng)絡(luò)架構(gòu)
匯流條功率控制器(BPCU:Bus Power Control Units)是配電系統(tǒng)控制單元,左右兩臺BPCU冗余管理電網(wǎng),上傳電網(wǎng)狀態(tài)信息至航電系統(tǒng)模擬機(jī);航電系統(tǒng)模擬機(jī)用于模擬航電系統(tǒng)中的通用計(jì)算資源柜(Common Computing Resource Cabinet),匯總和顯示電網(wǎng)狀態(tài)信息,并發(fā)出電網(wǎng)管理指令至BPCU;RPDU(Remote Power Control Units)是遠(yuǎn)程配電控制單元,將電能分配給部分遠(yuǎn)程負(fù)載。
配置4個(gè)AFDX端系統(tǒng)和一臺AFDX交換機(jī)。每個(gè)端系統(tǒng)上均有兩個(gè)物理端口,分別為A網(wǎng)絡(luò)端口和B網(wǎng)絡(luò)端口,并根據(jù)配置表連至交換機(jī)的相應(yīng)端口上,設(shè)置AFDX通訊鏈路規(guī)劃表如表1所示。
針對大型民機(jī)配電系統(tǒng)總線的龐大數(shù)據(jù)傳輸需求,本文采用數(shù)據(jù)壓縮的存儲方式減小數(shù)據(jù)傳輸量,同時(shí)以“位運(yùn)算”為核心思想編寫通訊數(shù)據(jù)處理程序。該方法不僅節(jié)省了通訊數(shù)據(jù)空間,而且減少了數(shù)據(jù)處理程序的代碼量,提高AFDX通訊數(shù)據(jù)的讀寫效率。
表1 AFDX通訊鏈路規(guī)劃表
AFDX通訊每一幀中用戶數(shù)據(jù)的存儲空間為17~1472字節(jié)[3],如果大量的電網(wǎng)數(shù)據(jù)以浮點(diǎn)數(shù)型的模擬量信號進(jìn)行存儲,則每一個(gè)直流電信號會占用4個(gè)字節(jié)、每一個(gè)交流電信號會占用12個(gè)字節(jié),那么每一幀中整個(gè)電網(wǎng)的數(shù)據(jù)存儲量極大,甚至有可能發(fā)生存儲溢出。因此采用了按位存儲的數(shù)據(jù)壓縮方式來處理電網(wǎng)數(shù)據(jù)。
數(shù)據(jù)壓縮技術(shù)的本質(zhì)是數(shù)據(jù)類型的轉(zhuǎn)換,將某一電網(wǎng)部件具體的電信號模擬量數(shù)據(jù)轉(zhuǎn)換為反映該部件工作狀態(tài)的數(shù)字量數(shù)據(jù),并按位對各種部件狀態(tài)進(jìn)行存儲。通過軟件程序和GJB-181A標(biāo)準(zhǔn)判斷采集到的模擬量值反映了電網(wǎng)部件的哪一種工作狀態(tài),并將其轉(zhuǎn)換為有電/沒電、正常/故障這4種狀態(tài)信號進(jìn)行存儲。而對于部分關(guān)鍵的電網(wǎng)部件,則仍以float型的數(shù)據(jù)類型存儲其電信號模擬量。壓縮后每種部件的狀態(tài)僅占2bit的存儲空間,大大節(jié)省了用戶數(shù)據(jù)的存儲空間。
電網(wǎng)數(shù)據(jù)進(jìn)行壓縮后還需要進(jìn)行數(shù)據(jù)打包,才能組成用戶數(shù)據(jù)幀發(fā)送至AFDX總線上。為了能夠有效和快速的實(shí)現(xiàn)數(shù)據(jù)的打包和發(fā)送,本文采用C語言,以“位運(yùn)算”為核心思想編寫了BPCU中AFDX通訊的數(shù)據(jù)處理程序。
首先,由于AFDX通訊數(shù)據(jù)為char型格式的變量,宏定義一個(gè)占用1字節(jié)的基準(zhǔn)值 “#define AFDX_State 0x01”,用于移位運(yùn)算;再定義一個(gè)指針變量指向通訊數(shù)據(jù)數(shù)組的首地址,并將通訊數(shù)據(jù)數(shù)組清零。
然后,根據(jù)通訊數(shù)據(jù)結(jié)構(gòu)表,BPCU對其采集到的電網(wǎng)信息進(jìn)行電能質(zhì)量檢測,并更新通訊數(shù)據(jù):
a)對于某一數(shù)字量數(shù)據(jù),對基準(zhǔn)值進(jìn)行移位操作,再與該數(shù)字量對應(yīng)的數(shù)組元素進(jìn)行或操作,即可刷新數(shù)據(jù)。
b)對于某一模擬量數(shù)據(jù),本文采用memcpy(void*dest, const void *src, size_t n)函數(shù),更新通訊數(shù)據(jù)。
最后,通過通訊接口函數(shù),將更新完數(shù)據(jù)的AFDX通訊數(shù)組SND_AFDX發(fā)送至AFDX通訊總線中,完成通訊數(shù)據(jù)的打包。由于位操作是直接對內(nèi)存進(jìn)行操作,且代碼量較小,提高了端系統(tǒng)對通訊數(shù)據(jù)的讀寫速度,優(yōu)化了端系統(tǒng)的數(shù)據(jù)處理能力。
航電系統(tǒng)模擬機(jī)采用LabVIEW設(shè)計(jì)軟件程序,實(shí)現(xiàn)配電系統(tǒng)的數(shù)據(jù)匯總和電網(wǎng)狀態(tài)顯示的功能,但是AFDX的底層驅(qū)動不支持開發(fā)用于LabVIEW的動態(tài)鏈接庫文件。因此,針對端系統(tǒng)中某些應(yīng)用軟件無法開發(fā)相應(yīng)的AFDX總線驅(qū)動,從而導(dǎo)致該端系統(tǒng)應(yīng)用軟件無法讀取總線信息的問題,本文提出了設(shè)計(jì)AFDX通訊接口程序的方法。該接口程序不僅負(fù)責(zé)讀寫AFDX通信總線上的數(shù)據(jù),還基于套接字(socket)建立了C++程序進(jìn)程與LabVIEW程序進(jìn)程間的本地TCP通訊連接,解決LabVIEW軟件與AFDX總線的兼容問題,通訊程序結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)通訊程序架構(gòu)
接口程序采用雙線程的軟件架構(gòu),從而提高軟件的運(yùn)行效率和通訊轉(zhuǎn)發(fā)的速率。主線程的任務(wù)是接收AFDX通訊數(shù)據(jù)并轉(zhuǎn)發(fā)給LabVIEW程序、完成AFDX板卡的初始化和套接字庫的初始化以及啟動子線程,程序流程圖如圖3所示。子線程的任務(wù)是創(chuàng)建并設(shè)置套接字、接收LabVIEW發(fā)送的數(shù)據(jù)并通過AFDX通訊轉(zhuǎn)發(fā)給BPCU以及管理連接套接字鏈表,程序流程圖如圖4所示。
圖3 主線程程序流程圖
圖4 子線程程序流程圖
子線程中采用select()模型監(jiān)聽套接字的狀態(tài),實(shí)現(xiàn)數(shù)據(jù)的讀取。先定義fd_set結(jié)構(gòu)的套接字集合,并將主線程中創(chuàng)建的監(jiān)聽套接字加入該集合中;隨后調(diào)用select函數(shù)查詢該集合的可讀性,可寫性和錯誤信息;若select函數(shù)返回值大于0,代表某些集合可讀寫或已經(jīng)出錯,再調(diào)用FD_ISSET函數(shù)檢查可讀套接字是否在該集合中;如果該套接字為監(jiān)聽套接字,則調(diào)用accept()函數(shù),返回一個(gè)連接套接字,并將其加入套接字集合和連接套接字鏈表中,如果不是監(jiān)聽套接字而是連接套接字,則調(diào)用recv()函數(shù)接收連接套接字中LabVIEW客戶端發(fā)送的數(shù)據(jù),并將其轉(zhuǎn)發(fā)至AFDX通訊網(wǎng)絡(luò)。
雙線程程序的一個(gè)關(guān)鍵問題就是共享資源的同步訪問,本程序中accept()函數(shù)返回的連接套接字就是一個(gè)共享資源,主線程需要向該socket寫數(shù)據(jù),而子線程需要從該socket讀數(shù)據(jù)。為了解決這個(gè)問題,將該連接套接字存入一個(gè)鏈表中,并通過CCriticalSection類控制該鏈表,構(gòu)建數(shù)據(jù)臨界區(qū),達(dá)到同一時(shí)刻只允許一個(gè)線程訪問該鏈表。同時(shí),還需要定義一個(gè)CSingleLock型的變量,線程通過調(diào)用成員函數(shù)Lock()占用共享資源,資源訪問完后,通過調(diào)用Unlock()釋放該共享資源,保證線程之間對共享資源的互斥訪問。
大型民機(jī)配電系統(tǒng)中,左、右BPCU對重要的電網(wǎng)部分進(jìn)行冗余管理,并都上傳該部分的數(shù)據(jù)至AFDX總線,構(gòu)成雙余度控制系統(tǒng)。為了解決系統(tǒng)中冗余通訊的問題,就需要考慮通訊數(shù)據(jù)優(yōu)先級和數(shù)據(jù)有效性的問題。
AFDX通訊網(wǎng)絡(luò)本身是一個(gè)確定性網(wǎng)絡(luò),并通過虛擬鏈路定義了端系統(tǒng)之間的單向連接。因此端系統(tǒng)能夠分辨出數(shù)據(jù)的來源,從而根據(jù)預(yù)先定義的優(yōu)先級讀取高優(yōu)先級的數(shù)據(jù)。
將端系統(tǒng)的端口設(shè)置為采樣模式以解決數(shù)據(jù)有效性問題。AFDX總線的端口采樣模式能夠與ARINC653(航空電子應(yīng)用軟件標(biāo)準(zhǔn)接口)標(biāo)準(zhǔn)完美地銜接[5],其工作機(jī)制使得采樣端口只能緩存一條信息,當(dāng)AFDX總線上有新的信息到達(dá)時(shí),緩沖區(qū)中舊的信息將被直接覆蓋。同時(shí),每個(gè)采樣端口都和一個(gè)刷新標(biāo)志相關(guān)聯(lián),當(dāng)這個(gè)刷新標(biāo)志有效時(shí),說明當(dāng)前緩沖區(qū)中的信息是最新的[6]。所以,可以通過檢測該刷新標(biāo)志,來判斷每個(gè)端系統(tǒng)發(fā)送的冗余數(shù)據(jù)是否有效。
基于采樣端口的冗余數(shù)據(jù)處理程序流程圖如圖5所示。首先,定義RBPCU數(shù)據(jù)的優(yōu)先級高于LBPCU,隨后程序先讀取來自RBPCU的冗余數(shù)據(jù),并判斷其刷新標(biāo)志是否有效,若有效,直接將該部分?jǐn)?shù)據(jù)寫入套接字并發(fā)送給LabVIEW程序,直接丟棄LBPCU的冗余數(shù)據(jù);若無效,則讀取來自LBPCU的冗余數(shù)據(jù),并判斷其刷新標(biāo)志是否有效,若有效,將該部分?jǐn)?shù)據(jù)寫入套接字發(fā)送給LabVIEW程序;若無效,則仍將RBPCU的數(shù)據(jù)發(fā)送給LabVIEW程序。
圖5 通訊數(shù)據(jù)冗余管理流程圖
系統(tǒng)正常情況下,進(jìn)行通訊網(wǎng)絡(luò)點(diǎn)對點(diǎn)的數(shù)據(jù)收發(fā)實(shí)驗(yàn)。
左右BPCU通過數(shù)據(jù)壓縮和位運(yùn)算處理,形成AFDX通訊數(shù)組。通過BPCU宿主機(jī)中的Tornado2.2調(diào)試環(huán)境實(shí)時(shí)觀測該數(shù)組,如圖6所示。其中SND_AFDX為數(shù)據(jù)發(fā)送數(shù)組,以十六進(jìn)制顯示,RCV_AFDX為數(shù)據(jù)接收數(shù)組,以十進(jìn)制顯示。接口程序?qū)崿F(xiàn)了BPCU與航電系統(tǒng)模擬機(jī)之間的數(shù)據(jù)傳遞,如圖7所示。圖8中顯示的“AFDX接收數(shù)據(jù)Y”為LabVIEW程序接收到的數(shù)據(jù),“AFDX發(fā)送數(shù)據(jù)X”為發(fā)送的數(shù)據(jù)。
圖6 左右BPCU發(fā)送、接收數(shù)據(jù) 圖7 接口程序發(fā)送、接收數(shù)據(jù)
圖8 LabVIEW程序收發(fā)數(shù)據(jù)及狀態(tài)顯示
有圖可得,航電系統(tǒng)模擬機(jī)接口程序轉(zhuǎn)發(fā)的數(shù)據(jù)分別為[0x12,0x 40 , 0x 1, 0x 40, 0x 21 , 0x 8 , 0x 8 , 0x 8]和[18, 16],該組數(shù)據(jù)與通訊網(wǎng)絡(luò)中BPCU程序、和LabVIEW程序收發(fā)的數(shù)據(jù)均一致。點(diǎn)對點(diǎn)互相通訊實(shí)驗(yàn)表明,數(shù)據(jù)發(fā)送、接收正確,接口程序能夠?qū)崿F(xiàn)基于LabVIEW軟件的端系統(tǒng)與AFDX總線的兼容。
上節(jié)的系統(tǒng)通訊實(shí)驗(yàn),系統(tǒng)正常,圖8中LabVIEW程序顯示左右BPCU均工作,無報(bào)警提示。
關(guān)閉右BPCU,進(jìn)行冗余通訊實(shí)驗(yàn),通訊數(shù)組仍如圖6所示。圖9中,接口程序只接受到左BPCU發(fā)送數(shù)據(jù),同時(shí)提示右BPCU節(jié)點(diǎn)數(shù)據(jù)接收失敗,進(jìn)行冗余管理后,將有效數(shù)據(jù)發(fā)送至航電系統(tǒng)模擬機(jī)中,“AFDX接收數(shù)據(jù)Y”為[0x12, 0x 40 , 0x 1, 0x 40, 0x 21 , 0x 8 , 0x 8 , 0x 8],與接口程序發(fā)送有效數(shù)據(jù)一致,同時(shí)根據(jù)接口程序發(fā)送的報(bào)警信息,提示右BPCU的AFDX通訊失敗。由此驗(yàn)證了本文提出的AFDX總線中基于采樣模式的冗余管理方法能夠解決多余度配電系統(tǒng)的冗余通訊問題。
圖9 接口程序接收數(shù)據(jù)及狀態(tài)顯示
本文設(shè)計(jì)了基于AFDX通訊總線的大型民機(jī)配電系統(tǒng)模擬通訊網(wǎng)絡(luò),應(yīng)用了數(shù)據(jù)壓縮和基于“位運(yùn)算”的通訊數(shù)據(jù)處理方式,設(shè)計(jì)了LabVIEW軟件與AFDX總線之間的接口程序,優(yōu)化了AFDX網(wǎng)絡(luò)中端系統(tǒng)的數(shù)據(jù)處理能力。通過大型民機(jī)配電系統(tǒng)AFDX模擬通訊網(wǎng)絡(luò)的數(shù)據(jù)收發(fā)實(shí)驗(yàn),驗(yàn)證了本文所構(gòu)建的大型民機(jī)配電系統(tǒng)AFDX通訊網(wǎng)絡(luò)能夠?qū)崿F(xiàn)電網(wǎng)數(shù)據(jù)的收發(fā),同時(shí)驗(yàn)證了本文所設(shè)計(jì)的接口程序能夠解決基于LabVIEW軟件的端系統(tǒng)與AFDX通訊網(wǎng)絡(luò)的兼容問題。為大型民機(jī)電氣系統(tǒng)的實(shí)驗(yàn)提供了通訊平臺。
參考文獻(xiàn):
[1] 寧新建. 航空機(jī)載計(jì)算機(jī)及其總線[J]. 計(jì)算機(jī)與網(wǎng)絡(luò), 2003(24):54-55,58.
[2] Rejeb N, Mhadhbi I, Salem A K B, et al. Modeling of a heterogeneous AFDX-CAN network gateway[A]. Computer Applications & Research[C]. IEEE, 2014:1-6.
[3] Li J, Guan H, Yao J, et al. Performance Enhancement and Optimized Analysis of the Worst Case End-to-End Delay for AFDX Networks[A].IEEE International Conference on Green Computing and Communications[C]. IEEE Computer Society, 2012:301-310.
[4] Li M.Determinism Enhancement of AFDX Networks via Frame Insertion and Sub- Virtual Link AggregationIndustrial Informatics IEEE Transactions on[J].,2014 , 10 ( 3 ) : 1684-1695 .
[5] 趙永庫,李 貞,唐來勝. AFDX網(wǎng)絡(luò)協(xié)議研究[J]. 計(jì)算機(jī)測量與控制,2012,20(1):8-10,30.
[6] 鐘 杰,何 民,王懷勝,等. AFDX構(gòu)架及協(xié)議分析[J]. 電訊技術(shù),2010,50(1):65-71.
[7] 嚴(yán)仰光,秦海鴻,龔春英,等. 多電飛機(jī)與電力電子[J]. 南京航空航天大學(xué)學(xué)報(bào),2014,46(1):11-18.
[8] 李大鵬,趙明莉,田 園. AFDX端系統(tǒng)中冗余管理的研究和實(shí)現(xiàn)[J]. 電子技術(shù),2012,39(12):10-13.
[9] 陳 昕,周擁軍,萬劍雄. AFDX端系統(tǒng)關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2009,35(5):1-3.
[10] Wang H C,Niu W S. Design and Analysis of AFDX Network Based High-Speed Avionics System of Civil Aircraft[J]. Advanced Materials Research,2012,1655(462).
[11] Wheeler P. Technology for the more and all electric aircraft of the future[A]. IEEE International Conference on Automatica[C]. IEEE, 2016.
[12] Li J, Guan H, Yao J, et al. Performance Enhancement and Optimized Analysis of the Worst Case End-to-End Delay for AFDX Networks[A]. IEEE International Conference on Green Computing and Communications[C]. IEEE Computer Society, 2012:301-310.
[13] Chen X, Xiang X, Wan J. A software implementation of AFDX end system[M]. A Software Implementation of AFDX End System. 2009:558-563.