文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.179021
中文引用格式: 南揚(yáng),豐大軍,趙德政,等. 基于SII接口的EtherCAT網(wǎng)絡(luò)配置方案設(shè)計[J].電子技術(shù)應(yīng)用,2017,43(12):69-72.
英文引用格式: Nan Yang,F(xiàn)eng Dajun,Zhao Dezheng,et al. Design of EtherCAT network configuration based on SII interface[J].Application of Electronic Technique,2017,43(12):69-72.
0 引言
EtherCAT是由BECKHOFF公司提出的一種高性能工業(yè)以太網(wǎng)技術(shù)[1],它采用標(biāo)準(zhǔn)以太網(wǎng)數(shù)據(jù)幀和符合以太網(wǎng)標(biāo)準(zhǔn)IEEE 802.3的物理層,具有數(shù)據(jù)傳輸速度高、實時性好、拓?fù)潇`活和實施費(fèi)用低的優(yōu)點(diǎn),逐步成為工業(yè)以太網(wǎng)技術(shù)研究的熱點(diǎn)[2]。
目前,EtherCAT技術(shù)已成為國際標(biāo)準(zhǔn)IEC61158的一部分,被廣泛的應(yīng)用于同步控制、運(yùn)動控制和材料加工控制等行業(yè)[3,4]。本文研究了常用的EtherCAT網(wǎng)絡(luò)配置方案,分析了其不足,提出了一種基于從站信息接口(Slave Information Interface,SII)的EtherCAT網(wǎng)絡(luò)配置方案,并對方案進(jìn)行實現(xiàn),最后通過實驗驗證了其可行性。
目前常用的EtherCAT網(wǎng)絡(luò)配置方案大多基于可擴(kuò)展標(biāo)記語言(eXtensible Markup Language,XML)在這種方案中EtherCAT配置工具根據(jù)從站提供的EtherCAT從站信息(EtherCAT Slave Information,ESI)文件和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),生成一個XML格式的EtherCAT網(wǎng)絡(luò)信息(EtherCAT Network Information,ENI)文件。ENI文件描述了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)以及從站設(shè)備的初始化命令和配置命令。主站獲取ENI文件,并根據(jù)其網(wǎng)絡(luò)配置信息進(jìn)行EtherCAT網(wǎng)絡(luò)配置。
這種方案具有良好的通用性和擴(kuò)展性,但也有著諸多不足。一方面,該配置方案需要額外的配置軟件進(jìn)行協(xié)助,增加了研發(fā)的工作量。同時,ENI文件依據(jù)ESI文件生成,所以一個新的模塊出現(xiàn)就要向EtherCAT配置軟件的庫文件中添加一個新的ESI文件,使得整個配置操作較為復(fù)雜。文獻(xiàn)[5]中設(shè)計了一種簡單EtherCAT主站,可以簡化配置過程,但是仍然需要上位機(jī)進(jìn)行協(xié)助。
另一方面,XML格式的文件解析比較復(fù)雜。XML格式文本是W3C組織為Web數(shù)據(jù)儲存和交換制定的一種文本格式,其解析復(fù)雜度較高,尤其是在系統(tǒng)資源并不豐富的嵌入式主站系統(tǒng)中,XML的解析壓力將面臨更為嚴(yán)峻的挑戰(zhàn)。文獻(xiàn)[6]提出了一種快速XML解析方案,但是其對內(nèi)存要求較大,并不能完全解決上述問題。
1 基于SII的配置方案
為了解決傳統(tǒng)方案中存在的問題,本文提出并設(shè)計了一種基于SII的EtherCAT配置方案。SII是從站信息接口,它規(guī)定了從站信息在EEPROM中的存儲格式,主站可以根據(jù)SII中的信息完成對從站的配置。該配置方案如圖1所示,在配置開始時,主站掃描從站,獲取從站的拓?fù)?,并順序讀取所有從站的設(shè)備信息,然后生成配置命令,從而完成對EtherCAT網(wǎng)絡(luò)及所有從站的配置操作。與傳統(tǒng)方案相比,本方案中由主站獲取從站的拓?fù)浣Y(jié)構(gòu)并生成配置信息,全程無需專門的配置工具軟件參與,降低了配置方案的開發(fā)成本;主站直接從SII中獲取從站的信息,不需要XML參與配置,省卻了解析XML的時間,極大地提高了配置效率。
該配置方案包括3個操作步驟:(1)掃描從站,根據(jù)獲取的響應(yīng)信息計算從站連接的拓?fù)浣Y(jié)構(gòu);(2)根據(jù)從站的拓?fù)浣Y(jié)構(gòu),依次讀取從站信息;(3)生成配置信息,并對從站進(jìn)行配置。
1.1 計算從站拓?fù)浣Y(jié)構(gòu)
在目前常用的EtherCAT網(wǎng)絡(luò)配置方案中,從站的拓?fù)浣Y(jié)構(gòu)是由配置工具軟件生成并下發(fā)到從站。而在基于SII的配置方案中,由于沒有配置工具軟件的參與,主站采用一種遞歸的算法計算從站的拓?fù)浣Y(jié)構(gòu)。
為了讀者更好地理解從站拓?fù)浣Y(jié)構(gòu)的計算方法,先簡單介紹EtherCAT數(shù)據(jù)幀如何在從站中傳輸。EtherCAT從站結(jié)構(gòu)如圖2所示,從站最多支持4個端口,從站會根據(jù)端口是否存在連接自動打開或關(guān)閉端口。若連接存在,則打開端口,否則關(guān)閉端口。若端口打開,流入該端口的數(shù)據(jù)幀被發(fā)送給其他從站,在其他從站處理完成后返回該端口;若端口閉合,數(shù)據(jù)幀會直接流向從站的下一個端口。0端口是從站數(shù)據(jù)的輸入端口,從站一旦接入網(wǎng)絡(luò),端口0一定處于打開的狀態(tài),其他3個端口都有可能關(guān)閉。因此數(shù)據(jù)幀在從站中傳輸順序是0端口、數(shù)據(jù)幀處理單元、3端口、1端口、2端口、0端口,最后由0端口離開從站。圖3介紹了數(shù)據(jù)幀在網(wǎng)絡(luò)中的傳輸過程。
根據(jù)上面的描述,可以將EtherCAT從站抽象成三叉樹上的一個結(jié)點(diǎn)。如圖4(a)所示,Port0作為從站結(jié)點(diǎn)的輸入端口,而Port3、Port1和Port2作為輸出端口,且樹遍歷順序是Port3、Port1和Port2。圖3中的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)可抽象圖4(b)所示的三叉樹。因此,計算EtherCAT網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)可以抽象成對三叉樹的深度優(yōu)先遍歷[7]。因為工控網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量較少,可以采用遞歸算法實現(xiàn),因此本文采用遞歸算法實現(xiàn)EtherCAT網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的計算[8]。
在使用遞歸算法計算從站拓?fù)浣Y(jié)構(gòu)前,仍需要進(jìn)行3個步驟獲取必要條件:
(1)獲取網(wǎng)絡(luò)中從站的個數(shù)
從站的數(shù)據(jù)幀處理單元在成功處理完數(shù)據(jù)幀之后,會把數(shù)據(jù)幀計數(shù)位的值加1,表示處理成功。利用此特性,主站發(fā)送廣播數(shù)據(jù)幀,所有從站都會把數(shù)據(jù)幀的計數(shù)位的值加1,因此數(shù)據(jù)幀計數(shù)位的值就代表了從站個數(shù),主站讀取返回數(shù)據(jù)幀的計數(shù)位就可以獲取從站的個數(shù)。
(2)獲取從站各個端口連接狀態(tài)
從站使用專用的寄存器記錄從站端口的連接狀態(tài),主站使用順序讀取命令,讀取各個從站記錄端口連接狀態(tài)的寄存器,獲取從站端口的連接狀態(tài)。
(3)排列從站順序
按照從站的順序?qū)ぶ芳磾?shù)據(jù)幀在從站的處理順序給從站進(jìn)行排序。圖3中的從站按照此方法排列后的順序是A、B、C、D。
圖5所示為數(shù)據(jù)結(jié)構(gòu)存儲從站信息,name表示從站的名字,port0、port1、port2和port3采用相同的結(jié)構(gòu)表示從站端口的情況,linkstatus表示端口是否存在連接,之后的name代表與該端口連接的從站的名字。port0比較特殊,因為其作為從站輸入端口,即連接樹的父結(jié)點(diǎn),所以一直處于連接狀態(tài)。
在計算從站拓?fù)浣Y(jié)構(gòu)時,按照順序?qū)⒏鱾€從站的連接信息存在結(jié)構(gòu)體數(shù)組中,然后從數(shù)組中第一個從站開始進(jìn)行計算。對每一個從站首先在port0中記錄其上層從站的名字,然后按照port3、port1和port2的順序掃描從站的各個端口的連接情況,若某端口處于連接狀態(tài),且未記錄其子結(jié)點(diǎn),則數(shù)組中其后port0為空的從站是其子結(jié)點(diǎn),此時進(jìn)入下一層,遞歸計算子結(jié)點(diǎn)的連接情況。當(dāng)計算完成時,所有從站的連接情況都已經(jīng)明確,也就完成了從站拓?fù)浣Y(jié)構(gòu)的計算。
1.2 讀取從站信息
要完成EtherCAT網(wǎng)絡(luò)的配置,除了需要獲取從站的拓?fù)浣Y(jié)構(gòu)外,還需要各個從站的設(shè)備信息。在傳統(tǒng)方案中,從站信息是由ESI文件提供的,而在本方案中主站通過訪問從站的EEPROM獲取配置信息。本節(jié)將介紹基于SII的配置方案主站如何讀取從站的設(shè)備信息。
EEPROM中的信息結(jié)構(gòu)如圖6所示,0~64地址存儲的是從站結(jié)構(gòu)信息,從地址64處開始存儲的是分類信息[9]。所有分類信息使用相同的數(shù)據(jù)結(jié)構(gòu),但長度不定。分類信息的數(shù)據(jù)結(jié)構(gòu)如圖7所示,包括2個字節(jié)的信息類型、2個字節(jié)的數(shù)據(jù)長度和指定長度的數(shù)據(jù)內(nèi)容。
在基于SII的配置方案中,主站按照圖8中所示的流程讀取從站信息。主站讀取從站分類信息時,從第一條分類信息開始,根據(jù)類型名查找要讀的信息,直到找到要讀取的信息,并將信息存儲到對應(yīng)結(jié)構(gòu)體。
1.3 生成網(wǎng)絡(luò)信息
EtherCAT直接使用標(biāo)準(zhǔn)以太網(wǎng)數(shù)據(jù)幀,以太網(wǎng)幀的數(shù)據(jù)區(qū)由一個或多個EtherCAT子報文組成,每個子報文中包含從站的地址和數(shù)據(jù)。EtherCAT網(wǎng)絡(luò)中主站與從站通過數(shù)據(jù)幀進(jìn)行數(shù)據(jù)交互,EtherCAT數(shù)據(jù)幀采取串行轉(zhuǎn)發(fā)方式,每個EtherCAT數(shù)據(jù)幀經(jīng)過所有的從站。數(shù)據(jù)幀到達(dá)某個從站時,從站根據(jù)EtherCAT數(shù)據(jù)幀中的地址和命令,將數(shù)據(jù)從EtherCAT數(shù)據(jù)幀中取出或?qū)?shù)據(jù)寫入EtherCAT數(shù)據(jù)幀中。由上文可知,EtherCAT網(wǎng)絡(luò)中主站訪問從站就必須知道從站的地址,主站與從站進(jìn)行數(shù)據(jù)交互就要設(shè)置從站的數(shù)據(jù)區(qū)映射。
EtherCAT從站地址的分配主要是配置設(shè)備地址和邏輯地址。設(shè)備地址是一個兩字節(jié)的地址,主站用它來識別各個從站。在本方案中設(shè)備地址是從0X1000開始,按照連接順序依次遞增進(jìn)行,給每個從站分配設(shè)備地址。邏輯地址并不是單獨(dú)定義的,而是使用從站數(shù)據(jù)在主站數(shù)據(jù)區(qū)中的地址。使用邏輯地址時,從站中現(xiàn)場總線內(nèi)存管理單元(Fieldbus Memory Management Unit,F(xiàn)MMU)將從站本地物理存儲映射到主站的邏輯地址。在本方案配置過程中,主站根據(jù)從站EEPROM中過程數(shù)據(jù)對象(Process Data Object,PDO)分類信息計算出從站的數(shù)據(jù)長度和從站物理地址,然后按照順序在數(shù)據(jù)區(qū)中為每個從站分配對應(yīng)的長度的存儲區(qū),最后根據(jù)計算結(jié)果配置FMMU寄存器。
EtherCAT從站數(shù)據(jù)區(qū)的配置內(nèi)容主要為配置存儲同步管理器(SyncManager,SM)。SM通過硬件對數(shù)據(jù)區(qū)的所有訪問進(jìn)行控制,使得數(shù)據(jù)區(qū)不會被雙方同時訪問,保證了主站與從站應(yīng)用數(shù)據(jù)交換的一致性和安全性。在本方案配置過程中,主站讀取從站EEPROM中的SM類型信息,計算出SM控制數(shù)據(jù)區(qū)的地址、大小和控制模式,并配置相應(yīng)寄存器。
2 方案測試
為驗證方案的可行性,在Ubuntu平臺上實現(xiàn)了一個采用SII配置方案的精簡EtherCAT主站。該精簡EtherCAT主站能夠完成從站配置,以及主從站之間的數(shù)據(jù)交換。測試系統(tǒng)結(jié)構(gòu)如圖9所示。
在測試系統(tǒng)中包含有6個BECKHOOF公司生產(chǎn)的EtherCAT從站,分別是EK1100、EL1008、EL2008、EL3054、EL4024和EK1110。其中EL1008和EL3054分別是數(shù)字輸入和模擬輸入,EL2008和EL4024分別是數(shù)字輸出和模擬輸出。
在測試中,通過檢查所有從站的狀態(tài)和周期數(shù)據(jù)交換功能來判斷EtherCAT網(wǎng)絡(luò)配置是否成功。為了方便分析從站狀態(tài),使用Wireshark抓取EtherCAT數(shù)據(jù)幀分析從站狀態(tài),抓取到數(shù)據(jù)幀如圖10所示。圖10框中的數(shù)據(jù)是獲取到從站的狀態(tài),它顯示所有從站都處于OP狀態(tài),說明從站狀態(tài)轉(zhuǎn)換成功,本方案成功配置了EtherCAT網(wǎng)絡(luò)。
3 結(jié)論
目前常見的EtherCAT網(wǎng)絡(luò)配置方案使用XML文件作為配置信息,存在研發(fā)復(fù)雜和效率較低的問題。為了解決上述不足,本文研究了EtherCAT網(wǎng)絡(luò)的配置過程,提出了一種基于SII接口的EtherCAT網(wǎng)絡(luò)配置方案。該方案使用從站SII接口中提供的信息,計算生成EtherCAT網(wǎng)絡(luò)配置方案。通過與其他常見方案的比較發(fā)現(xiàn),基于SII接口的EtherCAT網(wǎng)絡(luò)配置方案實現(xiàn)簡便,能夠提高配置效率且實現(xiàn)較容易,因此具有較高的應(yīng)用價值。
參考文獻(xiàn)
[1] 藺輝,田新鋒,馬彩文,等.基于Beckhoff嵌入式PC控制器的步進(jìn)電機(jī)群控系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2009,35(9):129-131.
[2] 劉喆,郇極,劉艷強(qiáng).基于XML的EtherCAT工業(yè)以太網(wǎng)協(xié)議解析技術(shù)[J].北京航空航天大學(xué)學(xué)報,2011,37(9):1086-1090.
[3] 吳麗菲.EtherCAT在實時系統(tǒng)下的實現(xiàn)[D].廣州:華南理工大學(xué),2014.
[4] 朱永東,李彬.淺析提高工業(yè)以太網(wǎng)的可靠性和穩(wěn)定性[J].電子技術(shù)與軟件工程,2013(18):37.
[5] Zhou Tong,Hu Jingtao.Design and realization of EtherCAT master[C].Electronic and Mechanical Engineering and Information Technology(EMEIT),2011.
[6] 張運(yùn)嵩.一種快速的非提取式XML解析器的設(shè)計與實現(xiàn)[D].蘇州:蘇州大學(xué),2010.
[7] 唐青松.深度優(yōu)先算法在創(chuàng)建樹形結(jié)構(gòu)中的應(yīng)用研究[J].計算機(jī)技術(shù)與發(fā)展,2014(9):226-229.
[8] 魏斌,馬繼輝,?;?基于遞歸算法的樹型結(jié)構(gòu)圖的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2011(1):96-98.
[9] 郇極,劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場總線EtherCAT驅(qū)動程序設(shè)計及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
作者信息:
南 揚(yáng)1,2,豐大軍2,趙德政2,王 皓2
(1.西安電子科技大學(xué) 通信工程學(xué)院,陜西 西安710071;2.華北計算機(jī)系統(tǒng)工程研究所,北京100083)