文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.179010
中文引用格式: 黃兵,,豐大軍,,劉云龍,等. 基于FPGA的EtherCAT協(xié)議鏈路冗余研究[J].電子技術(shù)應(yīng)用,,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.
0 引言
EtherCAT最初是由德國的倍福公司基于標(biāo)準(zhǔn)以太網(wǎng)技術(shù)提出的工業(yè)以太網(wǎng),,是一種具有靈活網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的技術(shù)[1],。EtherCAT技術(shù)具有速度快、同步性能好,、支持多種拓?fù)浣Y(jié)構(gòu),、采用標(biāo)準(zhǔn)以太網(wǎng)幀、帶寬利用率高等優(yōu)點(diǎn)[2],。工業(yè)以太網(wǎng)中冗余技術(shù)是提高以太網(wǎng)系統(tǒng)可靠性和可維護(hù)性最有效的手段之一[3],。鏈路冗余是應(yīng)對(duì)網(wǎng)口故障(包括主站網(wǎng)卡本身故障和連接)及鏈路故障(指從站節(jié)點(diǎn)之間的鏈路存在斷開情況,如網(wǎng)線斷開)的補(bǔ)救措施,。通常在對(duì)系統(tǒng)穩(wěn)定運(yùn)行要求比較高的情況下,,就需要應(yīng)用鏈路冗余技術(shù)。鏈路冗余是一種單一容錯(cuò)機(jī)制,,即如果鏈路在某一處發(fā)生故障,,依然可以與各個(gè)從站保持?jǐn)?shù)據(jù)的傳輸。當(dāng)通信恢復(fù)時(shí)主要的通信方向也會(huì)恢復(fù),。如果不止一個(gè)地方發(fā)生通信中斷,,所有的必須在發(fā)生另一個(gè)錯(cuò)誤之前恢復(fù)。文獻(xiàn)[4]中介紹了一種工業(yè)以太網(wǎng)EtherCAT冗余和熱插拔技術(shù),,此種方法采用環(huán)型冗余結(jié)構(gòu),,將最后一個(gè) ESC節(jié)點(diǎn)連接到主站,此種方法雖然可以解決單點(diǎn)故障,,但是在故障修理時(shí)需要斷電,,且不能解決多點(diǎn)故障。為了解決此問題,,本文通過介紹基于FPGA的EtherCAT的鏈路冗余原理,,設(shè)計(jì)通過FPGA實(shí)現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動(dòng)切換,,從而實(shí)現(xiàn)EtherCAT的鏈路冗余,,增加了EtherCAT 系統(tǒng)的可靠性與可維護(hù)性 。
1 EtherCAT原理
EtherCAT是一種實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù),,采用主從站結(jié)構(gòu),,如圖1所示,。主站發(fā)送以太網(wǎng)幀給各從站,從站通過尋址從數(shù)據(jù)幀中抽取對(duì)應(yīng)的數(shù)據(jù)或?qū)?shù)據(jù)插入數(shù)據(jù)幀,,然后將該數(shù)據(jù)幀傳輸?shù)较乱粋€(gè)EtherCAT從站,。最后一個(gè)EtherCAT從站發(fā)回經(jīng)過完全處理的報(bào)文,并由第1個(gè)從站作為響應(yīng)報(bào)文發(fā)送給主站,。主站使用標(biāo)準(zhǔn)的以太網(wǎng)接口卡或具有以太網(wǎng)接口的嵌入式工業(yè)控制計(jì)算機(jī),,EtherCAT從站使用專用的從站控制芯片ESC,采取接收轉(zhuǎn)發(fā)機(jī)制,,以太網(wǎng)幀可以雙向通行,,但只有以太網(wǎng)幀由下行電報(bào)方向進(jìn)入時(shí),相應(yīng)的報(bào)文才能得到處理,,如果指定轉(zhuǎn)發(fā)的網(wǎng)口未連接,,ESC自動(dòng)將以太網(wǎng)幀沿原入口返回。
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ū)由一個(gè)或多個(gè)EtherCAT子報(bào)文組成,,每個(gè)子報(bào)文對(duì)應(yīng)獨(dú)立的設(shè)備和從站存儲(chǔ)區(qū),。每個(gè)EtherCAT 子報(bào)文包括子報(bào)文頭、數(shù)據(jù)域和相應(yīng)的工作計(jì)數(shù)器(Working Counter,,WKC),,子報(bào)文尋址到從站節(jié)點(diǎn)并交換數(shù)據(jù)后,工作計(jì)數(shù)器將被增加,,用以記錄該子報(bào)文的處理狀態(tài),。子報(bào)文頭中,8 bit命令字節(jié)指定了子報(bào)文類型(讀寫類型,,尋址類型),;8 bit索引號(hào)給出子報(bào)文編碼。32 bit的子報(bào)文地址指定了對(duì)從站的操作地址,,尋址類型定義了尋址方式,;8 bit長度用以指示報(bào)文數(shù)據(jù)區(qū)的字節(jié)數(shù);R為4 bit的保留位,;4 bit M表示本報(bào)文是否為最后一個(gè)報(bào)文,;16 bit中斷目前保留。
2 基于FPGA的鏈路冗余原理
在EtherCAT通信鏈路運(yùn)行過程中,,可能會(huì)存在如下幾種故障:
(1)網(wǎng)口故障,,包括主站網(wǎng)卡本身故障和連接。
(2)鏈路故障,,指從站節(jié)點(diǎn)之間的鏈路存在斷開情況,,比如網(wǎng)線斷開,。
為了能夠增加EtherCAT系統(tǒng)的可靠性及可維護(hù)性,在EtherCAT主站與從站的鏈路之間通過FPGA增加了冗余功能,,每一條鏈路都有對(duì)應(yīng)的冗余鏈路作為備用,。鏈路1出現(xiàn)故障時(shí),可以通過FPGA自動(dòng)切到冗余鏈路1,;鏈路2出現(xiàn)故障時(shí),通過FPGA自動(dòng)切到冗余鏈路2,。這樣如果鏈路在某一處發(fā)生故障,,依然可以與各個(gè)從站保持?jǐn)?shù)據(jù)的傳輸。當(dāng)通信恢復(fù)時(shí)主要的通信方向也會(huì)恢復(fù),,極大地增強(qiáng)了系統(tǒng)的穩(wěn)定性和可維護(hù)性,。
如圖2所示,EtherCAT主從站網(wǎng)絡(luò)構(gòu)成框圖中,,冗余卡為基于FPGA的鏈路冗余卡,,通過通信鏈路1與主機(jī)冗余型CPU連接,冗余鏈路1與備機(jī)冗余型CPU連接,,實(shí)現(xiàn)主從站之間的主備切換冗余,。通過通信鏈路2與下一級(jí)冗余卡的鏈路1連接,冗余鏈路2與下一級(jí)冗余卡的冗余鏈路1連接,,實(shí)現(xiàn)EtherCAT的鏈路冗余,。
3 鏈路冗余的FPGA實(shí)現(xiàn)方法
FPGA實(shí)現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動(dòng)切換功能,。
如圖3所示,,F(xiàn)PGA的4個(gè)接口0、1,、2,、3與4條通信鏈路通過MII(Media Independent Interface)方式連接。FPGA的4個(gè)接口分為2組,,接口0和接口1為1組,,接口2和接口3為1組,兩組的邏輯相同?,F(xiàn)以接口0和接口1說明冗余的切換方式:
(1)FPGA復(fù)位狀態(tài)為接口,;
(2)運(yùn)行過程中,通信鏈路1狀態(tài)不正常,,冗余鏈路1正常,,接口1切換為接口0;
(3)冗余鏈路1正常時(shí),,通信鏈路1恢復(fù)正常,,此時(shí)不切換,,還是連接接口1;
(4)冗余鏈路1不正常,,通信鏈路1恢復(fù)正常,,接口2切換為接口1運(yùn)行。
接口2和接口3的切換方式與接口0和接口1的切換方式相同,。
在FPGA實(shí)現(xiàn)過程中,,主要是通過判別兩個(gè)接口的PHY(Physical Layer)的數(shù)據(jù)連接信號(hào)(linkmii)和數(shù)據(jù)有效信號(hào)(rx_dv)判斷鏈路的狀態(tài)。其中,,接口0的數(shù)據(jù)連接信號(hào)為linkmii0,,數(shù)據(jù)有效信號(hào)為rx_dv0,接口1的數(shù)據(jù)連接信號(hào)為linkmii1,,數(shù)據(jù)有效信號(hào)為rx_dv1,。因?yàn)镻HY在數(shù)據(jù)傳輸過程中,rx_dv信號(hào)只在數(shù)據(jù)有效時(shí)拉高,,因此,,需要檢測(cè)時(shí)間閾值(cnt_time0、cnt_time1),,即兩次rx_dv時(shí)間差,,超過時(shí)間閾值(cnt_time0=1、cnt_time1=1)認(rèn)為此接口無數(shù)據(jù)連接,。接口0和接口1的切換條件判斷為:
(1)當(dāng)linkmii0為低,,linkmii1為高,選擇為接口0,;
(2)當(dāng)linkmii0為高,,linkmii1為低,選擇為接口1,;
(3)以前狀態(tài)為接口1,,當(dāng)linkmii0為低,linkmii1為低,,rx_dv0=1,,cnt_time0=0,則選擇為接口0,;
(4)以前狀態(tài)為接口1,,當(dāng)linkmii0為低,linkmii1為低,,rx_dv1=1,,cnt_time1=0,則選擇為接口0,;
(5)以前狀態(tài)為接口0,,當(dāng)linkmii0為低,,linkmii1為低,rx_dv1=1,,cnt_time0=1,,則選擇為接口0;
(6)以前狀態(tài)為接口1,,當(dāng)linkmii0為低,,linkmii1為低,rx_dv0=1,,cnt_time1=1,,則選擇為接口0。
接口2和接口3的切換選擇邏輯與此類似,。
4 功能測(cè)試
為了驗(yàn)證此鏈路冗余方法的可行性,搭建了以ALTERA公司的Cyclone III EP3C40E484i為核心的測(cè)試系統(tǒng),,此芯片有332個(gè)IO管腳,,39 600個(gè)LE,可滿足設(shè)計(jì)的要求,。根據(jù)FPGA實(shí)現(xiàn)冗余鏈路的要求,,現(xiàn)根據(jù)測(cè)試圖型將測(cè)試敘述如下:
(1)圖4中,0時(shí)刻前為通信鏈路和冗余鏈路都沒有連接到冗余卡上(linkmii0=1,,linkmii1=1),,此時(shí)默認(rèn)選擇接口0,0時(shí)刻后冗余鏈路連接到冗余卡上(linkmii1=0,,linkmii0=1),,此時(shí)切換為接口1。
(2)圖5中,,0時(shí)刻前為冗余鏈路連接到冗余卡上(linkmii1=0,,linkmii0=1),通道選擇為接口1,,0時(shí)刻后,,冗余鏈路從冗余卡上斷開(linkmii1=1,linkmii0=1),,此時(shí)通道回到默認(rèn)接口1,。
(3)圖6中,0時(shí)刻前為通信鏈路與冗余鏈路都連接到冗余卡上(linkmii0=0,,linkmii1=0),,通道選擇為接口1,但此時(shí)通信鏈路有數(shù)據(jù)有效信號(hào)(rx_dv0=1),,冗余鏈路沒有數(shù)據(jù)有效信號(hào)(rx_dv1=0),,此時(shí)通道切換到接口0,。
(4)圖7中,0時(shí)刻前為通信鏈路與冗余鏈路都連接到冗余卡上(linkmii0=0,,linkmii1=0),,通道選擇為接口0,但此時(shí)冗余鏈路有數(shù)據(jù)有效信號(hào)(rx_dv1=1),,通信鏈路沒有數(shù)據(jù)有效信號(hào)(rx_dv0=0),,此時(shí)通道切換到接口1。
5 結(jié)論
本文首先介紹EtherCAT的基本原理,,以增加EtherCAT系統(tǒng)穩(wěn)定性和可維護(hù)性為出發(fā)點(diǎn),,給出了基于FPGA的EtherCAT鏈路原理,設(shè)計(jì)通過FPGA實(shí)現(xiàn)主站與從站,、從站與從站之間的通信鏈路與冗余鏈路的自動(dòng)切換,,從而實(shí)現(xiàn)EtherCAT的鏈路冗余。通過測(cè)試驗(yàn)證此方法的可行性,,增加了EtherCAT 系統(tǒng)的可靠性與可維護(hù)性,。
參考文獻(xiàn)
[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] 郇極,肖文磊,,劉艷強(qiáng).工業(yè)以太網(wǎng)EtherCAT冗余和熱插拔技術(shù)[J].北京航空航天大學(xué)學(xué)報(bào),,2009(2):38-41.
作者信息:
黃 兵,豐大軍,,劉云龍,,王 皓
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京100083)