《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的EtherCAT從站控制器FMMU模塊設(shè)計(jì)
基于FPGA的EtherCAT從站控制器FMMU模塊設(shè)計(jì)
姚旺君,林浩,王永利,邢計(jì)元,張鵬
(1.工業(yè)控制系統(tǒng)信息安全技術(shù)國(guó)家工程實(shí)驗(yàn)室,北京 100083; 2. 中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京 100083)
摘要: EtherCAT是一類比較成熟的工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線,專用于運(yùn)動(dòng)控制領(lǐng)域。系統(tǒng)通信采用主從結(jié)構(gòu),其中從站控制器ESC(EtherCAT Slave Controller)是從站模塊實(shí)現(xiàn)EtherCAT協(xié)議數(shù)據(jù)通信的關(guān)鍵芯片,對(duì)從站控制芯片進(jìn)行自主研究設(shè)計(jì)有助于深入了解EtherCAT總線技術(shù),并實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)總線自主化設(shè)計(jì)。依據(jù)從站控制器ESC的功能,基于FPGA設(shè)計(jì)了ESC的子功能模塊FMMU(Field Memory Management Units),通過(guò)主站對(duì)從站進(jìn)行邏輯寫(xiě)操作驗(yàn)證了FMMU功能模塊的正確性。仿真結(jié)果表明,基于FPGA的FMMU功能模塊的實(shí)現(xiàn)方案可行。
關(guān)鍵詞: EtherCAT ESC FMMU FPGA
中圖分類號(hào):TP273
文獻(xiàn)標(biāo)識(shí)碼:A
DOI: 10.19358/j.issn.2096-5133.2018.08.019
中文引用格式:姚旺君,林浩,王永利,等.基于FPGA的EtherCAT從站控制器FMMU模塊設(shè)計(jì)[J].信息技術(shù)與網(wǎng)絡(luò)安全,2018,37(8):77-82.
The design of FMMU module in EtherCAT slave controller based on FPGA
Yao Wangjun,Lin Hao,Wang Yongli, Xing Jiyuan,Zhang Peng
(1. National Engineering Laboratory for Industry Control System Information Security Technology, Beijing 100083, China; 2. The 6th Research Institute of China Electronics Corporation, Beijing 100083, China)
Abstract: EtherCAT is a type of mature industry Ethernet field bus technology, escpecially in motion control system.This communication system uses master and slave structure. The ESC (EtherCAT Slave Controller) is a critical microchip for communication protocol implementation, and it’s helpful for deeply understanding the technique of the EtherCAT and for autonomous design of industry Ethernet field bus technology. Based on the function of EtherCAT slave controller, the basic function FMMU is designed .The results show that implementation of FMMU is completely feasible based on FPGA (Field-Programmable Gate Array).
Key words : EtherCAT; ESC; FMMU; FPGA

基于FPGAEtherCAT從站控制器FMMU模塊設(shè)計(jì)


 

摘要:EtherCAT是一類比較成熟的工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線,專用于運(yùn)動(dòng)控制領(lǐng)域。系統(tǒng)通信采用主從結(jié)構(gòu),其中從站控制器ESC(EtherCAT Slave Controller)是從站模塊實(shí)現(xiàn)EtherCAT協(xié)議數(shù)據(jù)通信的關(guān)鍵芯片,對(duì)從站控制芯片進(jìn)行自主研究設(shè)計(jì)有助于深入了解EtherCAT總線技術(shù),并實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)總線自主化設(shè)計(jì)。依據(jù)從站控制器ESC的功能,基于FPGA設(shè)計(jì)了ESC的子功能模塊FMMU(Field Memory Management Units),通過(guò)主站對(duì)從站進(jìn)行邏輯寫(xiě)操作驗(yàn)證了FMMU功能模塊的正確性。仿真結(jié)果表明,基于FPGA的FMMU功能模塊的實(shí)現(xiàn)方案可行。

關(guān)鍵詞:



 

Abstract: 

Key words:  EtherCAT; ESC; FMMU; FPGA

 

0  引言

 

