文獻(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)場總線,,專用于運(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)場總線自主化設(shè)計(jì)。依據(jù)從站控制器ESC的功能,,基于FPGA設(shè)計(jì)了ESC的子功能模塊FMMU(Field Memory Management Units),,通過主站對(duì)從站進(jìn)行邏輯寫操作驗(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)場總線技術(shù),廣泛應(yīng)用于運(yùn)動(dòng)控制領(lǐng)域[1-2],。
EtherCAT主要優(yōu)勢在于高速,、高實(shí)時(shí)性以及精確時(shí)鐘同步。這些優(yōu)勢的實(shí)現(xiàn)基于EtherCAT設(shè)計(jì)的幾個(gè)關(guān)鍵技術(shù):飛讀飛寫(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ù)由國外掌握,,IP核和芯片全部是由國外公司提供,。我國正在執(zhí)行智能制造2025國家戰(zhàn)略,沒有自主化的先進(jìn)的工業(yè)現(xiàn)場總線,,工業(yè)系統(tǒng)升級(jí)就只能是亦步亦趨,,跟隨國外公司的步伐,無法開發(fā)出具有自主創(chuàng)新技術(shù)的專用產(chǎn)品,。在工業(yè)控制系統(tǒng)領(lǐng)域,,國外工業(yè)控制系統(tǒng)企業(yè)占據(jù)競爭優(yōu)勢,然而,,工業(yè)現(xiàn)場總線是工業(yè)控制系統(tǒng)運(yùn)行的樞紐,,無論什么數(shù)據(jù)都要經(jīng)過這個(gè)樞紐進(jìn)行傳輸,出于系統(tǒng)安全的考慮,,有必要對(duì)工業(yè)現(xiàn)場總線進(jìn)行研究,,以實(shí)現(xiàn)自主化設(shè)計(jì)。目前國內(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ì),沒有工程實(shí)踐應(yīng)用,。針對(duì)該問題,,本文基于FPGA依據(jù)EtherCAT工作原理,,設(shè)計(jì)一種能滿足工程實(shí)踐的EtherCAT功能單元FMMU,實(shí)現(xiàn)了FMMU的地址映射以及數(shù)據(jù)字節(jié)和位提取的功能,。
1 EtherCAT系統(tǒng)及功能組成
EtherCAT主站與從站組成結(jié)構(gòu)如圖1所示,。主從站的單次通信過程是:主站遍歷所有從站設(shè)備,數(shù)據(jù)幀通過某一從站時(shí),,從站設(shè)備根據(jù)報(bào)文命令分析尋址到本機(jī)報(bào)文并定位到指定位置進(jìn)行數(shù)據(jù)讀/寫,,數(shù)據(jù)幀到達(dá)最后一個(gè)從站后,該從站把處理后的數(shù)據(jù)幀發(fā)送給主站,。主站收到此上行電報(bào)后處理并返回?cái)?shù)據(jù),,一次完整的通信過程結(jié)束[5-7]。EtherCAT系統(tǒng)整個(gè)通信過程由主從站內(nèi)部狀態(tài)機(jī)控制,,主站采用廣播尋址、自增量尋址,、配置地址尋址,、邏輯尋址等尋址方式和命令,這個(gè)階段,,主站獲取了所連從站的基本信息,,從站也根據(jù)主站數(shù)據(jù)幀要求對(duì)自身進(jìn)行配置,有過程數(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可通過FMMU直接訪問從站控制器的地址控制,,讀寫RAM或寄存器區(qū),;有的從站過程數(shù)據(jù)交互時(shí)必須先通過SyncManager,才能對(duì)RAM或寄存器區(qū)進(jìn)行讀寫訪問,,其中SyncManager是為了數(shù)據(jù)一致性以及數(shù)據(jù)安全性而設(shè)計(jì)的,,既用作訪問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)行起來后會(huì)根據(jù)ENI文件要求對(duì)各個(gè)從站進(jìn)行配置,F(xiàn)MMU就是由主站在PREOP到SAFEOP狀態(tài)轉(zhuǎn)換過程中進(jìn)行配置的,,主站根據(jù)每個(gè)從站的ENI信息對(duì)相關(guān)從站的FMMU配置以下信息:主站邏輯起始地址,、字節(jié)長度、邏輯起始位,、邏輯結(jié)束位,、從站物理起始地址、從站物理起始位,、訪問方式(讀,、寫、讀寫),、使能,。映射實(shí)例如表1和圖3所示。
本實(shí)例是將32位的主站邏輯地址0x00014708映射到本地從站物理地址0x0F05,,從實(shí)例配置表中可以看出,,邏輯映射起始位為bit 5,結(jié)束位為bit 3,,映射長度為7 bit,,操作類型是寫。
從站FMMU是由主站在PREOP狀態(tài)利用FPWR(Configured Address Physical Write)命令進(jìn)行配置的,。從站配置成功,,并且系統(tǒng)轉(zhuǎn)入OP狀態(tài)之后,,在進(jìn)行過程數(shù)據(jù)的交互時(shí),從站會(huì)收到主站發(fā)出的邏輯尋址的EtherCAT子報(bào)文,,根據(jù)各個(gè)從站的FMMU邏輯配置情況,,查詢是否有與子報(bào)文中邏輯地址區(qū)相匹配的區(qū)域,如果有,,且為輸入類型數(shù)據(jù)(主站讀訪問操作),,則從站FMMU會(huì)將映射的物理地址區(qū)數(shù)據(jù)插入到EtherCAT子報(bào)文數(shù)據(jù)區(qū)的對(duì)應(yīng)位置;如果配置邏輯地址在子報(bào)文邏輯地址區(qū)域內(nèi)且為輸出類型數(shù)據(jù)(主站寫訪問操作),,則從站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開始的256B(FMMU個(gè)數(shù)為8,,每個(gè)FMMU配置寄存器個(gè)數(shù)為16)的區(qū)域,表2~9所示為FMMU的所有配置寄存器描述說明(其中y表示FMMU索引,,值為0~15)。
FMMU的配置實(shí)現(xiàn)過程(即在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(邏輯讀寫)命令幀,通過FMMU對(duì)從站進(jìn)行讀操作,,讀操作分為按位讀(bit-wise reading)和按字節(jié)讀 (byte-wise reading)兩種方式,,按位讀支持對(duì)從站任何允許的地址區(qū)域操作。邏輯讀操作處理邏輯為: FPGA代碼判斷訪問類型是否為讀配置,、幀命令是否為LRD和LRW,、地址是否在邏輯映射地址區(qū)間內(nèi),滿足這三個(gè)條件后,,置一個(gè)標(biāo)志位,,在此標(biāo)志位為1的情況下,將被映射的物理地址中的數(shù)據(jù)插入到數(shù)據(jù)幀的邏輯地址空間,。
2.2.3FMMU數(shù)據(jù)處理-主站寫
主站發(fā)LWR或者LRW命令幀,,通過FMMU對(duì)從站進(jìn)行寫操作,寫操作分為按位寫和按字節(jié)寫兩種方式,。對(duì)于按位操作來說,,對(duì)同一個(gè)從站內(nèi)的兩個(gè)FMMU都進(jìn)行按位寫操作的情況下,兩個(gè)FMMU的邏輯起始地址之差值設(shè)置為大于等于3,。對(duì)于按字節(jié)操作來說,沒有這個(gè)限制,。按位寫只支持對(duì)從站地址區(qū)域?yàn)?x0F00:0x0F03的數(shù)字量輸出寄存器的按位寫操作,,對(duì)于除此區(qū)域之外的其他地址區(qū)域的按位寫操作,未映射的區(qū)域?qū)?huì)被寫入非定義的值,,按字節(jié)寫沒有這種區(qū)域限制,。圖5所示為寫操作的實(shí)現(xiàn)邏輯。
在寫操作的實(shí)現(xiàn)邏輯中,,通過設(shè)置掩碼,,將需要寫入的bit置1,不需要寫入的bit置0,,然后將掩碼與原先物理地址區(qū)域或寄存器中的原值進(jìn)行邏輯運(yùn)算,,既將要寫入的bit寫入了物理寄存器中,又保留了不需要更新的物理寄存器中的原值保留,。
3 功能測試
功能測試選取LWR命令進(jìn)行驗(yàn)證,,對(duì)兩個(gè)從站采用按位寫的映射方式。通過在testbench(測試臺(tái))中編寫EtherCAT邏輯寫測試包激勵(lì),,使用Modelsim對(duì)設(shè)計(jì)的FMMU模塊設(shè)計(jì)進(jìn)行仿真測試,,驗(yàn)證從站0xF00:0xF03中最終被寫入數(shù)據(jù)的正確性。
3.1 測試?yán)f明
測試?yán)捎脙蓚€(gè)從站,,從站的0xF00:0xF03寄存器值默認(rèn)復(fù)位都為0,;主站采用LWR命令,邏輯起始地址0x01000011,寫入5B數(shù)據(jù)0xaa556789ab,,網(wǎng)絡(luò)協(xié)議采用高字節(jié)順序,,即高字節(jié)數(shù)據(jù)存放在低字節(jié)地址,而且在傳輸中最先傳輸最低位,,數(shù)據(jù)格式見表10所示,。
第一個(gè)從站的配置如表11所示,假設(shè)此從站物理寄存0x0F00:0F03初始值為0xabcdef78,,按FMMU實(shí)現(xiàn)原理分析,,F(xiàn)MMU模塊截取邏輯寫幀的值應(yīng)該為6 bit: 010100,寫入到物理寄存器0x0F00:0x0F03(leastbit:10101001即為0x95)的值為0x95cdef78,。
第二個(gè)從站的配置如表12所示,,假設(shè)此從站物理寄存0x0F00:0F03初始值為0x12345678;按FMMU 實(shí)現(xiàn)原理分析,,F(xiàn)MMU模塊截取邏輯寫幀的值應(yīng)該為6 bit: 001101,,寫入到物理寄存器0x0F00:0x0F03(leastbit:00011010即為0x58)的值為0x12585678。
3.2 仿真測試驗(yàn)證
仿真采用Modelsim軟件進(jìn)行,根據(jù)表11和表12的配置要求,,對(duì)從站1和從站2分別進(jìn)行邏輯按位寫仿真驗(yàn)證,。
根據(jù)表11中第一個(gè)從站的測試?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開始的6 bit數(shù)據(jù)替換,得到從站1的物理地址0x0F00的數(shù)據(jù)為0x95,,數(shù)據(jù)處理仿真結(jié)果如圖7所示,。
根據(jù)表12中第二個(gè)從站的測試?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開始的6 bit數(shù)據(jù)替換,得到從站2的物理地址0x0F01的數(shù)據(jù)為0x58,,數(shù)據(jù)處理仿真結(jié)果如圖9所示。
4 結(jié)論
通過對(duì)FMMU實(shí)現(xiàn)邏輯代碼的Modelsim仿真數(shù)據(jù)結(jié)果,,驗(yàn)證了FMMU原理及其邏輯實(shí)現(xiàn)的正確性,,說明用FPGA實(shí)現(xiàn)EtherCAT從站控制器FMMU模塊是完全可行的,為開發(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)場總線EtherCAT 第3部分:數(shù)據(jù)鏈路層服務(wù)定義[S].北京:中國標(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)場總線EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[8] 汪雅楠.工業(yè)以太網(wǎng)EtherCAT通信系統(tǒng)的研究與仿真[D].北京:北京交通大學(xué),2011.(收稿日期:2018-05-22)
作者簡介:
姚旺君(1983-),,通信作者,男,,碩士,,工程師,主要研究方向:工業(yè)控制系統(tǒng),、電路與系統(tǒng),、信號(hào)處理。E-mail:[email protected],。
林浩(1988-),,男,,博士,工程師,,主要研究方向:工業(yè)控制與自動(dòng)化,、機(jī)器人。
王永利(1982-),,男,,碩士,工程師,,主要研究方向:信息安全,、信號(hào)處理。