武華 石海洋 楊媛媛
摘要:為了解決采用CAN總線的子系統(tǒng)接入航電主干網(wǎng)FC網(wǎng)絡(luò)的問題,提出了一種CAN/FC網(wǎng)關(guān)設(shè)計方案。通過對兩種網(wǎng)絡(luò)的分析和研究,設(shè)計了兩者協(xié)議轉(zhuǎn)換的方法,描述了網(wǎng)關(guān)模塊的工作流程,討論了實時性的設(shè)計。通過驗證表明,該設(shè)計能夠完成CAN網(wǎng)絡(luò)和FC網(wǎng)絡(luò)的互聯(lián),滿足系統(tǒng)要求。
關(guān)鍵詞:CAN;FC;網(wǎng)關(guān);協(xié)議轉(zhuǎn)換
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)12-0049-03
Design and Implementation of CAN/FC GateWay
WU Hua, SHI Hai-yang, YANG Yuan-yuan
(Aeronautical Computing Technique Research Institute,Xian 710065,China)
Abstract: In order to solve the problem by using CAN bus subsystem access avionics backbone FC network,the paper proposed a design scheme of CAN/FC gateway. Through the analysis and research on the two kinds of network, designs a methods of protocol conversion based on the them, describes the work flow of gateway module, discusses the design of the real-time. Experiments show that, the proposed design, can complete the interconnection of CAN network and FC network, can meet the system requirements.
Key words: CAN;FC;gateway;protocol conversion
CAN總線最初主要應(yīng)用于汽車內(nèi)部測量和執(zhí)行部件之間的數(shù)據(jù)通信。隨著CAN總線相關(guān)技術(shù)的日趨成熟,以及車載平臺與機載平臺在某些方面的相似性,其在航空領(lǐng)域的應(yīng)用逐漸得到重視,近年來已經(jīng)開始把CAN總線應(yīng)用到飛機上[1]。
光纖通道(Fibre Channel,F(xiàn)C)協(xié)議具有高速率、低延遲、低位錯率,能夠很好地滿足新型航空電子互連系統(tǒng)的要求,已成為航空電子統(tǒng)一網(wǎng)絡(luò)的主要候選協(xié)議。
在航電系統(tǒng)中,F(xiàn)C網(wǎng)絡(luò)作為主干通信網(wǎng)絡(luò),用于連接各航電子系統(tǒng),但在某些子系統(tǒng)內(nèi),仍采用CAN總線協(xié)議傳輸,因此需要設(shè)計一種用于CAN/FC轉(zhuǎn)換的網(wǎng)關(guān),將這些子系統(tǒng)接入到航電主干網(wǎng)絡(luò)。本文通過對CAN網(wǎng)絡(luò)和FC網(wǎng)絡(luò)協(xié)議及數(shù)據(jù)幀的分析,提出一種CAN/FC網(wǎng)關(guān)的設(shè)計方法,討論了轉(zhuǎn)發(fā)的實時性設(shè)計,完成了FC與CAN的協(xié)議數(shù)據(jù)轉(zhuǎn)換。
1 CAN與FC協(xié)議分析
1.1 CAN總線
CAN的通訊速率最高可達1Mbps,傳輸采用幀結(jié)構(gòu)(0-8字節(jié))。在CAN2.0B的版本協(xié)議中,有兩種不同的幀格式,不同之處為標識符域的長度不同,含有11位標識符的幀稱之為標準幀,而含有29位標識符的幀稱之為擴展幀。無論是哪種幀格式,在報文傳輸時都有四種不同類型的幀:數(shù)據(jù)幀、錯誤幀、遠程幀、過載幀,本文只對標準數(shù)據(jù)幀的處理進行描述。
1.2 光纖通道協(xié)議
針對FC技術(shù)用于航空電子領(lǐng)域的需求,F(xiàn)C-AE提出一種上層協(xié)議FC-AE-ASM,該協(xié)議用于支持航空電子應(yīng)用的處理器、傳感器和顯示器之間確定、安全、低延遲的通信[2]。本文所描述的FC網(wǎng)絡(luò)即采用FC-AE-ASM進行數(shù)據(jù)傳輸。FC協(xié)議共分為5層,具體見表1[3]。
表1 FC協(xié)議分層結(jié)構(gòu)
[FC-4\&定義了光纖通道的應(yīng)用接口,規(guī)定了上層協(xié)議到光纖通道的映射\&FC-3\&對物理和信號(FC-PH)層以上的高層協(xié)議提供了一套通用的公共通信服務(wù)\&FC-2\&規(guī)定了節(jié)點間的數(shù)據(jù)傳輸方式,以及幀格式、幀序列、通信協(xié)議和服務(wù)分類\&FC-1\&規(guī)定了傳輸協(xié)議,包括串行編碼和解碼規(guī)則以及差錯控制\&FC-0\&規(guī)定了連接的物理特性,如傳輸介質(zhì)、傳輸方式和速率\&]
在光纖通道的FC-2層中,定義了幀的標準格式,每個幀標準長度為2148B,其中包括:幀起始標志SOF、幀結(jié)束標志EOF、CRC校驗碼、FC幀頭以及數(shù)據(jù)信息,F(xiàn)C幀的格式定義如圖1所示。
FC-AE-ASM協(xié)議是ASM協(xié)議到FC的映射,要求Tpye字段為0x49,并且將ASM協(xié)議頭映射到FC幀的數(shù)據(jù)字段中。FC-AE-ASM協(xié)議中,每條消息都有唯一的消息ID,根據(jù)消息ID來標識數(shù)據(jù)的內(nèi)容。FC-AE-ASM的幀格式如圖2所示。
1.2.1 網(wǎng)關(guān)協(xié)議轉(zhuǎn)換分析
為了將CAN網(wǎng)絡(luò)接入FC網(wǎng)絡(luò),順利實現(xiàn)兩者的信息交流,必須用網(wǎng)關(guān)連接起來,完成兩者協(xié)議或數(shù)據(jù)之間的轉(zhuǎn)換,也就是將傳輸信息重新封裝且滿足目標網(wǎng)絡(luò)協(xié)議的要求。CAN與FC網(wǎng)關(guān)必須能夠接收和發(fā)送兩個網(wǎng)絡(luò)上的數(shù)據(jù)。CAN網(wǎng)絡(luò)參考ISO模型,自上而下分為三層:應(yīng)用層、數(shù)據(jù)鏈路層和物理層,因此針對兩者網(wǎng)絡(luò)的分層模型,在應(yīng)用層完成CAN網(wǎng)絡(luò)和FC網(wǎng)絡(luò)的數(shù)據(jù)交換即可實現(xiàn)網(wǎng)關(guān)功能,如圖3所示。
CAN與FC數(shù)據(jù)的轉(zhuǎn)換需要通過分析各自的幀結(jié)構(gòu),提取重要信息,設(shè)計轉(zhuǎn)換協(xié)議,實現(xiàn)兩種網(wǎng)絡(luò)的數(shù)據(jù)交換。包括CAN到FC的轉(zhuǎn)換與FC到CAN的轉(zhuǎn)換。兩者通過網(wǎng)關(guān)進行數(shù)據(jù)傳輸?shù)氖疽鈭D如圖4所示。
首先定義用于CAN和FC進行轉(zhuǎn)換的ASM消息ID及其屬性,消息ID作為FC-AE-ASM接收的唯一標識,在FC網(wǎng)絡(luò)配置時,確定用于封裝CAN數(shù)據(jù)的消息ID,以便收到該消息的節(jié)點進行對應(yīng)的處理。
由于CAN數(shù)據(jù)載荷最大為8字節(jié),F(xiàn)C-AE-ASM數(shù)據(jù)載荷最大為2096字節(jié)。因此從CAN到FC的數(shù)據(jù)轉(zhuǎn)換相對簡單,將CAN信息存放在FC-AE-ASM幀的數(shù)據(jù)字段,定義要轉(zhuǎn)發(fā)的CAN數(shù)據(jù)、標識符、幀格式、保留字等內(nèi)容。當網(wǎng)關(guān)接收到CAN數(shù)據(jù)時,將CAN信息按照上述格式填充到FC-AE-ASM幀的數(shù)據(jù)字段,發(fā)送到FC網(wǎng)絡(luò)中。具體定義如圖5所示。
從FC到CAN的轉(zhuǎn)發(fā)相對復雜,F(xiàn)C消息的載荷最大為2096字節(jié),可以存放多幀CAN數(shù)據(jù),考慮到CAN的速率和CAN設(shè)備的數(shù)目等因素,設(shè)計最多轉(zhuǎn)發(fā)256字節(jié)的CAN數(shù)據(jù),并在FC消息中定義CAN數(shù)據(jù)實際長度,標識符、幀類型等內(nèi)容,封裝在FC-AE-ASM數(shù)據(jù)字段的CAN信息定義如下。
當網(wǎng)關(guān)接收到FC消息時,首先從FC-AE-ASM幀的數(shù)據(jù)字段讀取CAN數(shù)據(jù)的實際長度,如果大于8個字節(jié),按照一幀8個字節(jié)的方式,計算CAN的幀數(shù)目,并封裝CAN數(shù)據(jù),分為多次發(fā)送出去,CAN標識符ID按照約定遞增。具體流程如圖7所示。
1.2.2 設(shè)計與驗證
1)CAN/FC網(wǎng)關(guān)模塊設(shè)計
本文研制的CAN/FC網(wǎng)關(guān)模塊,提供FC光接口及CAN總線接口,實現(xiàn)FC與CAN總線數(shù)據(jù)的轉(zhuǎn)換工作。模塊采用FPGA設(shè)計,實現(xiàn)FC協(xié)議處理,F(xiàn)C-MAC、MGT及CAN接口控制等功能,F(xiàn)PGA具備協(xié)處理器硬核,用于完成CAN/FC協(xié)議轉(zhuǎn)換的軟件處理工作,外接光電收發(fā)器實現(xiàn)FC光電信號轉(zhuǎn)換。CAN網(wǎng)絡(luò)接口由CAN控制器SJA1000和CAN收發(fā)器SM1050組成。CAN/FC網(wǎng)關(guān)模塊功能框圖如圖8所示。
通過協(xié)處理器,對CAN和FC接口進行初始化,設(shè)置速率、幀格式、幀類型、校驗碼、過濾碼等參數(shù),設(shè)置FC消息的ASM消息ID、S_ID、D_ID等參數(shù)。
MGT單元和光電收發(fā)器實現(xiàn)FC-1和FC-0層定義的串并轉(zhuǎn)換、8B/10B編碼和物理層功能[4]。
CAN轉(zhuǎn)FC的過程中,CAN數(shù)據(jù)從總線上接收上來后,進入CAN控制器的接收緩沖區(qū),協(xié)處理器的軟件通過查詢,判斷CAN的接收緩沖區(qū)是否有數(shù)據(jù),如果有數(shù)據(jù),讀取CAN數(shù)據(jù)信息,再根據(jù)FC發(fā)送管理邏輯判斷FC緩沖是否有空閑,如果有空閑,將CAN數(shù)據(jù)封裝到FC消息的數(shù)據(jù)中,然后將組織好的FC消息內(nèi)容寫入FC發(fā)送緩沖區(qū),發(fā)送緩沖區(qū)采用環(huán)形緩沖機制,緩沖區(qū)大小為4K字節(jié);數(shù)據(jù)寫入后,更新FC發(fā)送管理邏輯狀態(tài)。FC發(fā)送控制邏輯響應(yīng)發(fā)送緩沖區(qū)狀態(tài)變化,按照先進先出的隊列讀取方式,將當前發(fā)送緩沖區(qū)中的數(shù)據(jù)幀取出提交給FC MAC,并更新發(fā)送緩沖區(qū)狀態(tài)。最終FC數(shù)據(jù)幀由MGT經(jīng)光電轉(zhuǎn)換后發(fā)送至FC網(wǎng)絡(luò)。
FC轉(zhuǎn)CAN的過程中,F(xiàn)C接收控制邏輯負責響應(yīng)并接收FC數(shù)據(jù)幀,將FC幀寫入FC接收緩沖區(qū),接收緩沖區(qū)采用環(huán)形緩沖機制,緩沖區(qū)大小為4K字節(jié);待FC幀接收完成,將狀態(tài)通知FC接收管理邏輯,并報中斷給協(xié)處理器,協(xié)處理器收到FC接收中斷,從當前FC接收緩沖區(qū)將FC數(shù)據(jù)取出,提取CAN的相關(guān)信息,判斷CAN數(shù)據(jù)實際長度,如果需要分幀,按照上一章節(jié)規(guī)則進行處理,將組織好的CAN數(shù)據(jù)寫入CAN控制器的發(fā)送緩沖,并通知其發(fā)送到CAN網(wǎng)絡(luò)。
2)實時性設(shè)計
CAN/FC網(wǎng)關(guān)在應(yīng)用環(huán)境中的典型場景為,F(xiàn)C網(wǎng)絡(luò)按照應(yīng)用任務(wù)規(guī)劃,以不同的周期通過網(wǎng)關(guān)向CAN網(wǎng)絡(luò)發(fā)送數(shù)據(jù),并且CAN網(wǎng)絡(luò)按照最小周期監(jiān)控數(shù)據(jù),對轉(zhuǎn)發(fā)時間要求較高。CAN網(wǎng)絡(luò)則是在有數(shù)據(jù)時,通過網(wǎng)關(guān)向FC網(wǎng)絡(luò)傳遞信息,且時間要求較低。因此協(xié)處理器軟件在CAN/FC轉(zhuǎn)換時,需要考慮兩者的速率相差較大和封裝數(shù)據(jù)多少的問題。FC速率至少為1Gbps,CAN最高為1Mbps,且從FC網(wǎng)絡(luò)轉(zhuǎn)CAN時,最多可以攜帶256字節(jié)的CAN數(shù)據(jù),轉(zhuǎn)發(fā)時,數(shù)據(jù)量不同時間不同。
從CAN網(wǎng)絡(luò)到FC時,數(shù)據(jù)內(nèi)容長度固定,轉(zhuǎn)換可以及時處理。但從FC到CAN的轉(zhuǎn)換時,面臨如下問題。為了保證及時轉(zhuǎn)發(fā)數(shù)據(jù),降低延時,采用中斷接收FC數(shù)據(jù)。當任務(wù)周期重合時,會在短時間內(nèi)突發(fā)接收到大量FC數(shù)據(jù)幀,可能引起丟失中斷,因此在處理FC接收中斷時,需將FC接收緩沖中的數(shù)據(jù)讀空,將已收到的FC數(shù)據(jù)全部轉(zhuǎn)換為CAN數(shù)據(jù)發(fā)出去,從而保證高的響應(yīng)速度和低延遲的轉(zhuǎn)發(fā)傳輸。
3)驗證環(huán)境
模擬實際應(yīng)用環(huán)境,搭建驗證平臺,將CAN測試設(shè)備的數(shù)據(jù)通過CAN/FC網(wǎng)關(guān)模塊,基于FC協(xié)議數(shù)據(jù)幀封裝,通過FC光纖鏈路,經(jīng)過FC專用測試設(shè)備,發(fā)送到FC功能節(jié)點。FC功能節(jié)點按照應(yīng)用任務(wù)周期,向CAN/FC網(wǎng)關(guān)模塊發(fā)送FC消息,網(wǎng)關(guān)提取有用信息、重新組織CAN消息,并發(fā)送到CAN總線上,CAN測試設(shè)備接收。經(jīng)測試CAN的接收時間滿足應(yīng)用要求。驗證環(huán)境如圖9所示。
2 結(jié)束語
本文在深入分析CAN協(xié)議和FC協(xié)議的基礎(chǔ)上,對CAN/FC網(wǎng)關(guān)協(xié)議轉(zhuǎn)換的數(shù)據(jù)封裝進行設(shè)計,結(jié)合網(wǎng)關(guān)模塊的設(shè)計,描述了網(wǎng)關(guān)工作的流程,并對實時性的設(shè)計進行了探討。將網(wǎng)關(guān)連接到實際網(wǎng)絡(luò)上,長時間連續(xù)工作,數(shù)據(jù)在兩種網(wǎng)絡(luò)中傳遞,沒有出現(xiàn)數(shù)據(jù)丟失,且延時滿足系統(tǒng)的要求,進一步驗證了該設(shè)計的可行性和可靠性。
參考文獻:
[1] 馮源,豆海利.CAN總線在航空領(lǐng)域應(yīng)用的探討[J].航空工程進展, 2011,2(2):231-235.
[2] 丁凡,宋麗茹,熊華鋼.FC-AE-ASM 網(wǎng)絡(luò)數(shù)據(jù)發(fā)送控制算法研究[J].電子與信息學報,2009,31(6):1509-1512.
[3] 沙永忠,馮巧寧,劉明,等.光纖通道航電總線數(shù)據(jù)采集器設(shè)計[J].測控技術(shù),2014, 33(3):106-109.
[4] 朱志強.基于光纖通道的LVDS 圖像傳輸技術(shù)研究[J].光通信技術(shù),2013(6):48-51.