EtherCAT是由BECKHOFF提出和設(shè)計(jì)的一種工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線技術(shù),廣泛應(yīng)用于運(yùn)動(dòng)控制領(lǐng)域[1-2]。 

EtherCAT主要優(yōu)勢(shì)在于高速、高實(shí)時(shí)性以及精確時(shí)鐘同步。這些優(yōu)勢(shì)的實(shí)現(xiàn)基于EtherCAT設(shè)計(jì)的幾個(gè)關(guān)鍵技術(shù):飛讀飛寫(xiě)(processing on the fly)、FMMU(Fieldbus Memory Management Unit)、DC(Distribute Clock)。以上幾個(gè)關(guān)鍵技術(shù)都是在EtherCAT從站控制器ESC(EtherCAT Slave Controller)中實(shí)現(xiàn),ESC是實(shí)現(xiàn)EtherCAT通信協(xié)議的關(guān)鍵[3-4]。

目前,EtherCAT從站控制技術(shù)由國(guó)外掌握,IP核和芯片全部是由國(guó)外公司提供。我國(guó)正在執(zhí)行智能制造2025國(guó)家戰(zhàn)略,沒(méi)有自主化的先進(jìn)的工業(yè)現(xiàn)場(chǎng)總線,工業(yè)系統(tǒng)升級(jí)就只能是亦步亦趨,跟隨國(guó)外公司的步伐,無(wú)法開(kāi)發(fā)出具有自主創(chuàng)新技術(shù)的專用產(chǎn)品。在工業(yè)控制系統(tǒng)領(lǐng)域,國(guó)外工業(yè)控制系統(tǒng)企業(yè)占據(jù)競(jìng)爭(zhēng)優(yōu)勢(shì),然而,工業(yè)現(xiàn)場(chǎng)總線是工業(yè)控制系統(tǒng)運(yùn)行的樞紐,無(wú)論什么數(shù)據(jù)都要經(jīng)過(guò)這個(gè)樞紐進(jìn)行傳輸,出于系統(tǒng)安全的考慮,有必要對(duì)工業(yè)現(xiàn)場(chǎng)總線進(jìn)行研究,以實(shí)現(xiàn)自主化設(shè)計(jì)。目前國(guó)內(nèi)已經(jīng)有針對(duì)EtherCAT總線技術(shù)的研究的:文獻(xiàn)[5]設(shè)計(jì)并驗(yàn)證了ESC實(shí)現(xiàn)的通信鏈路可行性,文獻(xiàn)[6]提出了一種使用FPGA實(shí)現(xiàn)FMMU的算法,但是上述研究都是進(jìn)行理論推導(dǎo)與算法設(shè)計(jì),沒(méi)有工程實(shí)踐應(yīng)用。針對(duì)該問(wèn)題,本文基于FPGA依據(jù)EtherCAT工作原理,設(shè)計(jì)一種能滿足工程實(shí)踐的EtherCAT功能單元FMMU,實(shí)現(xiàn)了FMMU的地址映射以及數(shù)據(jù)字節(jié)和位提取的功能。

 

1  EtherCAT系統(tǒng)及功能組成

 

EtherCAT主站與從站組成結(jié)構(gòu)如圖1所示。主從站的單次通信過(guò)程是:主站遍歷所有從站設(shè)備,數(shù)據(jù)幀通過(guò)某一從站時(shí),從站設(shè)備根據(jù)報(bào)文命令分析尋址到本機(jī)報(bào)文并定位到指定位置進(jìn)行數(shù)據(jù)讀/寫(xiě),數(shù)據(jù)幀到達(dá)最后一個(gè)從站后,該從站把處理后的數(shù)據(jù)幀發(fā)送給主站。主站收到此上行電報(bào)后處理并返回?cái)?shù)據(jù),一次完整的通信過(guò)程結(jié)束[5-7]。EtherCAT系統(tǒng)整個(gè)通信過(guò)程由主從站內(nèi)部狀態(tài)機(jī)控制,主站采用廣播尋址、自增量尋址、配置地址尋址、邏輯尋址等尋址方式和命令,這個(gè)階段,主站獲取了所連從站的基本信息,從站也根據(jù)主站數(shù)據(jù)幀要求對(duì)自身進(jìn)行配置,有過(guò)程數(shù)據(jù)要求的對(duì)相關(guān)從站的FMMU進(jìn)行配置,這些工作完成后,主從站轉(zhuǎn)入OP(Operation)態(tài)[7-8]

 

