張林 彭國(guó)文 陳劍棟
摘 ?要:在工業(yè)實(shí)時(shí)以太網(wǎng)領(lǐng)域,EtherCAT的應(yīng)用越來(lái)越廣泛,伺服系統(tǒng)在工廠(chǎng)自動(dòng)化生產(chǎn)、數(shù)控機(jī)床、機(jī)器人自動(dòng)控制等方面有著廣泛的應(yīng)用。高端的伺服已經(jīng)對(duì)實(shí)時(shí)的以太網(wǎng)總線(xiàn)有了一定的支持,使用EtherCAT對(duì)伺服系統(tǒng)進(jìn)行控制有著非常廣泛的需求。本文從對(duì)EtherCAT技術(shù)和伺服控制規(guī)范的介紹入手,展示了如何在嵌入式平臺(tái)使用Linux操作系統(tǒng)進(jìn)行EtherCAT主站開(kāi)發(fā)和使用開(kāi)發(fā)的主站對(duì)伺服進(jìn)行控制的一般流程。
關(guān)鍵詞:EtherCAT;伺服系統(tǒng);實(shí)時(shí)以太網(wǎng)技術(shù)
中圖分類(lèi)號(hào):TP273;TM383.4 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)14-0131-04
Control and Application of Servo Motor Based on EtherCAT
ZHANG Lin1,PENG Guowen2,CHEN Jiandong1
(1.Guangzhou Zhiyuan Electronics Co.,Ltd.,Guangzhou ?510660,China;
2.Guangzhou Ligong Science and Technology Co.,Ltd.,Guangzhou ?510660,China)
Abstract:EtherCAT is becoming more and more widely used in the field of industrial real time Ethernet. Servo system is widely used in factory automation production,CNC machine tools,robot automatic control and other aspects. High-end servo system has some support for real-time Ethernet bus,and the use of EtherCAT for servo system control has a very wide demand. Starting with the introduction of EtherCAT technology and servo control specification,this paper shows how to use Linux operating system to develop and use EtherCAT master station to control servo on embedded platform.
Keywords:EtherCAT;servo system;real-time ethernet technology
0 ?引 ?言
EtherCAT(Ethernet for Control Automation Tech-nology)是一種由德國(guó)倍福(Beckhoff Automation)發(fā)明,基于以太網(wǎng)的實(shí)時(shí)工業(yè)現(xiàn)場(chǎng)總線(xiàn)通信協(xié)議。EtherCAT基于以太網(wǎng)技術(shù),具有以太網(wǎng)的傳輸速度快、數(shù)據(jù)包容量大、傳輸距離較長(zhǎng)等優(yōu)點(diǎn)。傳統(tǒng)以太網(wǎng)的介質(zhì)訪(fǎng)問(wèn)控制MAC(Media Access Control)采用帶有沖突檢測(cè)的載波偵聽(tīng)多路訪(fǎng)問(wèn)機(jī)制CSMA/CD(Carrier Sense Multiple Access with Collision Detection),這種非確定性的介質(zhì)訪(fǎng)問(wèn)控制方式不能滿(mǎn)足工業(yè)現(xiàn)場(chǎng)總線(xiàn)的實(shí)時(shí)性要求。EtherCAT為了實(shí)現(xiàn)實(shí)時(shí)性,對(duì)IEEE 802.3以太網(wǎng)協(xié)議進(jìn)行了修改和擴(kuò)展,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性以及高精度的時(shí)鐘同步。EtherCAT使用分布式時(shí)鐘,通過(guò)對(duì)傳輸延時(shí)的測(cè)量、系統(tǒng)時(shí)鐘偏差補(bǔ)償以及系統(tǒng)時(shí)鐘漂移補(bǔ)償,可以使整個(gè)系統(tǒng)的抖動(dòng)小于1μs。EtherCAT使用標(biāo)準(zhǔn)以太網(wǎng)的幀結(jié)構(gòu),使用0x88A4幀類(lèi)型以區(qū)別于IP和其他的幀類(lèi)型,主站使用標(biāo)準(zhǔn)的以太網(wǎng)卡,從站使用專(zhuān)門(mén)的硬件實(shí)現(xiàn),在實(shí)時(shí)通道內(nèi)由實(shí)時(shí)MAC接管通信控制,以實(shí)現(xiàn)通訊的實(shí)時(shí)性。EtherCAT技術(shù)協(xié)會(huì)(ETG)是全球最大的現(xiàn)場(chǎng)總線(xiàn)組織,ETG下多個(gè)技術(shù)工作組的專(zhuān)家致力于EtherCAT各個(gè)方面的工作,以保持EtherCAT技術(shù)的穩(wěn)定性和互操作性。ETG制訂了ETG.1000(Part 1-6)系列規(guī)范文件來(lái)規(guī)范對(duì)EtherCAT技術(shù)的使用。
1 ?EtherCAT與運(yùn)動(dòng)系統(tǒng)控制
EtherCAT的數(shù)據(jù)幀由主站發(fā)出,由從站接收,從站控制器ESC(EtherCAT Slave Controller)對(duì)數(shù)據(jù)幀進(jìn)行解析,如果是尋址到自己的報(bào)文,則根據(jù)報(bào)文中的命令進(jìn)行數(shù)據(jù)的輸入或者輸出處理,處理后的數(shù)據(jù)會(huì)發(fā)送給下一個(gè)從站。ESC一般由專(zhuān)用的硬件、ASIC或FPGA實(shí)現(xiàn),因此處理速度很快,每個(gè)從站對(duì)數(shù)據(jù)幀處理完畢后,數(shù)據(jù)幀會(huì)通過(guò)全雙工的以太網(wǎng)返回主站,這樣就完成了一次數(shù)據(jù)的輸入或者輸出。這種數(shù)據(jù)處理機(jī)制允許EtherCAT網(wǎng)絡(luò)在任意位置采用分支結(jié)構(gòu),分支結(jié)構(gòu)可以構(gòu)成不同的物理拓?fù)浣Y(jié)構(gòu),如線(xiàn)形、樹(shù)形、星形以及各種結(jié)構(gòu)的組合,使設(shè)備的連線(xiàn)和布線(xiàn)非常方便。
伺服系統(tǒng)是用來(lái)精確地跟隨或者復(fù)現(xiàn)某個(gè)過(guò)程的反饋控制系統(tǒng)。伺服系統(tǒng)能實(shí)現(xiàn)物理的位置、方向、狀態(tài)等輸出被控制量能夠跟隨輸入目標(biāo)的任意變化的自動(dòng)控制,是工業(yè)自動(dòng)化的重要組成部分。伺服系統(tǒng)可以精確地完成定位并進(jìn)行運(yùn)動(dòng)控制,使之在工業(yè)自動(dòng)化、數(shù)控機(jī)床、機(jī)器人等各方面有非常廣泛的應(yīng)用。隨著電子技術(shù)水平的提高,現(xiàn)代伺服系統(tǒng)朝著數(shù)字化、網(wǎng)絡(luò)化、智能化、高效化發(fā)展;隨著工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)等理論的提出,現(xiàn)代伺服逐漸向數(shù)字信號(hào)控制、網(wǎng)絡(luò)模塊控制的方向轉(zhuǎn)變。數(shù)字控制技術(shù)、總線(xiàn)控制技術(shù)等現(xiàn)代化技術(shù)已經(jīng)逐漸被伺服廠(chǎng)商采用。已經(jīng)有協(xié)議對(duì)運(yùn)動(dòng)控制系統(tǒng)進(jìn)行了標(biāo)準(zhǔn)化規(guī)范并提供了支持,使各個(gè)廠(chǎng)商的產(chǎn)品可以方便地進(jìn)行互聯(lián)互操作。目前應(yīng)用比較廣泛的是CANopen協(xié)議。
CANopen協(xié)議由CAN in Automation(CiA)發(fā)表,最初是一個(gè)基于控制器局域網(wǎng)總線(xiàn)CAN(Control Area Network)的通訊協(xié)議。CAN總線(xiàn)協(xié)議由博世公司提出,后被國(guó)際化標(biāo)準(zhǔn)組織ISO進(jìn)行標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化代碼為ISO 11898。它定義了通訊的物理層以及數(shù)據(jù)鏈路層,但是對(duì)于OSI網(wǎng)絡(luò)模型上網(wǎng)絡(luò)層以及上層協(xié)議缺乏對(duì)應(yīng)的的支持。CANopen定義了基于CAN物理層和數(shù)據(jù)鏈路層的基本的通訊子協(xié)議(CiA301)以及支持特定設(shè)備規(guī)范的設(shè)備子協(xié)議(CiA401、CiA402等),CiA301支持設(shè)備地址編碼、網(wǎng)絡(luò)管理、設(shè)備監(jiān)測(cè)、設(shè)備間通訊等基本通訊規(guī)范。對(duì)于特定設(shè)備,CiA使用設(shè)備子協(xié)議在CiA301基礎(chǔ)上進(jìn)行定義。CANopen定義了CiA402設(shè)備子協(xié)議規(guī)范進(jìn)行運(yùn)動(dòng)控制相關(guān)的設(shè)備子協(xié)議。CANopen最開(kāi)始是基于CAN物理層和數(shù)據(jù)鏈路層,但是CANopen也可以使用如EtherNet POWERLINK或EtherCAT等實(shí)時(shí)以太網(wǎng)方案進(jìn)行通訊。
EtherCAT技術(shù)工作組制定了ETG.6010規(guī)范來(lái)對(duì)CiA402進(jìn)行支持,并結(jié)合EtherCAT技術(shù)特性,加入了新的伺服工作模式,如周期同步位置模式、周期同步速度模式、周期同步轉(zhuǎn)矩模式。其中周期同步位置模式(Cyclic synchronous position mode,CSP)是最為常用的模式。CiA402定義了伺服狀態(tài)的轉(zhuǎn)換如圖1所示。
根據(jù)CiA402規(guī)范,狀態(tài)切換以及當(dāng)前狀態(tài)的獲取主要通過(guò)對(duì)象字典中索引為0x6040的控制字和0x6041狀態(tài)字的對(duì)象進(jìn)行控制和獲取。伺服會(huì)根據(jù)當(dāng)前所處的狀態(tài),接受命令進(jìn)行相應(yīng)的狀態(tài)轉(zhuǎn)換。在EtherCAT中主站可以將從站的控制字和狀態(tài)字映射進(jìn)過(guò)程數(shù)據(jù),通過(guò)周期性的過(guò)程數(shù)據(jù)輸入輸出控制伺服狀態(tài)切換以及獲取檢測(cè)伺服的當(dāng)前狀態(tài)。
2 ?EtherCAT主站開(kāi)發(fā)
只要有標(biāo)準(zhǔn)的以太網(wǎng)卡即可滿(mǎn)足EtherCAT主站的硬件需求,根據(jù)應(yīng)用的場(chǎng)合,我們可以選擇適合的主站方案。更強(qiáng)大的主站CPU可以進(jìn)行更多主站任務(wù)的處理,可以實(shí)現(xiàn)更短的通訊周期。我們這里選取了基于NXP i.MX 6系列的Arm Cortex-A9四核心的處理器,使用Linux操作系統(tǒng)為基礎(chǔ)進(jìn)行主站的開(kāi)發(fā)。為了滿(mǎn)足過(guò)程數(shù)據(jù)交換較高的實(shí)時(shí)性的需求,可以對(duì)Linux操作系統(tǒng)打上實(shí)時(shí)補(bǔ)丁?;贑ortex-A9強(qiáng)大的四核強(qiáng)大處理器,不僅可以滿(mǎn)足主站的功能需求,也可以為用戶(hù)自己的程序提供強(qiáng)大的運(yùn)算能力支持,支持復(fù)雜的用戶(hù)邏輯和任務(wù)。采用Linux系統(tǒng),可以減少開(kāi)發(fā)的復(fù)雜度,方便不同開(kāi)發(fā)人員進(jìn)行分工,系統(tǒng)開(kāi)發(fā)人員負(fù)責(zé)系統(tǒng)的移植,設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā),應(yīng)用開(kāi)發(fā)人員只需要關(guān)心應(yīng)用邏輯,專(zhuān)心進(jìn)行實(shí)際項(xiàng)目邏輯的開(kāi)發(fā)。同時(shí)采用Linux系統(tǒng)也可以將應(yīng)用和設(shè)備的硬件解耦,使用操作系統(tǒng)提供的編程接口,方便程序運(yùn)行在不同的設(shè)備上,減少移植時(shí)的工作量,提高效率。
2.1 ?主站功能需求
作為EtherCAT主站,我們需要提供以下的基本功能。
2.1.1 ?ENI文件的讀取解析
ETG定義主站運(yùn)行時(shí)需要的ENI文件規(guī)范,主站需要支持ENI文件的解析,獲取網(wǎng)絡(luò)配置參數(shù)、從站數(shù)量、從站初始化命令等信息。
2.1.2 ?從站設(shè)備管理
從ENI文件解析出從站的信息,在EtherCAT狀態(tài)切換時(shí)對(duì)設(shè)備進(jìn)行初始化、從站配置等功能。
2.1.3 ?實(shí)現(xiàn)過(guò)程數(shù)據(jù)通信
過(guò)程數(shù)據(jù)通信就是周期性數(shù)據(jù)的輸入和輸出,主站通過(guò)周期性的數(shù)據(jù)交換和從站進(jìn)行交互,實(shí)現(xiàn)對(duì)從站的控制和從站狀態(tài)的獲取檢測(cè)。
2.1.4 ?支持郵箱通信,實(shí)現(xiàn)非周期性數(shù)據(jù)傳輸
通過(guò)郵箱通信,可以支持EtherCAT應(yīng)用層協(xié)議,如CoE,F(xiàn)oE等,實(shí)現(xiàn)對(duì)從站的部分配置功能。
2.2 ?從站設(shè)備
為了驗(yàn)證支持EtherCAT的伺服系統(tǒng)的操作一致性,以及展示多個(gè)伺服系統(tǒng)之間的同步,我們采用兩個(gè)不同廠(chǎng)商的伺服系統(tǒng)進(jìn)行控制,一臺(tái)臺(tái)達(dá)公司的ASDA-A2-E的伺服系統(tǒng)和一臺(tái)武漢邁信公司的EP3E伺服系統(tǒng)。為了控制的方便,我們?cè)谙到y(tǒng)中添加了一些數(shù)字量IO模塊和模擬器采集模塊來(lái)進(jìn)行系統(tǒng)的控制和展示。數(shù)字量IO可以作為伺服的模式切換開(kāi)關(guān),切換伺服的周期性同步位置模式(CSP)和周期性同步速度模式(CSV)。在周期性同步位置模式下,我們可以把模擬量輸入的值轉(zhuǎn)化為電機(jī)的位置,這樣可以通過(guò)修改模擬量的輸入控制電機(jī)的位置。為了便于修改模擬量輸入,我們可以在模擬量輸入部分安裝一個(gè)旋鈕,使用旋鈕控制電機(jī)轉(zhuǎn)動(dòng)的位置,實(shí)現(xiàn)位置模式下的電機(jī)隨旋鈕進(jìn)行同步的位置控制。在周期性同步速度模式下,將采集到的模擬量輸入轉(zhuǎn)換為轉(zhuǎn)速,實(shí)現(xiàn)通過(guò)旋轉(zhuǎn)旋鈕控制電機(jī)的轉(zhuǎn)速。
為了對(duì)從站進(jìn)行控制,我們需要對(duì)從站的數(shù)據(jù)對(duì)象進(jìn)行映射。根據(jù)從站設(shè)備提供的ESI文件,將從站的對(duì)象字典的數(shù)據(jù)映射作為過(guò)程數(shù)據(jù)的輸出數(shù)據(jù),用于主站對(duì)從站伺服的控制,如表1所示。為了獲取從站的狀態(tài),如伺服的狀態(tài)、伺服電機(jī)當(dāng)前的速度、位置信息和數(shù)字量輸入狀態(tài)和模擬量輸入數(shù)據(jù)等,我們對(duì)設(shè)備對(duì)象字典的對(duì)象進(jìn)行過(guò)程數(shù)據(jù)的輸入映射,如表2所示。
2.3 ?分布式時(shí)鐘
為了使用伺服的周期同步位置模式和周期同步速度模式,主站必須啟用分布式時(shí)鐘的功能,在EtherCAT網(wǎng)絡(luò)內(nèi)實(shí)現(xiàn)時(shí)鐘的精準(zhǔn)同步,并且啟用SYNC0輸出。設(shè)置時(shí)需要注意主站周期性數(shù)據(jù)的周期需要和SYNC0周期相同,同時(shí)從站對(duì)象字典0x60C2:01和0x60C2:02必須被設(shè)置為和SYNC0相同的周期,否則會(huì)導(dǎo)致從站報(bào)警甚至錯(cuò)誤導(dǎo)致電機(jī)停機(jī)。假如我們?cè)O(shè)置SYNC0同步周期為1ms,0x60C2:01需要設(shè)置為0x01,0x60C2:02需要設(shè)置為0xFD(-3)。從站對(duì)象字典值我們可以在主站啟動(dòng)后通過(guò)SDO命令對(duì)從站的對(duì)象進(jìn)行寫(xiě)入操作,但是更便捷的方式是在主站狀態(tài)切換過(guò)程中通過(guò)初始化命令進(jìn)行從站的對(duì)象寫(xiě)入操作。在主站ENI文件中添加初始化命令,使用SDO Upload將需要的值寫(xiě)入從站。ENI中設(shè)置從站同步周期的初始化命令如下所示:
2.4 ?主站開(kāi)發(fā)
因?yàn)橹髡境绦蚴沁\(yùn)行在使用Arm處理器的Linux操作系統(tǒng)上,與一般桌面程序的開(kāi)發(fā)和運(yùn)行在同一個(gè)平臺(tái)不同,其需要在桌面系統(tǒng)環(huán)境下進(jìn)行程序的開(kāi)發(fā),然后使用交叉編譯器編譯目標(biāo)平臺(tái)的庫(kù)和應(yīng)用程序,最后將交叉編譯生成的文件拷貝到設(shè)備端運(yùn)行。
為了加快主站開(kāi)發(fā)速度,我們可以選擇市面上一些已經(jīng)成熟的的主站庫(kù)進(jìn)行二次開(kāi)發(fā),這樣可以節(jié)省大量的時(shí)間。KPA EtherCAT Master主站庫(kù)提供了完善的接口和豐富的功能,支持符合ETG標(biāo)準(zhǔn)的ENI解析,過(guò)程映像數(shù)據(jù)的輸入輸出,完整支持郵箱功能以及各種常用的EtherCAT應(yīng)用層協(xié)議如CoE,EoE,SoE,F(xiàn)oE等,對(duì)分布式時(shí)鐘也有完整的支持。我們采用KPA EtherCAT Master主站庫(kù)來(lái)進(jìn)行二次開(kāi)發(fā),對(duì)從站進(jìn)行控制,完成主站的功能。
使用開(kāi)發(fā)庫(kù),我們可以方便地進(jìn)行核心邏輯功能的處理,主站程序的執(zhí)行流程如圖2所示。程序運(yùn)行后,可以通過(guò)開(kāi)關(guān)進(jìn)行周期同步位置和速度模式的切換,并可以使用電位器進(jìn)行位置和速度的調(diào)節(jié)。
3 ?結(jié) ?論
本文通過(guò)對(duì)EtherCAT技術(shù)介紹以及對(duì)伺服控制的方法的說(shuō)明,提出一套通用的開(kāi)發(fā)流程進(jìn)行主站程序開(kāi)發(fā),通過(guò)和伺服與IO模塊進(jìn)行通訊,實(shí)現(xiàn)對(duì)被控伺服設(shè)備的控制。EtherCAT協(xié)議的統(tǒng)一性,也讓不同廠(chǎng)商的產(chǎn)品可以互聯(lián)互通以及相互替換,對(duì)設(shè)備的生產(chǎn)商和最終用戶(hù)提供了巨大的便利。
參考文獻(xiàn):
[1] 郇極,劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線(xiàn)EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用 [M].北京:北京航空航天大學(xué)出版社,2010:3-29.
[2] EtherCAT Technology Group.ETG6010_V1i1i0_D_R_CiA402_ImplDirective [S/OL].https://www.ethercat.org/memberarea/download/ETG6010_CiA402_ImplementationDirective.zip,2014-11-19.
作者簡(jiǎn)介:張林(1988-),男,漢族,河南鄧州人,開(kāi)發(fā)工程師,工學(xué)學(xué)士,研究方向:工業(yè)通訊、計(jì)算機(jī)軟件。