基于FPGA狀態(tài)機設計實現EtherCAT從站基本通信鏈路并驗證
摘 要: EtherCAT是工業(yè)控制領域廣泛應用的現場總線之一,從站控制器ESC(EtherCAT Slave Controller)是從站模塊實現EtherCAT協議數據通信的關鍵,對從站控制芯片實現自主可控是工業(yè)控制系統(tǒng)國產化研發(fā)的重要基礎?;贓therCAT通信協議及基本通信功能邏輯,設計了EBUS編碼/解碼、Auto-forwarder、Loop-back function關鍵通信節(jié)點的FPGA狀態(tài)機,并通過解析各階段數據狀態(tài)變化,驗證了各節(jié)點通信數據的正確性。實驗結果表明,基于上述狀態(tài)機的FPGA實現EtherCAT從站基本通信鏈路是完全可行的。
0 引言EtherCAT是由BECKHOFF提出的在工業(yè)控制領域獲得廣泛應用的現場總線之一,該總線具備全雙工工作模式,可基于主站(Master)和從站(Slave)連接的模式實現數據傳遞,且具有低延時、高安全性的特點。EtherCAT從站控制器ESC(EtherCAT Slave Controller)是從站模塊實現EtherCAT通信協議的關鍵,目前國內基于EtherCAT協議的通信功能基本都采用ET1100/ET1200等從站芯片來實現[1-4]。然而,由于這類芯片除基本通信功能外,還具備大量其他功能,而此類額外通信機制并不對我國技術人員公開,造成對此類通信芯片還無法實現完全自主可控,采用有效的安全機制提升系統(tǒng)安全性更是無從談起。隨著工業(yè)控制領域的信息安全問題日益突出,此類不可自主可控通信芯片的應用給我國核心控制系統(tǒng)的運行引入一定安全風險。為了實現對控制系統(tǒng)用通信芯片的完全自主可控,基于FPGA實現EtherCAT通信協議的自主化開發(fā)顯得非常必要,同時也是采用自主安全機制提升通信系統(tǒng)安全能力的重要前提。
基本通信鏈路是實現收發(fā)EtherCAT協議數據的核心,因此,本研究基于EtherCAT協議特征及數據傳遞機制,設計關鍵通信節(jié)點的FPGA狀態(tài)機,驗證FPGA實現EtherCAT從站控制器基本通信鏈路功能的可行性,為完善EtherCAT其他通信功能及安全機制奠定重要基礎。
1 EtherCAT從站控制器框架EtherCAT主站與各從站之間的通信鏈路如圖1所示。通信過程中,數據幀遍歷所有從站設備,數據幀通過某一從站時,從站設備根據報文命令分析尋址到本機報文并進行讀/寫數據到指定位置,數據幀到達最后一個從站后,該從站把處理后的數據幀發(fā)送給主站。主站收到此上行電報后處理返回數據,一次通信結束[5-6]。
EtherCAT從站控制器主要包括數據幀處理單元、EBUS接口編碼/解碼模塊、Auto-forwarder模塊、Loop-back funcTIon模塊等。以ET1100/ET1200從站控制器為例,其內部框架如圖2所示,主要包括MII、EBUS接口,EtherCAT數據幀處理單元,現場總線內存管理單元(FMMU,Fliedbus Memory Management Unit),存儲同步管理通道(SM,SyncManager),分布時鐘,PDI接口,ESC地址空間(包括寄存器和用戶數據存儲器),EEPROM控制,以及狀態(tài)控制、中斷、看門狗和物理層管理等部分。
其中,幀處理單元(EtherCAT Processing Unit)分析并處理EtherCAT數據流。現場總線內存管理單元(FMMU,Fliedbus Memory Management Unit)是EtherCAT從站控制IP核中的核心模塊之一,用于實現主站對從站的邏輯尋址。存儲同步管理通道(SM,SyncManager)實現主站和本地應用數據交換。Ethercat幀和PDI接口都必須輪詢處理器來判斷另一端是否完成訪問。PDI接口模塊是ESC芯片的應用數據接口。
在FPGA實現EtherCAT從站控制器的過程中,如果能實現數據鏈路的通路,數據幀能夠通過EBUS、MII接口傳輸到FPGA中,FPGA將數據幀進行識別并進行CRC校驗,解包出EtherCAT的幀格式和協議命令,并通過端口連接狀態(tài)將數據幀發(fā)送。那么,可以說明EtherCAT從站控制器是可以在FPGA中進行自主開發(fā)實現。在以上的數據鏈路中,EBUS接口涉及到EBUS模塊,EBUS模塊主要對EBUS協議進行解析,通過曼徹斯特編碼/解碼接收或發(fā)送數據;FPGA將數據幀進行識別并進行CRC校驗是Auto-Forwarder模塊;通過Loop-back funcTIon模塊將數據幀發(fā)送。以下分別介紹上述各模塊的實現過程。
2 各模塊實現邏輯2.1 EBUS編碼/解碼模塊
對于EBUS實現方式,EBUS接口的LVDS信號數據率是100 Mb/s,EBUS接口是利用曼徹斯特編碼/解碼(Manchester encoded)通過LVDS方式實現。