微信截圖_20180925145258.png

 

EtherCAT從站控制器IP主要包括端口控制(Ports)處理單元、Auto-forwarder模塊、Loopback模塊、FMMU、SyncManager、PDI(Process Data Interface)單元、復(fù)位處理單元、分布時(shí)鐘、EEPROM接口單元、REGS及RAM區(qū),每個(gè)功能模塊之間的關(guān)聯(lián)如圖2所示。根據(jù)不同的通信階段及從站配置類型,EtherCAT可通過(guò)FMMU直接訪問(wèn)從站控制器的地址控制,讀寫(xiě)RAM或寄存器區(qū);有的從站過(guò)程數(shù)據(jù)交互時(shí)必須先通過(guò)SyncManager,才能對(duì)RAM或寄存器區(qū)進(jìn)行讀寫(xiě)訪問(wèn),其中SyncManager是為了數(shù)據(jù)一致性以及數(shù)據(jù)安全性而設(shè)計(jì)的,既用作訪問(wèn)RAM或寄存器區(qū)的管理單元,又可以作為PDI和ECAT數(shù)據(jù)同步的調(diào)度接口。

 

微信截圖_20180925145308.png

 

 

2  FMMU原理及實(shí)現(xiàn)

 

2.1 FMMU運(yùn)行原理

 

FMMU作為EtherCAT從站控制器的核心功能之一,采用地址映射技術(shù)將主站的邏輯地址轉(zhuǎn)換為從站的物理地址,映射地址空間達(dá)4 GB。FMMU用于主站對(duì)于從站的邏輯尋址命令幀中,而且能在一個(gè)數(shù)據(jù)子幀中對(duì)多個(gè)分布式從站進(jìn)行尋址,既能節(jié)約數(shù)據(jù)幀資源,提高數(shù)據(jù)幀利用率,又能方便主站本地的地址空間管理和分配。 

EtherCAT系統(tǒng)運(yùn)行時(shí),每個(gè)EtherCAT從站都有一個(gè)配置文件,即ESI(EtherCAT Slave Information)文件,規(guī)定了每個(gè)從站的軟件版本、類型、資源配置包括FMMU個(gè)數(shù)等情況。主站利用配置工具,將每個(gè)從站的ESI文件作為輸入生成ENI(EtherCAT Network Information)文件,主站軟件根據(jù)各個(gè)ENI文件了解自身所在EtherCAT網(wǎng)絡(luò)的從站信息。主站運(yùn)行起來(lái)后會(huì)根據(jù)ENI文件要求對(duì)各個(gè)從站進(jìn)行配置,F(xiàn)MMU就是由主站在PREOP到SAFEOP狀態(tài)轉(zhuǎn)換過(guò)程中進(jìn)行配置的,主站根據(jù)每個(gè)從站的ENI信息對(duì)相關(guān)從站的FMMU配置以下信息:主站邏輯起始地址、字節(jié)長(zhǎng)度、邏輯起始位、邏輯結(jié)束位、從站物理起始地址、從站物理起始位、訪問(wèn)方式(讀、寫(xiě)、讀寫(xiě))、使能。映射實(shí)例如表1和圖3所示。

 

微信截圖_20180925145419.png

 

微信截圖_20180925145428.png

本實(shí)例是將32位的主站邏輯地址0x00014708映射到本地從站物理地址0x0F05,從實(shí)例配置表中可以看出,邏輯映射起始位為bit 5,結(jié)束位為bit 3,映射長(zhǎng)度為7 bit,操作類型是寫(xiě)。 

