作者:姚旺君,林浩,王永利,邢計元,張鵬
引言
EtherCAT是由BECKHOFF提出和設計的一種工業以太網現場總線技術,廣泛應用于運動控制領域。
EtherCAT主要優勢在于高速、高實時性以及精確時鐘同步。這些優勢的實現基于EtherCAT設計的幾個關鍵技術:飛讀飛寫(processing on the fly)、FMMU(Fieldbus Memory Management Unit)、DC(Distribute Clock)。以上幾個關鍵技術都是在EtherCAT從站控制器ESC(EtherCAT Slave Controller)中實現,ESC是實現EtherCAT通信協議的關鍵。
目前,EtherCAT從站控制技術由國外掌握,IP核和芯片全部是由國外公司提供。我國正在執行智能制造2025國家戰略,沒有自主化的先進的工業現場總線,工業系統升級就只能是亦步亦趨,跟隨國外公司的步伐,無法開發出具有自主創新技術的專用產品。在工業控制系統領域,國外工業控制系統企業占據競爭優勢,然而,工業現場總線是工業控制系統運行的樞紐,無論什么數據都要經過這個樞紐進行傳輸,出于系統安全的考慮,有必要對工業現場總線進行研究,以實現自主化設計。目前國內已經有針對EtherCAT總線技術的研究的:文獻[5]設計并驗證了ESC實現的通信鏈路可行性,文獻[6]提出了一種使用FPGA實現FMMU的算法,但是上述研究都是進行理論推導與算法設計,沒有工程實踐應用。針對該問題,本文基于FPGA依據EtherCAT工作原理,設計一種能滿足工程實踐的EtherCAT功能單元FMMU,實現了FMMU的地址映射以及數據字節和位提取的功能。
1 EtherCAT系統及功能組成
EtherCAT主站與從站組成結構如圖1所示。主從站的單次通信過程是:主站遍歷所有從站設備,數據幀通過某一從站時,從站設備根據報文命令分析尋址到本機報文并定位到指定位置進行數據讀/寫,數據幀到達最后一個從站后,該從站把處理后的數據幀發送給主站。主站收到此上行電報后處理并返回數據,一次完整的通信過程結束。EtherCAT系統整個通信過程由主從站內部狀態機控制,主站采用廣播尋址、自增量尋址、配置地址尋址、邏輯尋址等尋址方式和命令,這個階段,主站獲取了所連從站的基本信息,從站也根據主站數據幀要求對自身進行配置,有過程數據要求的對相關從站的FMMU進行配置,這些工作完成后,主從站轉入OP(Operation)態。
EtherCAT從站控制器IP主要包括端口控制(Ports)處理單元、Auto-forwarder模塊、Loopback模塊、FMMU、SyncManager、PDI(Process Data Interface)單元、復位處理單元、分布時鐘、EEPROM接口單元、REGS及RAM區,每個功能模塊之間的關聯如圖2所示。根據不同的通信階段及從站配置類型,EtherCAT可通過FMMU直接訪問從站控制器的地址控制,讀寫RAM或寄存器區;有的從站過程數據交互時必須先通過SyncManager,才能對RAM或寄存器區進行讀寫訪問,其中SyncManager是為了數據一致性以及數據安全性而設計的,既用作訪問RAM或寄存器區的管理單元,又可以作為PDI和ECAT數據同步的調度接口。
2 FMMU原理及實現
2.1 FMMU運行原理
FMMU作為EtherCAT從站控制器的核心功能之一,采用地址映射技術將主站的邏輯地址轉換為從站的物理地址,映射地址空間達4 GB。FMMU用于主站對于從站的邏輯尋址命令幀中,而且能在一個數據子幀中對多個分布式從站進行尋址,既能節約數據幀資源,提高數據幀利用率,又能方便主站本地的地址空間管理和分配。
EtherCAT系統運行時,每個EtherCAT從站都有一個配置文件,即ESI(EtherCAT Slave Information)文件,規定了每個從站的軟件版本、類型、資源配置包括FMMU個數等情況。主站利用配置工具,將每個從站的ESI文件作為輸入生成ENI(EtherCAT Network Information)文件,主站軟件根據各個ENI文件了解自身所在EtherCAT網絡的從站信息。主站運行起來后會根據ENI文件要求對各個從站進行配置,FMMU就是由主站在PREOP到SAFEOP狀態轉換過程中進行配置的,主站根據每個從站的ENI信息對相關從站的FMMU配置以下信息:主站邏輯起始地址、字節長度、邏輯起始位、邏輯結束位、從站物理起始地址、從站物理起始位、訪問方式(讀、寫、讀寫)、使能。映射實例如表1和圖3所示。
本實例是將32位的主站邏輯地址0x00014708映射到本地從站物理地址0x0F05,從實例配置表中可以看出,邏輯映射起始位為bit 5,結束位為bit 3,映射長度為7 bit,操作類型是寫。
從站FMMU是由主站在PREOP狀態利用FPWR(Configured Address Physical Write)命令進行配置的。從站配置成功,并且系統轉入OP狀態之后,在進行過程數據的交互時,從站會收到主站發出的邏輯尋址的EtherCAT子報文,根據各個從站的FMMU邏輯配置情況,查詢是否有與子報文中邏輯地址區相匹配的區域,如果有,且為輸入類型數據(主站讀訪問操作),則從站FMMU會將映射的物理地址區數據插入到EtherCAT子報文數據區的對應位置;如果配置邏輯地址在子報文邏輯地址區域內且為輸出類型數據(主站寫訪問操作),則從站FMMU根據配置要求將邏輯地址區數據抽取到被映射的相應物理地址區。
2.2 FMMU實現原理
根據以上FMMU運行原理及配置實例分析,可將FMMU的實現原理分為兩部分:FMMU配置設計與實現、FMMU數據處理設計與實現。
2.2.1 FMMU配置設計與實現
根據EtherCAT協議和規范,從站的FMMU只能由主站進行配置,配置寄存器的基地址為0x0600開始的256B(FMMU個數為8,每個FMMU配置寄存器個數為16)的區域,表2~9所示為FMMU的所有配置寄存器描述說明(其中y表示FMMU索引,值為0~15)。
FMMU的配置實現過程(即在PREOP狀態,主站發FPWR命令幀進行配置)如圖4所示。從站FPGA根據EEPROM配置的FMMU個數(0x0004寄存器的值,即圖中變量n)依照圖4所示邏輯對從站的FMMU進行配置,配置的邏輯地址起始位要大于等于配置的物理地址起始位。
2.2.2 FMMU數據處理-主站讀
主站發LRD(邏輯讀)或者LRW(邏輯讀寫)命令幀,通過FMMU對從站進行讀操作,讀操作分為按位讀(bit-wise reading)和按字節讀 (byte-wise reading)兩種方式,按位讀支持對從站任何允許的地址區域操作。邏輯讀操作處理邏輯為: FPGA代碼判斷訪問類型是否為讀配置、幀命令是否為LRD和LRW、地址是否在邏輯映射地址區間內,滿足這三個條件后,置一個標志位,在此標志位為1的情況下,將被映射的物理地址中的數據插入到數據幀的邏輯地址空間。
2.2.3FMMU數據處理-主站寫
主站發LWR或者LRW命令幀,通過FMMU對從站進行寫操作,寫操作分為按位寫和按字節寫兩種方式。對于按位操作來說,對同一個從站內的兩個FMMU都進行按位寫操作的情況下,兩個FMMU的邏輯起始地址之差值設置為大于等于3。對于按字節操作來說,沒有這個限制。按位寫只支持對從站地址區域為0x0F00:0x0F03的數字量輸出寄存器的按位寫操作,對于除此區域之外的其他地址區域的按位寫操作,未映射的區域將會被寫入非定義的值,按字節寫沒有這種區域限制。圖5所示為寫操作的實現邏輯。
在寫操作的實現邏輯中,通過設置掩碼,將需要寫入的bit置1,不需要寫入的bit置0,然后將掩碼與原先物理地址區域或寄存器中的原值進行邏輯運算,既將要寫入的bit寫入了物理寄存器中,又保留了不需要更新的物理寄存器中的原值保留。
3 功能測試
功能測試選取LWR命令進行驗證,對兩個從站采用按位寫的映射方式。通過在testbench(測試臺)中編寫EtherCAT邏輯寫測試包激勵,使用Modelsim對設計的FMMU模塊設計進行仿真測試,驗證從站0xF00:0xF03中最終被寫入數據的正確性。
3.1 測試例說明
測試例采用兩個從站,從站的0xF00:0xF03寄存器值默認復位都為0;主站采用LWR命令,邏輯起始地址0x01000011,寫入5B數據0xaa556789ab,網絡協議采用高字節順序,即高字節數據存放在低字節地址,而且在傳輸中最先傳輸最低位,數據格式見表10所示。
第一個從站的配置如表11所示,假設此從站物理寄存0x0F00:0F03初始值為0xabcdef78,按FMMU實現原理分析,FMMU模塊截取邏輯寫幀的值應該為6 bit: 010100,寫入到物理寄存器0x0F00:0x0F03(leastbit:10101001即為0x95)的值為0x95cdef78。
第二個從站的配置如表12所示,假設此從站物理寄存0x0F00:0F03初始值為0x12345678;按FMMU 實現原理分析,FMMU模塊截取邏輯寫幀的值應該為6 bit: 001101,寫入到物理寄存器0x0F00:0x0F03(leastbit:00011010即為0x58)的值為0x12585678。
3.2 仿真測試驗證
仿真采用Modelsim軟件進行,根據表11和表12的配置要求,對從站1和從站2分別進行邏輯按位寫仿真驗證。
根據表11中第一個從站的測試例,取主站邏輯地址0x01000011中的數據0x55,得到的mask為0x3E00,處理后的數據為0x1540;取主站邏輯地址0x01000012中的數據0xaa,得到的mask為0x0040,處理后的數據為0x2a95,如圖6所示。
對數據進行掩碼操作處理,將物理地址0x0F00 中bit1~bit6對應的6 bit數據用邏輯地址0x01000011對應的bit3開始的6 bit數據替換,得到從站1的物理地址0x0F00的數據為0x95,數據處理仿真結果如圖7所示。
根據表12中第二個從站的測試例,取主站邏輯地址0x01000013中的數據0x89,得到的mask為0x3E00,處理后的數據為0x19C0;取主站邏輯地址0x01000014中的數據0x67,得到的mask為0x0040,處理后的數據為0x2295,如圖8所示。
對數據進行掩碼操作處理,將物理地址0x0F01 中bit1~bit6對應的6 bit數據用邏輯地址0x01000013對應的bit3開始的6 bit數據替換,得到從站2的物理地址0x0F01的數據為0x58,數據處理仿真結果如圖9所示。
4 結論
通過對FMMU實現邏輯代碼的Modelsim仿真數據結果,驗證了FMMU原理及其邏輯實現的正確性,說明用FPGA實現EtherCAT從站控制器FMMU模塊是完全可行的,為開發完善的ESC從站控制器創造了條件。
責任編輯:gt
?
評論
查看更多