黨選舉,李帥帥,伍錫如,姜 輝
(桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004)
EtherCAT主站與主站通信協(xié)議的研究與實(shí)現(xiàn)*
黨選舉,李帥帥,伍錫如,姜 輝
(桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,廣西 桂林 541004)
EtherCAT是目前最高速的工業(yè)現(xiàn)場(chǎng)總線(xiàn)網(wǎng)絡(luò)。由于其高帶寬利用率,低堆棧延遲、低交換機(jī)延遲等優(yōu)點(diǎn),近些年被廣泛應(yīng)用于數(shù)控機(jī)床系統(tǒng)。為滿(mǎn)足EtherCAT主站間的通信,進(jìn)一步擴(kuò)展EtherCAT組網(wǎng)功能,為構(gòu)建EtherCAT工業(yè)復(fù)雜網(wǎng)絡(luò)提供技術(shù)支持,在不影響原有主站與從站通信功能情況下,設(shè)計(jì)了支持主站與主站之間通信的新協(xié)議,擴(kuò)充IGH開(kāi)源驅(qū)動(dòng)功能,在AM3358處理器硬件平臺(tái)上實(shí)現(xiàn)了EtherCAT主站與主站的通信。分別在實(shí)時(shí)RT-Patch linux系統(tǒng)和原生linux系統(tǒng)中對(duì)設(shè)計(jì)方案進(jìn)行測(cè)試,結(jié)果表明該方案運(yùn)行穩(wěn)定且可以滿(mǎn)足主從、主主之間相互通信,滿(mǎn)足了工業(yè)組網(wǎng)需求。為實(shí)現(xiàn)EtherCAT數(shù)控系統(tǒng)復(fù)雜網(wǎng)絡(luò)的建立和大數(shù)據(jù)的快速采集,解決了主站與主站之間通信的關(guān)鍵問(wèn)題。
EtherCAT;主站;現(xiàn)場(chǎng)總線(xiàn);大數(shù)據(jù)采集
實(shí)時(shí)以太網(wǎng)是常規(guī)以太網(wǎng)技術(shù)的延伸,為滿(mǎn)足控制領(lǐng)域的實(shí)時(shí)通信要求[1],德國(guó)倍福自動(dòng)化公司提出了EtherCAT實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù)。在數(shù)控系統(tǒng)領(lǐng)域,沈陽(yáng)機(jī)床i5智能數(shù)控機(jī)床使用EtherCAT總線(xiàn)系統(tǒng)顯著提高了工業(yè)效益[2]。現(xiàn)有的大量研究都集中在主從的構(gòu)建或者主從間通信中,如在ARM構(gòu)架上構(gòu)建支持主從通信的EtherCAT主站[3-5],高性能從站的設(shè)計(jì)[6],從站同步時(shí)鐘的優(yōu)化[7]及其EtherCAT時(shí)序特性分析[8]等。其所研究的EtherCAT總線(xiàn)結(jié)構(gòu)主要是單個(gè)主站獨(dú)立控制多個(gè)從站,主站各有屬于自身的從站單元,主站與主站間無(wú)法交換共享數(shù)據(jù)。為構(gòu)建工業(yè)數(shù)控系統(tǒng)復(fù)雜網(wǎng)絡(luò),實(shí)現(xiàn)數(shù)控系統(tǒng)多軸信息的快速傳輸,進(jìn)行工業(yè)大數(shù)據(jù)的采集,獨(dú)立的主站與從站通信并不能完全滿(mǎn)需求,難以真正的實(shí)現(xiàn)分布式架構(gòu),不利于對(duì)于數(shù)控系統(tǒng)中大數(shù)據(jù)的傳輸。因此該文深入研究EtherCAT總線(xiàn)通信協(xié)議,采用EtherCAT協(xié)議中的保留數(shù)據(jù)類(lèi)型,進(jìn)行主站與主站之間的通信。
如今為解決大數(shù)據(jù)難以傳輸處理問(wèn)題一般系統(tǒng)采用分布式架構(gòu)。主站與從站通信,是分布式架構(gòu)一個(gè)局部基本單元,只有局部基本單元之間相互通信,才可以為構(gòu)建EtherCAT工業(yè)數(shù)控系統(tǒng)復(fù)雜網(wǎng)絡(luò)提供基礎(chǔ)保障。主站與主站通信正是為搭建復(fù)雜網(wǎng)絡(luò)提供了可行方案。
為了提高普適性,選用linux系統(tǒng)作為開(kāi)發(fā)平臺(tái)。德國(guó)IGH公司提供的EtherCAT Master for Linux主站驅(qū)動(dòng),其遵循GPLv2開(kāi)源協(xié)議[9],但此代碼僅支持主站與從站之間的通信,因此該文在IGH發(fā)布的主站開(kāi)源代碼的基礎(chǔ)上,通過(guò)協(xié)議補(bǔ)充,擴(kuò)充驅(qū)動(dòng)功能,構(gòu)建了支持主站與主站之間通信的系統(tǒng)。
1.1 實(shí)現(xiàn)EtherCAT主站的軟件結(jié)構(gòu)
IGH公司提供的主站驅(qū)動(dòng)支持原生非實(shí)時(shí)linux操作系統(tǒng)和實(shí)時(shí)擴(kuò)展如RTAI、XENOMAI、RT-Patch等實(shí)時(shí)linux系統(tǒng)[9]。如圖1所示主站基本通信結(jié)構(gòu)圖,其主要由包含各種連接硬件接口的硬件層,負(fù)責(zé)linux調(diào)度、算法處理的內(nèi)核層,供應(yīng)戶(hù)調(diào)用的應(yīng)用層三部分組成。
圖1 主站基本通信結(jié)構(gòu)圖
1.2 實(shí)現(xiàn)主站的硬件平臺(tái)
AM3358是基于 ARM Cortex-A8內(nèi)核帶有NEON協(xié)處理器高性能處理器。其最高主頻可達(dá)1GHz;集成2個(gè)可編程實(shí)時(shí)單元PRU,PRU可配置成為EtherCAT從站功能模塊;具有單錯(cuò)檢測(cè)(奇偶校驗(yàn))的 32KB/32KB L1 指令/數(shù)據(jù)高速緩存;集成2個(gè)工業(yè)用千兆以太網(wǎng)MAC(10/100/1000MHZ)[10]。文中把其中一個(gè)網(wǎng)口作為從站連接口,另外一個(gè)作為主站與主站之間通信連接口,主站連接示意圖如圖2所示。
圖2 主站連接示意圖
2.1 EtherCAT數(shù)據(jù)幀分析
EtherCAT數(shù)據(jù)基于以太網(wǎng)數(shù)據(jù)幀進(jìn)行傳輸,數(shù)據(jù)幀類(lèi)型為0x88A4,其部分幀結(jié)構(gòu)示意圖如圖3所示。
圖3 EtherCAT部分幀結(jié)構(gòu)示意圖
圖3中,對(duì)于EtherCAT頭部分,其中的EtherCAT數(shù)據(jù)長(zhǎng)度為整個(gè)EtherCAT報(bào)文部分的數(shù)據(jù)長(zhǎng)度,對(duì)于類(lèi)型,其值為1表示主站與從站通信的數(shù)據(jù)幀,其余值保留。但為了主站之間進(jìn)行通信,文中規(guī)定在EtherCAT頭中的類(lèi)型為2表示該數(shù)據(jù)幀為主站與主站通信數(shù)據(jù)幀,因此只需補(bǔ)充并完善驅(qū)動(dòng)代碼,使之在接收數(shù)據(jù)時(shí)識(shí)別該以太網(wǎng)幀的類(lèi)型位就可以識(shí)別是發(fā)往從站的數(shù)據(jù)幀還是主站間通信的數(shù)據(jù)幀。
2.2 主站運(yùn)行階段
EtherCAT Master for Linux主站驅(qū)動(dòng)按照功能不同的劃分,可劃分為孤兒階段、空閑階段和可操作階段三個(gè)階段,其示意圖如圖4所示。
圖4 主站驅(qū)動(dòng)運(yùn)行階段
圖4中,在孤兒階段,主站等待以太網(wǎng)設(shè)備連接;在空閑狀態(tài),主站已經(jīng)連接了以太網(wǎng)設(shè)備,但是應(yīng)用空間并沒(méi)有對(duì)主站請(qǐng)求。此時(shí)主站會(huì)自動(dòng)掃描從站總線(xiàn)并等待應(yīng)用空間的操作。同時(shí),命令行工具可以訪(fǎng)問(wèn)總線(xiàn),但是由于缺少總線(xiàn)配置,不能進(jìn)行過(guò)程數(shù)據(jù)的交換。文中修改驅(qū)動(dòng)代碼后,在此階段,主站除掃描總線(xiàn)上的從站外,主站另一端口還需要掃描對(duì)應(yīng)總線(xiàn)上的其它主站設(shè)備;在操作狀態(tài),主站被應(yīng)用層請(qǐng)求,此時(shí)可對(duì)總線(xiàn)上從站進(jìn)行配置也可進(jìn)行過(guò)程數(shù)據(jù)的交換。
2.3 主站對(duì)數(shù)據(jù)幀的訪(fǎng)問(wèn)
在空閑階段,每個(gè)主站將通過(guò)不同的端口自動(dòng)掃描識(shí)別總線(xiàn)上從站和其它主站,根據(jù)EtherCAT協(xié)議,當(dāng)主站對(duì)從站的掃描時(shí),由于EtherCAT幀在從站之間傳輸是順序的[11],因此一個(gè)子報(bào)文可以完成對(duì)多個(gè)從站的訪(fǎng)問(wèn),在數(shù)據(jù)幀的長(zhǎng)度允許范圍內(nèi),一個(gè)數(shù)據(jù)幀可完成多個(gè)從站的掃描。但是在主站識(shí)別其它主站時(shí),主站之間并行,所以每個(gè)數(shù)據(jù)幀只能完成對(duì)一個(gè)主站的訪(fǎng)問(wèn)。
3.1 主站對(duì)總線(xiàn)的掃描流程
在主站代碼中,主站對(duì)總線(xiàn)的掃描是在空閑線(xiàn)程中進(jìn)行的,在沒(méi)有應(yīng)用請(qǐng)求的狀態(tài)下,主站驅(qū)動(dòng)只會(huì)運(yùn)行在空閑線(xiàn)程,在該階段執(zhí)行的具體函數(shù)由狀態(tài)機(jī)根據(jù)不同的判斷條件執(zhí)行不同的回調(diào)函數(shù),進(jìn)而有序的循環(huán)執(zhí)行。其運(yùn)行基本流程如圖5所示。
圖5 空閑線(xiàn)程運(yùn)行流程圖
3.2 主站數(shù)據(jù)結(jié)構(gòu)的擴(kuò)充
原生的驅(qū)動(dòng)代碼中,描述主站的結(jié)構(gòu)體中沒(méi)有針對(duì)其它主站的描述,文中對(duì)于描述主站結(jié)構(gòu)體struct ec_master進(jìn)行擴(kuò)充,需在該結(jié)構(gòu)體內(nèi)添加如下代碼:
structec_master{
……
struct other_master *com_master;
unsigned int master_count;
ec_datagram_t to_master_datagram;
ec_datagram_t exchange_master_datagram;
struct list_head other_master_queue;
}
其中對(duì)于其它主站的結(jié)構(gòu)體定義為:
structother_master{
struct list_head queue; //主站鏈表
unsigned int alias;//主站的別名
uint8_t macs[6];//主站間通信端口的MAC
unsigned int slave_num;//主站對(duì)應(yīng)從站數(shù)
ec_master_phase_t phase; 主站狀態(tài)
unsigned long clock;//主站時(shí)鐘
unsigned char user_datas[1024];//用戶(hù)數(shù)據(jù)
};
文中對(duì)struct ec_master額外增加了兩數(shù)據(jù)報(bào),其中數(shù)據(jù)報(bào)to_master_datagram為主站與主站間通信的數(shù)據(jù)報(bào)。exchange_master_datagra為主站接收到通信數(shù)據(jù)報(bào)后處理信息的緩存數(shù)據(jù)報(bào)。
3.3 主站發(fā)送數(shù)據(jù)幀
IGH發(fā)布原生的代碼中,有冗余支持,但是冗余通信端口也是主站與從站通信端口,為使代碼支持主站與主站間通信,文中將冗余端口的功能修改為主站與主站通信端口,因此在主站空閑階段中,文中主站間通信數(shù)據(jù)報(bào)to_master_datagram的發(fā)送設(shè)備應(yīng)指定為冗余端口,具體發(fā)送函數(shù)可為:
ec_datagram_brd(&master->to_master_datagram,
ec_datagram_zero(&master->to_master_datagram); master->to_master_datagram.to_send_type
ec_master_queue_datagram(master,
ec_master_send_datagrams()。
3.4 主站接收數(shù)據(jù)幀發(fā)送數(shù)據(jù)幀
接收數(shù)據(jù)幀的底層驅(qū)動(dòng)函數(shù)無(wú)需任何的改變,處理函數(shù)進(jìn)行修改,修改后的接收處理函數(shù)流程圖如圖6所示。
圖6 接收處理函數(shù)流程圖
對(duì)于接收到的主站間通信數(shù)據(jù),只需要把接收到的數(shù)據(jù)幀的數(shù)據(jù)存儲(chǔ)在指定內(nèi)存中,然后加入到鏈表,使用時(shí)遍歷該鏈表即可。文中定義函數(shù)ec_master_queue_master()用來(lái)將其它主站信息放入鏈表,主要代碼如下:
list_for_each_entry(queued_master,
if(memcmp(queued_master->macs,
kfree(bus_master);
return;
}
}
list_add_tail(&bus_master->queue,
master->master_count+=1。
由于在主站之間通信與主從之間通信分別使用不同的網(wǎng)卡端口,因此文中使用了冗余端口的功能,因此在安裝驅(qū)動(dòng)時(shí)要設(shè)定使能冗余端口。安裝配置時(shí)執(zhí)行如下命令:
./configure --prefix=Install_dir
其中,參數(shù)--enable-generic=yes指明使用通用網(wǎng)卡,參數(shù)--with-devices=2 指明本驅(qū)動(dòng)安裝2個(gè)以太網(wǎng)設(shè)備。參數(shù)為--enable-wildcards表明目的地址為0xffffffff 將會(huì)匹配所有的廠(chǎng)商ID或者產(chǎn)品碼。
5.1 測(cè)試硬件平臺(tái)
中分別選用三個(gè)主站模塊,一個(gè)從站測(cè)試模塊進(jìn)試驗(yàn)。其中主站模塊IAC-335X-Kit評(píng)估板集成 2個(gè)工業(yè)用千兆以太網(wǎng) MAC。另外兩個(gè)為開(kāi)源可擴(kuò)展硬件平臺(tái)BeagleBone Black,因其僅有一個(gè)以太網(wǎng)MAC,僅配置為主站通信,不再連接其它的從站設(shè)備。實(shí)驗(yàn)平臺(tái)實(shí)物圖如圖7所示。
圖7 實(shí)驗(yàn)平臺(tái)實(shí)物圖
5.2 EtherCAT多主站間通信測(cè)試
文中分別將主站驅(qū)動(dòng)配置到不同的linux版本進(jìn)行測(cè)試。文中測(cè)試過(guò)程中,主站模塊在IAC-335X-Kit評(píng)估板安裝的嵌入式系統(tǒng)為linux-3.2.21并修補(bǔ)了實(shí)時(shí)補(bǔ)丁RT-Preempt,為主站驅(qū)動(dòng)提供一個(gè)硬實(shí)時(shí)運(yùn)行環(huán)境[12]。BeagleBone Black平臺(tái)安裝的嵌入式系統(tǒng)為linux-3.14,為非實(shí)時(shí)操作系統(tǒng)。
對(duì)于驅(qū)動(dòng)的測(cè)試,在linux應(yīng)用層,編寫(xiě)代碼以1秒為周期向從發(fā)送數(shù)據(jù)。文中是使用修改過(guò)的IGH EtherCAT提供的命令行工具,執(zhí)行后會(huì)顯示相應(yīng)端口掃描到的總線(xiàn)上的其它主站或者從站的信息,以雙網(wǎng)口的主站為例,則主站統(tǒng)計(jì)信息如圖8所示。
圖8 主站統(tǒng)計(jì)信息
上面信息顯示,Phase: Operation表明主站運(yùn)行在可操作階段;Active: yes表明驅(qū)動(dòng)有應(yīng)用層調(diào)用;Slaves: 1表明總線(xiàn)上有1個(gè)從站模塊;后續(xù)信息表明,除本主站外總線(xiàn)仍有2個(gè)主站模塊,對(duì)應(yīng)主站的MAC分別為54:4a:16:b9:b3:63和54:4a:16:be:db:4f;圖中的統(tǒng)計(jì)信息,Main指定的網(wǎng)卡接口連接的是從站,Tx frames的Rx frames差值為1表明無(wú)數(shù)據(jù)這丟失,在從站通信中,發(fā)送的幀率平均為100幀/s,發(fā)送速率為5.9Kbyte/s;由于主站之間是平行的,每個(gè)主站都可以獨(dú)立的廣播發(fā)送報(bào)文,因此在上圖標(biāo)注的Backup主站通信端口,實(shí)際接收到的數(shù)據(jù)要比實(shí)際發(fā)送的幀數(shù)要多,以致統(tǒng)計(jì)工具中接收數(shù)據(jù)出現(xiàn)負(fù)值,實(shí)際則滿(mǎn)足主站通信要求。
該文基于AM3358硬件平臺(tái),補(bǔ)充IGH EtherCAT主站驅(qū)動(dòng)代碼,以盡量不影響原功能的原則,設(shè)計(jì)了EtherCAT主站間通信協(xié)議。實(shí)現(xiàn)了在實(shí)時(shí)RT-Patch linux系統(tǒng)和原生linux系統(tǒng)中EtherCAT主站與主站通信。解決了開(kāi)源代碼EtherCAT驅(qū)動(dòng)僅支持主站與從站之間通信的限制。滿(mǎn)足了數(shù)控系統(tǒng)大規(guī)模組網(wǎng)需求。該主站與主站之間的通信設(shè)計(jì)為構(gòu)建EtherCAT數(shù)控系統(tǒng)復(fù)雜網(wǎng)絡(luò),形成分布式架構(gòu)以實(shí)現(xiàn)工業(yè)大數(shù)據(jù)處理,提供必要保障。
[1] 郇級(jí),劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線(xiàn)EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[2] 佚名. EtherCAT助力沈陽(yáng)機(jī)床實(shí)現(xiàn)i5智能數(shù)控機(jī)床[J]. 國(guó)內(nèi)外機(jī)電一體化技術(shù), 2015(3):45-46.
[3] Cheol Jin An, Hyun Chul Yi, Hyoung Woo Kim, et al. Preventing data loss in linux-based EtherCAT master [J]. International Journal of Future Computer and Communication,2015,4(4): 246-249.
[4] 李備備,欒勇,王超,等.基于AM3358處理器的嵌入式實(shí)時(shí)EtherCAT主站構(gòu)建[J].組合機(jī)床與自動(dòng)化加工技術(shù), 2015(5):1-5.
[5] 任計(jì)羽,范永坤,熊皚.EtherCAT高性能從站的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用, 2014,34(S1):18-20.
[6] Cereia M, Bertolotti I C, Scanzio S. Performance of a real-time EtherCAT master under linux [J]. Industrial Informatics, IEEE Transactions on,2013,7(4): 679-687.
[7] YI Hyunchul, CHOI Joonyoung. Performance analysis of linux-based EtherCAT DC synchronization[C]// AIM 2015: Advanced Intelligent Mechatronics (AIM), 2015 IEEE International Conference on. Busan: IEEE, 2015:549-552.
[8] 郇極,劉喆,靳陽(yáng),等.實(shí)時(shí)工業(yè)以太網(wǎng)EtherCAT時(shí)序特性分析系統(tǒng)[J].北京航空航天大學(xué)學(xué)報(bào),2013,39(9): 1238-1242.
[9] IGH,Etherlab. EtherCAT master for Linux. [EB/OL]. [2013-01-29]. http://www.etherlab.org/ download/ ethercat/ethercat-1.5.2.pdf.
[10] TEXAS INSTRUMENTS.TI WIKI[EB/OL]. [2015-04-15], http://processors.wiki.ti.com/index.php/ Main_Page.
[11] 張磊. 基于EtherCAT的主站通信控制器設(shè)計(jì)[D].廣州: 廣東工業(yè)大學(xué),2013.
[12] 陸小虎,劉玉香,于東,等.基于CORTEX-A8處理器的嵌入式數(shù)控系統(tǒng)實(shí)時(shí)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2013, 34 (7) : 1689-1692.
(編輯 李秀敏)
Research and Realization on EtherCAT Master and the Master Communication Protocol
DANG Xuan-ju, LI Shuai-shuai, WU Xi-ru, JIANG Hui
(School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin Guangxi 541004, China)
EtherCAT is currently the highest speed industrial fieldbus networks, which is widely used in numerical control systems recent years due to the advantages of its high utilization rate of bandwidth, low delay of stacks and low switching latency. To satisfy the communication needs between the EtherCAT masters, to further extend the functionalities of EtherCAT network and to provide technical support of complex EtherCAT industrial network, the new protocol is designed to support communication between EtherCAT masters without any affects on the communication function of master and slave, upon which the IGH open source drive function is expanded and the communication between EtherCAT masters is achieved on AM3358 processor hardware platform. In this paper, the design is tested on RT-Patch in real time Linux system and native Linux system, respecttively. The test results show that this program is processed stably and can mutually communicate between the master to slave and master to master to meet different demands of industrial networks. To achieve the establishment of complex EtherCAT numerical control systems networks and rapidly acquisition of big data, the key problem of communication between the masters is solved.
EtherCAT; master; industrial fieldbus; big data acquisition
1001-2265(2017)01-0098-04
10.13462/j.cnki.mmtamt.2017.01.027
2016-03-09
國(guó)家自然科學(xué)基金項(xiàng)目(61263013);廣西信息科學(xué)實(shí)驗(yàn)中心項(xiàng)目(20130110);廣西自然科學(xué)基金項(xiàng)目(2014GXNSFBA118275,2015GXNSFAA139297);廣西高??蒲许?xiàng)目(YB2014128)
黨選舉(1965—),男,陜西咸陽(yáng)人,桂林電子科技大學(xué)教授,博士,研究方向?yàn)楣I(yè)現(xiàn)場(chǎng)總線(xiàn),(E-mail)xjd69@163.com。
TH166;TG659
A
組合機(jī)床與自動(dòng)化加工技術(shù)2017年1期