從站FMMU是由主站在PREOP狀態(tài)利用FPWR(Configured Address Physical Write)命令進(jìn)行配置的。從站配置成功,并且系統(tǒng)轉(zhuǎn)入OP狀態(tài)之后,在進(jìn)行過(guò)程數(shù)據(jù)的交互時(shí),從站會(huì)收到主站發(fā)出的邏輯尋址的EtherCAT子報(bào)文,根據(jù)各個(gè)從站的FMMU邏輯配置情況,查詢是否有與子報(bào)文中邏輯地址區(qū)相匹配的區(qū)域,如果有,且為輸入類型數(shù)據(jù)(主站讀訪問(wèn)操作),則從站FMMU會(huì)將映射的物理地址區(qū)數(shù)據(jù)插入到EtherCAT子報(bào)文數(shù)據(jù)區(qū)的對(duì)應(yīng)位置;如果配置邏輯地址在子報(bào)文邏輯地址區(qū)域內(nèi)且為輸出類型數(shù)據(jù)(主站寫(xiě)訪問(wèn)操作),則從站FMMU根據(jù)配置要求將邏輯地址區(qū)數(shù)據(jù)抽取到被映射的相應(yīng)物理地址區(qū)。

 

2.2 FMMU實(shí)現(xiàn)原理

 

根據(jù)以上FMMU運(yùn)行原理及配置實(shí)例分析,可將FMMU的實(shí)現(xiàn)原理分為兩部分:FMMU配置設(shè)計(jì)與實(shí)現(xiàn)、FMMU數(shù)據(jù)處理設(shè)計(jì)與實(shí)現(xiàn)。

 

2.2.1 FMMU配置設(shè)計(jì)與實(shí)現(xiàn)

 

根據(jù)EtherCAT協(xié)議和規(guī)范,從站的FMMU只能由主站進(jìn)行配置,配置寄存器的基地址為0x0600開(kāi)始的256B(FMMU個(gè)數(shù)為8,每個(gè)FMMU配置寄存器個(gè)數(shù)為16)的區(qū)域,表2~9所示為FMMU的所有配置寄存器描述說(shuō)明(其中y表示FMMU索引,值為0~15)。

 



FMMU的配置實(shí)現(xiàn)過(guò)程(即在PREOP狀態(tài),主站發(fā)FPWR命令幀進(jìn)行配置)如圖4所示。從站FPGA根據(jù)EEPROM配置的FMMU個(gè)數(shù)(0x0004寄存器的值,即圖中變量n)依照?qǐng)D4所示邏輯對(duì)從站的FMMU進(jìn)行配置,配置的邏輯地址起始位要大于等于配置的物理地址起始位。

微信截圖_20180925145723.png

 

2.2.2 FMMU數(shù)據(jù)處理-主站讀

 

主站發(fā)LRD(邏輯讀)或者LRW(邏輯讀寫(xiě))命令幀,通過(guò)FMMU對(duì)從站進(jìn)行讀操作,讀操作分為按位讀(bit-wise reading)和按字節(jié)讀 (byte-wise reading)兩種方式,按位讀支持對(duì)從站任何允許的地址區(qū)域操作。邏輯讀操作處理邏輯為: FPGA代碼判斷訪問(wèn)類型是否為讀配置、幀命令是否為L(zhǎng)RD和LRW、地址是否在邏輯映射地址區(qū)間內(nèi),滿足這三個(gè)條件后,置一個(gè)標(biāo)志位,在此標(biāo)志位為1的情況下,將被映射的物理地址中的數(shù)據(jù)插入到數(shù)據(jù)幀的邏輯地址空間。

 

2.2.3FMMU數(shù)據(jù)處理-主站寫(xiě)

 

