基于FPGA的EtherCAT鏈路冗余原理及其設(shè)計(jì)與驗(yàn)證
摘 要: EtherCAT是一種實(shí)時(shí)工業(yè)以太網(wǎng)協(xié)議,使用鏈路冗余技術(shù)是實(shí)現(xiàn)鏈路穩(wěn)定性和可靠性的重要手段。介紹了基于FPGA的EtherCAT鏈路冗余原理,設(shè)計(jì)通過FPGA實(shí)現(xiàn)主站與從站、從站與從站之間的通信鏈路與冗余鏈路的自動(dòng)切換,從而實(shí)現(xiàn)EtherCAT的鏈路冗余。通過測(cè)試驗(yàn)證了此方法的可行性,增加了EtherCAT系統(tǒng)的可靠性與可維護(hù)性。
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)切換功能。