《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的EtherCAT協(xié)議鏈路冗余研究
基于FPGA的EtherCAT協(xié)議鏈路冗余研究
2017年電子技術(shù)應用第9期
黃 兵,豐大軍,劉云龍,王 皓
華北計算機系統(tǒng)工程研究所,北京100083
摘要: EtherCAT是一種實時工業(yè)以太網(wǎng)協(xié)議,使用鏈路冗余技術(shù)是實現(xiàn)鏈路穩(wěn)定性和可靠性的重要手段。介紹了基于FPGA的EtherCAT鏈路冗余原理,設計通過FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換,從而實現(xiàn)EtherCAT的鏈路冗余。通過測試驗證了此方法的可行性,增加了EtherCAT系統(tǒng)的可靠性與可維護性。
關鍵詞: EtherCAT FPGA 冗余
中圖分類號: TP23
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.179010
中文引用格式: 黃兵,豐大軍,劉云龍,等. 基于FPGA的EtherCAT協(xié)議鏈路冗余研究[J].電子技術(shù)應用,2017,43(9):80-82,86.
英文引用格式: Huang Bing,F(xiàn)eng Dajun,Liu Yunlong,et al. Research on link redundancy of EtherCAT protocol based on FPGA[J].Application of Electronic Technique,2017,43(9):80-82,86.
Research on link redundancy of EtherCAT protocol based on FPGA
Huang Bing,F(xiàn)eng Dajun,Liu Yunlong,Wang Hao
National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: EtherCAT is a real-time industrial Ethernet protocol. The use of link redundancy is an important means of achieving link stability and reliability. This article describes the FPGA based EtherCAT link redundancy principle. This design uses FPGA to achieve the automatically switch of the communication link and redundant link between master station and slave station,or the slave and the slave,in order to achieve the link redundancy of EtherCAT. The feasibility of this method is verified by testing.
Key words : EtherCAT;FPGA;redundancy

0 引言

    EtherCAT最初是由德國的倍福公司基于標準以太網(wǎng)技術(shù)提出的工業(yè)以太網(wǎng),是一種具有靈活網(wǎng)絡拓撲結(jié)構(gòu)的技術(shù)[1]。EtherCAT技術(shù)具有速度快、同步性能好、支持多種拓撲結(jié)構(gòu)、采用標準以太網(wǎng)幀、帶寬利用率高等優(yōu)點[2]。工業(yè)以太網(wǎng)中冗余技術(shù)是提高以太網(wǎng)系統(tǒng)可靠性和可維護性最有效的手段之一[3]。鏈路冗余是應對網(wǎng)口故障(包括主站網(wǎng)卡本身故障和連接)及鏈路故障(指從站節(jié)點之間的鏈路存在斷開情況,如網(wǎng)線斷開)的補救措施。通常在對系統(tǒng)穩(wěn)定運行要求比較高的情況下,就需要應用鏈路冗余技術(shù)。鏈路冗余是一種單一容錯機制,即如果鏈路在某一處發(fā)生故障,依然可以與各個從站保持數(shù)據(jù)的傳輸。當通信恢復時主要的通信方向也會恢復。如果不止一個地方發(fā)生通信中斷,所有的必須在發(fā)生另一個錯誤之前恢復。文獻[4]中介紹了一種工業(yè)以太網(wǎng)EtherCAT冗余和熱插拔技術(shù),此種方法采用環(huán)型冗余結(jié)構(gòu),將最后一個 ESC節(jié)點連接到主站,此種方法雖然可以解決單點故障,但是在故障修理時需要斷電,且不能解決多點故障。為了解決此問題,本文通過介紹基于FPGA的EtherCAT的鏈路冗余原理,設計通過FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換,從而實現(xiàn)EtherCAT的鏈路冗余,增加了EtherCAT 系統(tǒng)的可靠性與可維護性 。

1 EtherCAT原理

    EtherCAT是一種實時工業(yè)以太網(wǎng)技術(shù),采用主從站結(jié)構(gòu),如圖1所示。主站發(fā)送以太網(wǎng)幀給各從站,從站通過尋址從數(shù)據(jù)幀中抽取對應的數(shù)據(jù)或?qū)?shù)據(jù)插入數(shù)據(jù)幀,然后將該數(shù)據(jù)幀傳輸?shù)较乱粋€EtherCAT從站。最后一個EtherCAT從站發(fā)回經(jīng)過完全處理的報文,并由第1個從站作為響應報文發(fā)送給主站。主站使用標準的以太網(wǎng)接口卡或具有以太網(wǎng)接口的嵌入式工業(yè)控制計算機,EtherCAT從站使用專用的從站控制芯片ESC,采取接收轉(zhuǎn)發(fā)機制,以太網(wǎng)幀可以雙向通行,但只有以太網(wǎng)幀由下行電報方向進入時,相應的報文才能得到處理,如果指定轉(zhuǎn)發(fā)的網(wǎng)口未連接,ESC自動將以太網(wǎng)幀沿原入口返回。