主站發(fā)LWR或者LRW命令幀,通過(guò)FMMU對(duì)從站進(jìn)行寫(xiě)操作,寫(xiě)操作分為按位寫(xiě)和按字節(jié)寫(xiě)兩種方式。對(duì)于按位操作來(lái)說(shuō),對(duì)同一個(gè)從站內(nèi)的兩個(gè)FMMU都進(jìn)行按位寫(xiě)操作的情況下,兩個(gè)FMMU的邏輯起始地址之差值設(shè)置為大于等于3。對(duì)于按字節(jié)操作來(lái)說(shuō),沒(méi)有這個(gè)限制。按位寫(xiě)只支持對(duì)從站地址區(qū)域?yàn)?x0F00:0x0F03的數(shù)字量輸出寄存器的按位寫(xiě)操作,對(duì)于除此區(qū)域之外的其他地址區(qū)域的按位寫(xiě)操作,未映射的區(qū)域?qū)?huì)被寫(xiě)入非定義的值,按字節(jié)寫(xiě)沒(méi)有這種區(qū)域限制。圖5所示為寫(xiě)操作的實(shí)現(xiàn)邏輯。

 

微信截圖_20180925150041.png

 

在寫(xiě)操作的實(shí)現(xiàn)邏輯中,通過(guò)設(shè)置掩碼,將需要寫(xiě)入的bit置1,不需要寫(xiě)入的bit置0,然后將掩碼與原先物理地址區(qū)域或寄存器中的原值進(jìn)行邏輯運(yùn)算,既將要寫(xiě)入的bit寫(xiě)入了物理寄存器中,又保留了不需要更新的物理寄存器中的原值保留。

 

3  功能測(cè)試

 

功能測(cè)試選取LWR命令進(jìn)行驗(yàn)證,對(duì)兩個(gè)從站采用按位寫(xiě)的映射方式。通過(guò)在testbench(測(cè)試臺(tái))中編寫(xiě)EtherCAT邏輯寫(xiě)測(cè)試包激勵(lì),使用Modelsim對(duì)設(shè)計(jì)的FMMU模塊設(shè)計(jì)進(jìn)行仿真測(cè)試,驗(yàn)證從站0xF00:0xF03中最終被寫(xiě)入數(shù)據(jù)的正確性。

 

3.1 測(cè)試?yán)f(shuō)明

 

測(cè)試?yán)捎脙蓚€(gè)從站,從站的0xF00:0xF03寄存器值默認(rèn)復(fù)位都為0;主站采用LWR命令,邏輯起始地址0x01000011,寫(xiě)入5B數(shù)據(jù)0xaa556789ab,網(wǎng)絡(luò)協(xié)議采用高字節(jié)順序,即高字節(jié)數(shù)據(jù)存放在低字節(jié)地址,而且在傳輸中最先傳輸最低位,數(shù)據(jù)格式見(jiàn)表10所示。

 

微信截圖_20180925150137.png


第一個(gè)從站的配置如表11所示,假設(shè)此從站物理寄存0x0F00:0F03初始值為0xabcdef78,按FMMU實(shí)現(xiàn)原理分析,F(xiàn)MMU模塊截取邏輯寫(xiě)幀的值應(yīng)該為6 bit: 010100,寫(xiě)入到物理寄存器0x0F00:0x0F03(leastbit:10101001即為0x95)的值為0x95cdef78。

 

微信截圖_20180925150144.png


第二個(gè)從站的配置如表12所示,假設(shè)此從站物理寄存0x0F00:0F03初始值為0x12345678;按FMMU 實(shí)現(xiàn)原理分析,F(xiàn)MMU模塊截取邏輯寫(xiě)幀的值應(yīng)該為6 bit: 001101,寫(xiě)入到物理寄存器0x0F00:0x0F03(leastbit:00011010即為0x58)的值為0x12585678。

 

微信截圖_20180925150151.png


3.2 仿真測(cè)試驗(yàn)證

 

仿真采用Modelsim軟件進(jìn)行,根據(jù)表11和表12的配置要求,對(duì)從站1和從站2分別進(jìn)行邏輯按位寫(xiě)仿真驗(yàn)證。

根據(jù)表11中第一個(gè)從站的測(cè)試?yán)≈髡具壿嫷刂?x01000011中的數(shù)據(jù)0x55,得到的mask為0x3E00,處理后的數(shù)據(jù)為0x1540;取主站邏輯地址0x01000012中的數(shù)據(jù)0xaa,得到的mask為0x0040,處理后的數(shù)據(jù)為0x2a95,如圖6所示。

 

 

