文獻(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.
基于FPGA的EtherCAT從站控制器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]。
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)度接口。
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所示。
本實(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)行配置,配置的邏輯地址起始位要大于等于配置的物理地址起始位。
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)邏輯。
在寫(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所示。
第一個(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。
第二個(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。
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)處理。