ck4-t1.gif

    EtherCAT數(shù)據(jù)直接使用以太網(wǎng)數(shù)據(jù)幀,使用的幀類型為0x88A4。EtherCAT數(shù)據(jù)包括2 B的數(shù)據(jù)頭和44 B~1 498 B的數(shù)據(jù)。數(shù)據(jù)區(qū)由一個或多個EtherCAT子報文組成,每個子報文對應獨立的設備和從站存儲區(qū)。每個EtherCAT 子報文包括子報文頭、數(shù)據(jù)域和相應的工作計數(shù)器(Working Counter,WKC),子報文尋址到從站節(jié)點并交換數(shù)據(jù)后,工作計數(shù)器將被增加,用以記錄該子報文的處理狀態(tài)。子報文頭中,8 bit命令字節(jié)指定了子報文類型(讀寫類型,尋址類型);8 bit索引號給出子報文編碼。32 bit的子報文地址指定了對從站的操作地址,尋址類型定義了尋址方式;8 bit長度用以指示報文數(shù)據(jù)區(qū)的字節(jié)數(shù);R為4 bit的保留位;4 bit M表示本報文是否為最后一個報文;16 bit中斷目前保留。

2 基于FPGA的鏈路冗余原理

    在EtherCAT通信鏈路運行過程中,可能會存在如下幾種故障:

    (1)網(wǎng)口故障,包括主站網(wǎng)卡本身故障和連接。

    (2)鏈路故障,指從站節(jié)點之間的鏈路存在斷開情況,比如網(wǎng)線斷開。

    為了能夠增加EtherCAT系統(tǒng)的可靠性及可維護性,在EtherCAT主站與從站的鏈路之間通過FPGA增加了冗余功能,每一條鏈路都有對應的冗余鏈路作為備用。鏈路1出現(xiàn)故障時,可以通過FPGA自動切到冗余鏈路1;鏈路2出現(xiàn)故障時,通過FPGA自動切到冗余鏈路2。這樣如果鏈路在某一處發(fā)生故障,依然可以與各個從站保持數(shù)據(jù)的傳輸。當通信恢復時主要的通信方向也會恢復,極大地增強了系統(tǒng)的穩(wěn)定性和可維護性。

    如圖2所示,EtherCAT主從站網(wǎng)絡構(gòu)成框圖中,冗余卡為基于FPGA的鏈路冗余卡,通過通信鏈路1與主機冗余型CPU連接,冗余鏈路1與備機冗余型CPU連接,實現(xiàn)主從站之間的主備切換冗余。通過通信鏈路2與下一級冗余卡的鏈路1連接,冗余鏈路2與下一級冗余卡的冗余鏈路1連接,實現(xiàn)EtherCAT的鏈路冗余。

ck4-t2.gif

3 鏈路冗余的FPGA實現(xiàn)方法

    FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換功能。

    如圖3所示,F(xiàn)PGA的4個接口0、1、2、3與4條通信鏈路通過MII(Media Independent Interface)方式連接。FPGA的4個接口分為2組,接口0和接口1為1組,接口2和接口3為1組,兩組的邏輯相同?,F(xiàn)以接口0和接口1說明冗余的切換方式:

