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