對(duì)數(shù)據(jù)進(jìn)行掩碼操作處理,將物理地址0x0F00 中bit1~bit6對(duì)應(yīng)的6 bit數(shù)據(jù)用邏輯地址0x01000011對(duì)應(yīng)的bit3開(kāi)始的6 bit數(shù)據(jù)替換,得到從站1的物理地址0x0F00的數(shù)據(jù)為0x95,數(shù)據(jù)處理仿真結(jié)果如圖7所示。

根據(jù)表12中第二個(gè)從站的測(cè)試?yán)?,取主站邏輯地?x01000013中的數(shù)據(jù)0x89,得到的mask為0x3E00,處理后的數(shù)據(jù)為0x19C0;取主站邏輯地址0x01000014中的數(shù)據(jù)0x67,得到的mask為0x0040,處理后的數(shù)據(jù)為0x2295,如圖8所示。

對(duì)數(shù)據(jù)進(jìn)行掩碼操作處理,將物理地址0x0F01 中bit1~bit6對(duì)應(yīng)的6 bit數(shù)據(jù)用邏輯地址0x01000013對(duì)應(yīng)的bit3開(kāi)始的6 bit數(shù)據(jù)替換,得到從站2的物理地址0x0F01的數(shù)據(jù)為0x58,數(shù)據(jù)處理仿真結(jié)果如圖9所示。

 


 

4  結(jié)論

 

通過(guò)對(duì)FMMU實(shí)現(xiàn)邏輯代碼的Modelsim仿真數(shù)據(jù)結(jié)果,驗(yàn)證了FMMU原理及其邏輯實(shí)現(xiàn)的正確性,說(shuō)明用FPGA實(shí)現(xiàn)EtherCAT從站控制器FMMU模塊是完全可行的,為開(kāi)發(fā)完善的ESC從站控制器創(chuàng)造了條件。

 

參考文獻(xiàn)

[1] 謝香林.EtherCAT網(wǎng)絡(luò)及其伺服運(yùn)動(dòng)控制系統(tǒng)研究[D].大連:大連理工大學(xué),2008.

[2] 胡世江. 基于ET1100的EtherCAT實(shí)時(shí)工業(yè)以太網(wǎng)從站設(shè)計(jì)[J]. 可編程控制器與工廠自動(dòng)化, 2009 (11):67-70.

[3] GB/T 31230.3-2014,工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT 第3部分:數(shù)據(jù)鏈路層服務(wù)定義[S].北京:中國(guó)標(biāo)準(zhǔn)出版社出版,2014. 

[4] 馬軍賢,周侗,楊志家,等. EtherCAT從站的設(shè)計(jì)與實(shí)現(xiàn)[J]. 自動(dòng)化與儀表, 2011(8):37-40. 

[5] 馬保全, 姚旺君, 劉云龍,等. 基于FPGA的EtherCAT從站通信鏈路分析與驗(yàn)證[J].電子技術(shù)應(yīng)用, 2017, 43(8):95-99. 

[6] 楊建武,胡濤濤. EtherCAT從站控制IP核中FMMU的一種算法[J]. 制造業(yè)自動(dòng)化, 2013, 35(10): 83-86. 

[7] 郇極,劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.

[8] 汪雅楠.工業(yè)以太網(wǎng)EtherCAT通信系統(tǒng)的研究與仿真[D].北京:北京交通大學(xué),2011.(收稿日期:2018-05-22)

 

 

作者簡(jiǎn)介:

姚旺君(1983-),通信作者,男,碩士,工程師,主要研究方向:工業(yè)控制系統(tǒng)、電路與系統(tǒng)、信號(hào)處理。E-mail:yaowan19432003@163.com。 

林浩(1988-),男,博士,工程師,主要研究方向:工業(yè)控制與自動(dòng)化、機(jī)器人。 

王永利(1982-),男,碩士,工程師,主要研究方向:信息安全、信號(hào)處理。

 

 


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。