ck4-t3.gif

    (1)FPGA復位狀態(tài)為接口;

    (2)運行過程中,通信鏈路1狀態(tài)不正常,冗余鏈路1正常,接口1切換為接口0;

    (3)冗余鏈路1正常時,通信鏈路1恢復正常,此時不切換,還是連接接口1;

    (4)冗余鏈路1不正常,通信鏈路1恢復正常,接口2切換為接口1運行。

    接口2和接口3的切換方式與接口0和接口1的切換方式相同。

    在FPGA實現(xiàn)過程中,主要是通過判別兩個接口的PHY(Physical Layer)的數(shù)據(jù)連接信號(linkmii)和數(shù)據(jù)有效信號(rx_dv)判斷鏈路的狀態(tài)。其中,接口0的數(shù)據(jù)連接信號為linkmii0,數(shù)據(jù)有效信號為rx_dv0,接口1的數(shù)據(jù)連接信號為linkmii1,數(shù)據(jù)有效信號為rx_dv1。因為PHY在數(shù)據(jù)傳輸過程中,rx_dv信號只在數(shù)據(jù)有效時拉高,因此,需要檢測時間閾值(cnt_time0、cnt_time1),即兩次rx_dv時間差,超過時間閾值(cnt_time0=1、cnt_time1=1)認為此接口無數(shù)據(jù)連接。接口0和接口1的切換條件判斷為:

    (1)當linkmii0為低,linkmii1為高,選擇為接口0;

    (2)當linkmii0為高,linkmii1為低,選擇為接口1;

    (3)以前狀態(tài)為接口1,當linkmii0為低,linkmii1為低,rx_dv0=1,cnt_time0=0,則選擇為接口0;

    (4)以前狀態(tài)為接口1,當linkmii0為低,linkmii1為低,rx_dv1=1,cnt_time1=0,則選擇為接口0;

    (5)以前狀態(tài)為接口0,當linkmii0為低,linkmii1為低,rx_dv1=1,cnt_time0=1,則選擇為接口0;    

    (6)以前狀態(tài)為接口1,當linkmii0為低,linkmii1為低,rx_dv0=1,cnt_time1=1,則選擇為接口0。

    接口2和接口3的切換選擇邏輯與此類似。

4 功能測試

    為了驗證此鏈路冗余方法的可行性,搭建了以ALTERA公司的Cyclone III EP3C40E484i為核心的測試系統(tǒng),此芯片有332個IO管腳,39 600個LE,可滿足設計的要求。根據(jù)FPGA實現(xiàn)冗余鏈路的要求,現(xiàn)根據(jù)測試圖型將測試敘述如下:

    (1)圖4中,0時刻前為通信鏈路和冗余鏈路都沒有連接到冗余卡上(linkmii0=1,linkmii1=1),此時默認選擇接口0,0時刻后冗余鏈路連接到冗余卡上(linkmii1=0,linkmii0=1),此時切換為接口1。

ck4-t4.gif

    (2)圖5中,0時刻前為冗余鏈路連接到冗余卡上(linkmii1=0,linkmii0=1),通道選擇為接口1,0時刻后,冗余鏈路從冗余卡上斷開(linkmii1=1,linkmii0=1),此時通道回到默認接口1。

ck4-t5.gif

    (3)圖6中,0時刻前為通信鏈路與冗余鏈路都連接到冗余卡上(linkmii0=0,linkmii1=0),通道選擇為接口1,但此時通信鏈路有數(shù)據(jù)有效信號(rx_dv0=1),冗余鏈路沒有數(shù)據(jù)有效信號(rx_dv1=0),此時通道切換到接口0。

ck4-t6.gif

    (4)圖7中,0時刻前為通信鏈路與冗余鏈路都連接到冗余卡上(linkmii0=0,linkmii1=0),通道選擇為接口0,但此時冗余鏈路有數(shù)據(jù)有效信號(rx_dv1=1),通信鏈路沒有數(shù)據(jù)有效信號(rx_dv0=0),此時通道切換到接口1。

ck4-t7.gif

5 結(jié)論

    本文首先介紹EtherCAT的基本原理,以增加EtherCAT系統(tǒng)穩(wěn)定性和可維護性為出發(fā)點,給出了基于FPGA的EtherCAT鏈路原理,設計通過FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換,從而實現(xiàn)EtherCAT的鏈路冗余。通過測試驗證此方法的可行性,增加了EtherCAT 系統(tǒng)的可靠性與可維護性。

參考文獻

[1] Geon Yoon,Dae H yun Kwon,Soon Chang Kon,et al.Ring topology-based redundancy Ethernet for industrial network[C].SICE-ICASE International Joint Conference,2006.

[2] EtherCAT Technology Group(ETG).EtherCAT:the Ethernet fieldbus[J].PC Control,2005(7):14-19.

[3] Madren Frank.Redundancy with standards in industrial Ethernet LANs[J].Engineer IT,2006:72-75.

[4] 郇極,肖文磊,劉艷強.工業(yè)以太網(wǎng)EtherCAT冗余和熱插拔技術(shù)[J].北京航空航天大學學報,2009(2):38-41.



作者信息:

黃  兵,豐大軍,劉云龍,王  皓

(華北計算機系統(tǒng)工程研究所,北京100083)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。