基于FPGA的EtherCAT鏈路冗余原理及其設(shè)計與驗證
摘 要: EtherCAT是一種實時工業(yè)以太網(wǎng)協(xié)議,使用鏈路冗余技術(shù)是實現(xiàn)鏈路穩(wěn)定性和可靠性的重要手段。介紹了基于FPGA的EtherCAT鏈路冗余原理,設(shè)計通過FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換,從而實現(xiàn)EtherCAT的鏈路冗余。通過測試驗證了此方法的可行性,增加了EtherCAT系統(tǒng)的可靠性與可維護性。
0 引言EtherCAT最初是由德國的倍福公司基于標準以太網(wǎng)技術(shù)提出的工業(yè)以太網(wǎng),是一種具有靈活網(wǎng)絡(luò)拓撲結(jié)構(gòu)的技術(shù)[1]。EtherCAT技術(shù)具有速度快、同步性能好、支持多種拓撲結(jié)構(gòu)、采用標準以太網(wǎng)幀、帶寬利用率高等優(yōu)點[2]。工業(yè)以太網(wǎng)中冗余技術(shù)是提高以太網(wǎng)系統(tǒng)可靠性和可維護性最有效的手段之一[3]。鏈路冗余是應(yīng)對網(wǎng)口故障(包括主站網(wǎng)卡本身故障和連接)及鏈路故障(指從站節(jié)點之間的鏈路存在斷開情況,如網(wǎng)線斷開)的補救措施。通常在對系統(tǒng)穩(wěn)定運行要求比較高的情況下,就需要應(yīng)用鏈路冗余技術(shù)。鏈路冗余是一種單一容錯機制,即如果鏈路在某一處發(fā)生故障,依然可以與各個從站保持數(shù)據(jù)的傳輸。當通信恢復(fù)時主要的通信方向也會恢復(fù)。如果不止一個地方發(fā)生通信中斷,所有的必須在發(fā)生另一個錯誤之前恢復(fù)。文獻[4]中介紹了一種工業(yè)以太網(wǎng)EtherCAT冗余和熱插拔技術(shù),此種方法采用環(huán)型冗余結(jié)構(gòu),將最后一個 ESC節(jié)點連接到主站,此種方法雖然可以解決單點故障,但是在故障修理時需要斷電,且不能解決多點故障。為了解決此問題,本文通過介紹基于FPGA的EtherCAT的鏈路冗余原理,設(shè)計通過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ù)幀中抽取對應(yīng)的數(shù)據(jù)或?qū)?shù)據(jù)插入數(shù)據(jù)幀,然后將該數(shù)據(jù)幀傳輸?shù)较乱粋€EtherCAT從站。最后一個EtherCAT從站發(fā)回經(jīng)過完全處理的報文,并由第1個從站作為響應(yīng)報文發(fā)送給主站。主站使用標準的以太網(wǎng)接口卡或具有以太網(wǎng)接口的嵌入式工業(yè)控制計算機,EtherCAT從站使用專用的從站控制芯片ESC,采取接收轉(zhuǎn)發(fā)機制,以太網(wǎng)幀可以雙向通行,但只有以太網(wǎng)幀由下行電報方向進入時,相應(yīng)的報文才能得到處理,如果指定轉(zhuǎn)發(fā)的網(wǎng)口未連接,ESC自動將以太網(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ū)由一個或多個EtherCAT子報文組成,每個子報文對應(yīng)獨立的設(shè)備和從站存儲區(qū)。每個EtherCAT 子報文包括子報文頭、數(shù)據(jù)域和相應(yīng)的工作計數(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增加了冗余功能,每一條鏈路都有對應(yīng)的冗余鏈路作為備用。鏈路1出現(xiàn)故障時,可以通過FPGA自動切到冗余鏈路1;鏈路2出現(xiàn)故障時,通過FPGA自動切到冗余鏈路2。這樣如果鏈路在某一處發(fā)生故障,依然可以與各個從站保持數(shù)據(jù)的傳輸。當通信恢復(fù)時主要的通信方向也會恢復(fù),極大地增強了系統(tǒng)的穩(wěn)定性和可維護性。
如圖2所示,EtherCAT主從站網(wǎng)絡(luò)構(gòu)成框圖中,冗余卡為基于FPGA的鏈路冗余卡,通過通信鏈路1與主機冗余型CPU連接,冗余鏈路1與備機冗余型CPU連接,實現(xiàn)主從站之間的主備切換冗余。通過通信鏈路2與下一級冗余卡的鏈路1連接,冗余鏈路2與下一級冗余卡的冗余鏈路1連接,實現(xiàn)EtherCAT的鏈路冗余。
3 鏈路冗余的FPGA實現(xiàn)方法
FPGA實現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動切換功能。