劉 蕓, 王紅春, 王 兵
(1.中航工業(yè)西安航空計算技術研究所,西安 710068; 2.西安應用光學研究所,西安 710065)
航空電子系統(tǒng)[1]是飛機的重要組成部分,現(xiàn)代信息技術、微電子技術的高速發(fā)展使航空電子設備的智能化程度提高,規(guī)模擴大,各設備之間的信息共享程度也越來越高。航電通信網(wǎng)絡[2]實現(xiàn)機載電子設備之間的互聯(lián)通信功能,需要傳輸各類命令、狀態(tài)數(shù)據(jù)、大量的中間結果以及各類傳感器實時監(jiān)控數(shù)據(jù)。這就對航電通信技術提出了更高的要求傳輸帶寬高、網(wǎng)絡延時確定、網(wǎng)絡傳輸可靠。
傳統(tǒng)的航電通信技術ARINC429和1553B[2],傳輸速率分別為100 kb/s和1 Mb/s,只能實現(xiàn)點對點或共享總線通信方式,已不能滿足現(xiàn)代航電系統(tǒng)規(guī)模擴大以及傳輸信息種類增多后對互聯(lián)高速、分布的數(shù)據(jù)傳輸要求。商用的總線型以太網(wǎng)[3]采用 CSMA/CD方式共享網(wǎng)絡帶寬,雖然傳輸速率較高,但難以保證數(shù)據(jù)傳輸?shù)拇_定性,尤其是在網(wǎng)絡上多個端口同時通信時,由于網(wǎng)絡擁擠,傳輸性能急劇下降。在這種情況下,航空標準化機構——ARINC于2005年定制了AFDX網(wǎng)絡標準[4](Avionics Full Duplex Switched Ethernet,AFDX),該標準由工業(yè)標準以太網(wǎng)經(jīng)過適用性改進形成,支持10(Mb·s-1)/100(Mb·s-1) 可配置的數(shù)據(jù)傳輸速率,具有更高的確定性、可靠性,能夠滿足現(xiàn)代航電系統(tǒng)對網(wǎng)絡傳輸?shù)募夹g要求。國際上,Rockwell Collins公司和Thales公司已研制出AFDX網(wǎng)絡產(chǎn)品,并成功應用到 A350、A380、A400M、C-17 以及波音公司的B787等機型中[5]。目前國內(nèi)對AFDX技術還處于理論研究階段,為開發(fā)具有我國自主知識產(chǎn)權的新一代航電網(wǎng)絡平臺,就需要深入研究該技術并開發(fā)相關軟硬件產(chǎn)品。
本文在深入研究AFDX標準的基礎上,分析AFDX協(xié)議的體系結構及保證數(shù)據(jù)傳輸?shù)摹按_定性”和“可靠性”機制,提出了一種AFDX端系統(tǒng)協(xié)議軟件的設計方法,該方法實現(xiàn)了AFDX協(xié)議規(guī)定的端系統(tǒng)功能,具有確定性好、穩(wěn)定性高的特點,能夠滿足實際應用的技術需求,并為 AFDX端系統(tǒng)產(chǎn)品的研發(fā)提供基礎。
AFDX網(wǎng)絡[4]作為新一代航空電子網(wǎng)絡傳輸技術,具有組網(wǎng)規(guī)模大和靈活性強的特點,適用于大中型飛機的航空電子系統(tǒng)互聯(lián)。
AFDX網(wǎng)絡結構[4]為可拓展的星型拓撲結構,由端系統(tǒng)、交換機和傳輸鏈路組成,每個交換機允許連接若干個端系統(tǒng),多個交換機可以互聯(lián)組成更大的網(wǎng)絡。
AFDX交換機是AFDX網(wǎng)絡的核心,通過基于虛鏈路(Virtual Link,VL)的數(shù)據(jù)轉發(fā)機制,實現(xiàn)了網(wǎng)絡中各個設備之間的數(shù)據(jù)傳輸。相比于普通交換機,AFDX交換機具有過濾功能、故障隔離和靜態(tài)功能等特點。AFDX端系統(tǒng)[4]是 AFDX網(wǎng)絡的重要組成部分,應用于航電系統(tǒng)[6]AFDX網(wǎng)絡的每個設備中,為網(wǎng)絡中的不同設備提供與AFDX交換機連接的統(tǒng)一接口,實現(xiàn)AFDX網(wǎng)絡中各設備之間安全可靠的數(shù)據(jù)傳輸功能,具有全雙工、帶寬高、確定、可靠等特點。AFDX網(wǎng)絡“確定型網(wǎng)絡”的特性主要由端系統(tǒng)實現(xiàn)[4]。圖1所示為AFDX網(wǎng)絡應用的一個實例,圖中多個具有冗余端口的AFDX端系統(tǒng),與兩個互為冗余的AFDX交換機連接,構成雙余度的AFDX航電網(wǎng)絡,實現(xiàn)網(wǎng)絡中多個航電設備之間可靠穩(wěn)定的數(shù)據(jù)通信。該冗余機制可以有效避免單條鏈路失效引起的通信錯誤。
圖1 AFDX網(wǎng)絡結構Fig.1 AFDX network structure
AFDX網(wǎng)絡的確定性通過虛鏈路機制來實現(xiàn)[5]。VL是一個端系統(tǒng)到一個或多個端系統(tǒng)的單向邏輯通路,該機制將一條物理通路劃分為多個互相隔離的虛擬通路,提供各部件之間具有固定帶寬的邏輯隔離,保證了傳輸過程中每條虛鏈路的帶寬不受其他試圖占用帶寬的虛鏈路影響。基于VL的帶寬分配和流量控制機制保證了AFDX網(wǎng)絡數(shù)據(jù)傳輸?shù)拇_定性。
對每條VL,通過定義帶寬分配間隔(Bandwidth Alignment Gap,BAG)和最大幀長度Lmax,為數(shù)據(jù)傳輸分配固定的帶寬(BandWidth=Lmax/GBA)。其中,GBA為同一條VL上相鄰兩幀之間的最小時間間隔,計算公式為:GBA=2kms(k=0,1,…,7)。
流量控制機制保證了數(shù)據(jù)傳輸?shù)拇_定性,該功能由BAG和抖動實現(xiàn),VL的最大抖動J服從
式中:Lmax為最大數(shù)據(jù)幀長度,單位為B;N為傳輸帶寬,單位為b/s。
AFDX網(wǎng)絡的數(shù)據(jù)傳輸還具有固定的技術延時,ARINC664 P7標準規(guī)定數(shù)據(jù)幀的傳輸技術延時小于150 μs加幀延時,即滿足
式中:Ltec為技術延時(單位μs);D為數(shù)據(jù)幀延時(單位 μs)。
AFDX網(wǎng)絡的可靠性[3]通過完整性檢測、數(shù)據(jù)CRC校驗和冗余管理來實現(xiàn)。
完整性檢測功能是保證通信中數(shù)據(jù)幀的順序正確且完整,并丟棄無效幀,該功能通過檢測數(shù)據(jù)幀的序列號是否連續(xù)來實現(xiàn)。發(fā)送端在要發(fā)送的數(shù)據(jù)幀中加入一個SN號,SN號以1為步長逐個遞增,相鄰兩個幀的序列號是連續(xù)的;接收端接收數(shù)據(jù)時,依據(jù)SN號判斷收到的幀是否有效,并構造一個有序的幀流。完整性檢測機制可有效避免數(shù)據(jù)順序混亂而導致的通信錯誤。
數(shù)據(jù)CRC校驗功能保證數(shù)據(jù)幀內(nèi)容的完整性,對無效幀進行丟棄處理。該功能計算整個幀數(shù)據(jù)的校驗和,并與數(shù)據(jù)幀尾部的標準校驗和數(shù)據(jù)進行比較,就可以檢測出該數(shù)據(jù)幀內(nèi)容是否正確。
冗余管理是指數(shù)據(jù)以VL為基礎在兩個獨立的網(wǎng)絡中通信,該機制可以有效抵御AFDX網(wǎng)絡系統(tǒng)因部分連接線路故障、交換機單點故障所引起的通信失效,保證了航空電子系統(tǒng)任務間數(shù)據(jù)通信的安全性和可靠性,其原理如圖2所示。
圖2 AFDX冗余網(wǎng)絡Fig.2 AFDX redundant network
在數(shù)據(jù)發(fā)送過程中,冗余管理負責將需要發(fā)送的數(shù)據(jù)幀復制成相同的兩個,發(fā)送到兩個網(wǎng)絡中;具有冗余管理功能的目的端系統(tǒng)接收數(shù)據(jù)時采用“先到先有效”的策略[6],從不同網(wǎng)絡收到的數(shù)據(jù)幀中選擇一路正確的數(shù)據(jù)提交上層協(xié)議處理。
AFDX端系統(tǒng)的主要功能是為分區(qū)軟件提供安全可靠的數(shù)據(jù)傳輸。ARINC664 P7協(xié)議規(guī)定的端系統(tǒng)通信協(xié)議結構[4]如圖3所示。
AFDX端系統(tǒng)模塊在具體的方案設計中,基于分層設計的思想,按功能將其劃分為4層:MAC層、IP協(xié)議層、UDP協(xié)議層以及主機服務接口層。具體的層次結構及其對應的實現(xiàn)方法如圖4所示。
MAC 層實現(xiàn)鏈路虛通道管理[7-8](VL 管理)和冗余管理(RM)功能。VL管理機制負責將每個MAC對應的物理鏈路劃分為多個獨立的邏輯虛鏈路。冗余管理實現(xiàn)MAC層數(shù)據(jù)幀的冗余處理功能,發(fā)送數(shù)據(jù)時,RM負責將數(shù)據(jù)通過兩個冗余的端口發(fā)送到兩個不同的網(wǎng)絡;接收數(shù)據(jù)時,RM從通過兩個端口收到的不同網(wǎng)絡的兩個數(shù)據(jù)中,選擇一個正確的數(shù)據(jù)提交給上層處理,該功能由硬件和FPGA邏輯部分實現(xiàn)。
IP協(xié)議層[3]提供無連接的數(shù)據(jù)報傳輸機制,對數(shù)據(jù)進行“盡力傳遞”,主要實現(xiàn)數(shù)據(jù)的IP封裝和分片功能,并采用完整性檢測方法來保證數(shù)據(jù)的完整性。IP封裝負責對數(shù)據(jù)添加IP首部和尾部組成標準的IP數(shù)據(jù)包;分片功能實現(xiàn)了數(shù)據(jù)的片劃分、片重組、分片控制功能,使長度大于AFDX數(shù)據(jù)包最大幀長1518字節(jié)的IP數(shù)據(jù)包也能進行傳輸。
圖3 端系統(tǒng)協(xié)議層次結構Fig.3 End system protocol structure
UDP協(xié)議層[3]建立在IP協(xié)議之上,提供無連接的 數(shù)據(jù)報傳輸,實現(xiàn)用戶數(shù)據(jù)報文協(xié)議。為用戶提供3類協(xié)議端口采樣、隊列、SAP,通過端口機制保證了具有相同IP地址的不同進程的數(shù)據(jù)通信。IP層和UDP層功能由驅動軟件實現(xiàn)。
圖4 ES通信層次結構Fig.4 ES communication structure
AFDX端系統(tǒng)協(xié)議軟件在設計[9]中,遵循模塊化、開放式的思想,基于IP/UDP協(xié)議實現(xiàn)了ARINC664 P7規(guī)定的3類端口的數(shù)據(jù)傳輸功能[10]。該軟件支持3類端口的AFDX標準數(shù)據(jù)傳輸,并提供應用接口,可以不用修改軟件內(nèi)部結構,通過接口方便靈活地控制數(shù)據(jù)傳輸過程,實現(xiàn)特定數(shù)據(jù)的發(fā)送和接收功能。3類端口包括采樣、隊列、SAP端口,其中,AFDX采樣和隊列端口與ARINC653協(xié)議[11]規(guī)定的采樣和隊列端口對應,用來進行AFDX網(wǎng)絡內(nèi)的數(shù)據(jù)通信;服務訪問點(Service Access Point,SAP)用來進行TFTP文件傳輸和AFDX與非AFDX系統(tǒng)之間的通信。
AFDX端系統(tǒng)協(xié)議軟件由初始化、加載配置表和數(shù)據(jù)通信這3個功能模塊來實現(xiàn)。
AFDX端系統(tǒng)軟件的初始化模塊實現(xiàn)硬件資源的打開、配置功能以及寄存器配置和存儲空間的分配功能。
待配置的寄存器包括MAC層和鏈路層芯片,配置方法為:按照相應的硬件手冊在配置寄存器中寫入特定的值,使該芯片能夠正常工作。由于芯片地址已映射到系統(tǒng)內(nèi)存,所有對寄存器的操作就成了對內(nèi)存空間的操作。讀寄存器的操作為Data_value=*(unsigned int*)(REG_Base_Addr+offset);寫寄存器的操作為*(unsigned int*)(REG_Base_Addr+offset)=Data_value。
根據(jù)系統(tǒng)應用需求,存儲空間分為控制命令區(qū)和數(shù)據(jù)區(qū)。控制命令區(qū)的存儲內(nèi)容為各個控制寄存器的控制參數(shù),如每個 VL的 BAG、SkewMax、Jitter值等;數(shù)據(jù)區(qū)為端口的發(fā)送和接收數(shù)據(jù)緩沖區(qū),用于存儲各個端口的數(shù)據(jù)內(nèi)容及其標志信息。這里按照端系統(tǒng)的配置表,為每個端口分配特定大小和深度的數(shù)據(jù)緩沖區(qū)。
加載配置表模塊在設計中為用戶提供接口,使用戶能夠按需求創(chuàng)建端系統(tǒng)配置表,并將其加載到端系統(tǒng)的控制命令區(qū),從而控制數(shù)據(jù)的發(fā)送和接收過程。較之于配置表固定的軟件設計,該方法更加靈活,便于用戶根據(jù)不同的需求,實現(xiàn)數(shù)據(jù)傳輸功能。
創(chuàng)建端系統(tǒng)配置表的軟件實現(xiàn)為定義端系統(tǒng)、通信端口、VL的控制參數(shù),并按照實際需求對結構體中的各個成員賦值。對象的結構體應該涵蓋其所有的屬性和參數(shù),例如端口的結構體必須包含端口的IP地址、UDP號、方向、緩沖區(qū)深度、UDP消息長度等信息,VL的結構體中包含VL的方向、BAG、Jittter等信息。
加載配置表軟件將配置表的信息寫入端系統(tǒng)特定的控制區(qū)域。通過循環(huán)查找的方式,將配置表中端系統(tǒng)、端口和VL的全部配置,寫入相應的控制命令區(qū)。在數(shù)據(jù)傳輸過程中,通過這些實現(xiàn)定義的配置參數(shù),就能夠控制數(shù)據(jù)的傳輸速率、傳輸VL、傳輸目的。
數(shù)據(jù)通信功能基于UDP/IP通信協(xié)議[4],該軟件模塊實現(xiàn)以3類端口(采樣、隊列、SAP)為基礎的數(shù)據(jù)發(fā)送和接收功能,并采用了VL管理、完整性檢測、數(shù)據(jù)CRC校驗方法,有效提高了數(shù)據(jù)傳輸?shù)拇_定性和穩(wěn)定性。
軟件的數(shù)據(jù)發(fā)送單元負責將數(shù)據(jù)通過端口發(fā)送到鏈路層VL緩沖區(qū)。
數(shù)據(jù)發(fā)送的軟件設計方法為:主機發(fā)送數(shù)據(jù)時,UDP層軟件將要發(fā)送的數(shù)據(jù)構造成一個UDP數(shù)據(jù)報,存儲在UDP端口的發(fā)送緩存中,并更新發(fā)送緩沖區(qū)的讀寫指針,該層支持SAP、采樣和隊列3類端口的數(shù)據(jù)發(fā)送。IP層軟件的功能通過創(chuàng)建發(fā)送任務來實現(xiàn),該任務以查詢或中斷的方式運行,當檢測到UDP的端口發(fā)送緩沖區(qū)有數(shù)據(jù)要發(fā)送時,將UDP數(shù)據(jù)報劃分為一個或多個IP數(shù)據(jù)報,并添加IP首部校驗和、數(shù)據(jù)CRC校驗以及SN號,提交給指定的硬件鏈路VL發(fā)送,如果沒有則不做任何操作。通過該數(shù)據(jù)發(fā)送機制,主機應用就可以調(diào)用3類端口的數(shù)據(jù)發(fā)送函數(shù),實現(xiàn)AFDX端系統(tǒng)的數(shù)據(jù)發(fā)送功能。具體的數(shù)據(jù)發(fā)送過程如圖5所示。
圖5 AFDX端系統(tǒng)協(xié)議軟件數(shù)據(jù)發(fā)送流程Fig.5 Data transmission flow of AFDX end system protocol software
軟件的數(shù)據(jù)接收單元負責將數(shù)據(jù)從鏈路層VL緩沖區(qū)接收到應用層,提交給對應的應用程序。
數(shù)據(jù)接收的軟件設計方法為:IP協(xié)議層軟件負責從MAC層接收數(shù)據(jù),通過創(chuàng)建接收任務來實現(xiàn),該任務以查詢或中斷的方式運行,當檢測到MAC層的VL緩沖區(qū)收到數(shù)據(jù)時,就接收該數(shù)據(jù)并檢查其SN號、CRC校驗和分片標志。如果SN號正確、CRC校驗正確且分片標志有效,將數(shù)據(jù)報根據(jù)分片標志進行重構提交給UDP層,即解析出數(shù)據(jù)的IP目的地址和UDP目的地址,并將其拷貝到對應UDP端口的接收緩沖區(qū)中,如果SN號、CRC校驗值或SN號任何一項有誤,就對該數(shù)據(jù)做丟棄處理;如果MAC層沒有收到數(shù)據(jù)則不做任何操作。UDP層軟件負責接收UDP數(shù)據(jù)報,通過比較端口的讀寫指針檢測端口是否有新數(shù)據(jù),如果有新數(shù)據(jù),就將UDP數(shù)據(jù)報從端口接收緩沖區(qū)中拷貝出來,提交給上面的應用層軟件,并更新UDP端口接收緩沖區(qū)的讀寫指針;否則返回“端口無新數(shù)據(jù)”標志。通過該接收機制,主機應用就可以調(diào)用3類端口的數(shù)據(jù)接收函數(shù)來實現(xiàn)AFDX端系統(tǒng)的數(shù)據(jù)接收功能。具體的數(shù)據(jù)接收過程如圖6所示。
圖6 AFDX端系統(tǒng)協(xié)議軟件數(shù)據(jù)接收流程Fig.6 Data reception flow of AFDX end system protocol software
AFDX端系統(tǒng)協(xié)議軟件的測試工作以ARINC664 P7協(xié)議為基礎,基于國際權威機構德國AIM公司的端系統(tǒng)測試平臺進行,該端系統(tǒng)協(xié)議軟件通過了其全部測試項。這證明該軟件實現(xiàn)了ARINC664 P7協(xié)議規(guī)定的端系統(tǒng)功能,具有良好的確定性和可靠性,滿足航電系統(tǒng)實際應用的技術需求。
ARINC664 P7協(xié)議嚴格規(guī)定了AFDX端系統(tǒng)的數(shù)據(jù)傳輸技術延時范圍。
端系統(tǒng)技術延時測試方法為:通過應用層構造測試用例,連續(xù)發(fā)送和接收不同長度(1518 B、1000 B、500 B、64 B)、不同個數(shù)(10、50、500)的數(shù)據(jù)幀序列,多次測試并觀察測試結果,將第 2、8、20、100、200、400 幀的傳輸延時記錄于表1中。測試結果的最大值和最小值均滿足理論要求,表明數(shù)據(jù)幀傳輸延時的實際值小于式(2)規(guī)定的理論值,該端系統(tǒng)協(xié)議軟件滿足協(xié)議規(guī)定的傳輸技術延時要求。
表1 AFDX端系統(tǒng)數(shù)據(jù)傳輸技術延時Table 1 Data transmission technology latency of AFDX end system μs
ARINC664 P7協(xié)議規(guī)定AFDX端系統(tǒng)支持數(shù)據(jù)的線速傳輸,即數(shù)據(jù)幀能夠以最小的幀間隔0.96 μs正確傳輸。
測試方法為:在應用層以全速傳輸不同長度、不同個數(shù)(N)的幀序列,測量VL上幀間隔,并記錄幀間隔達到0.96 μs的數(shù)據(jù)幀個數(shù)(Nv),計算該計數(shù)與整體的比率P。當幀序列的個數(shù)為N時,第1個幀為起始幀,從第2個幀開始才能測量幀間隔,即該序列只有N-1個幀間隔,即P的計算式為
多次測量并記錄測試結果,該結果表明,100%的測試數(shù)據(jù)幀幀間隔達到0.96 μs,端系統(tǒng)支持協(xié)議規(guī)定的數(shù)據(jù)線速傳輸功能。
本文介紹了AFDX端系統(tǒng)的整體結構,深入分析AFDX“確定性”和“可靠性”的數(shù)據(jù)傳輸機制,提出了一個可行的AFDX端系統(tǒng)協(xié)議軟件設計方法。該方法模塊化的設計思想、分層的體系架構,以及開放應用接口的理念,增加了軟件的易擴展性和靈活性。充分的測試表明,該軟件設計方法具有良好的確定性和可靠性,滿足具體應用的需求,填補了國內(nèi)AFDX網(wǎng)絡技術的空白,對我國研發(fā)具有自主知識產(chǎn)權、并適用于現(xiàn)代航電系統(tǒng)的AFDX網(wǎng)絡平臺具有重要意義。
[1] 伊恩·莫伊爾.民用航空電子系統(tǒng)[M].范秋麗,譯.北京:航空工業(yè)出版社,2009.
[2] 支超有.機載數(shù)據(jù)總線技術及其應用[M].北京:國防工業(yè)出版社,2009.
[3] STEVENS W R.TCP/IP 詳解[M].范建華,譯.北京:機械工業(yè)出版社,2000.
[4] ARINC664P7.Aircraft data networks,part 7:Avionics Full Duplex switched ethernet(AFDX)network[S].ARINC Airlines Electronic Engineering Committee,2005.
[5] 吳建魯,楊福彪,劉煜,等.AFDX技術特點及在艦載武器系統(tǒng)中的應用分析[J].指揮控制與仿真,2010,32(4):112-115.
[6] 李哲,田澤,張榮華.AFDX網(wǎng)絡中 SkewMax的研究[J].計算技術與發(fā)展,2010,20(6):249-253.
[7] 任向隆,馬捷中,翟正軍.基于FPGA的AFDX端系統(tǒng)協(xié)議棧虛鏈路層的研究與實現(xiàn)[J].計算機測量與控制,2010,18(1):157-160.
[8] 許燕婷.AFDX端系統(tǒng)協(xié)議棧虛擬鏈路層分析及仿真研究[D].上海:上海交通大學,2011.
[9] KHAZALI L,BOULAIS M,COLE P.AFDX software network stack implementation — Practical lessons learned[C]//Digital avionics systems conference,DASC'09,IEEE/AIAA 28th,2009:1-5.
[10] 陳昕,周擁軍,萬劍雄.AFDX端系統(tǒng)關鍵技術的研究與實現(xiàn)[J].計算機工程,2009,35(5):1-3.
[11] ARINC653.Avionics application software standard interface[S].ARINC Airlines Electronic Engineering Committee,2003.