吳清收,俞雙懋,王楠
(山東科技大學(xué) 機(jī)械電子工程學(xué)院,青島 266590)
?
實(shí)時(shí)系統(tǒng)下基于EtherCAT的伺服電機(jī)控制方法
吳清收,俞雙懋,王楠
(山東科技大學(xué) 機(jī)械電子工程學(xué)院,青島 266590)
摘要:在實(shí)時(shí)性控制系統(tǒng)與通信領(lǐng)域內(nèi),Xenomai與EtherCAT都具有良好的發(fā)展前景。為了進(jìn)一步提高伺服電機(jī)控制系統(tǒng)的實(shí)時(shí)性,本文結(jié)合Xenomai與EtherCAT各自的優(yōu)點(diǎn),在Xenomai架構(gòu)下實(shí)現(xiàn)EtherCAT通信,從而進(jìn)一步縮短電機(jī)控制響應(yīng)周期。最后在工業(yè)級(jí)工控機(jī)上進(jìn)行系統(tǒng)測(cè)試,測(cè)試結(jié)果表明,此架構(gòu)下的實(shí)時(shí)通信系統(tǒng)可達(dá)到良好的實(shí)時(shí)效果。
關(guān)鍵詞:伺服電機(jī)控制;Xenomai;EtherCAT;實(shí)時(shí)性
引言
近幾年來(lái),控制領(lǐng)域?qū)?shí)時(shí)性的要求不斷提高,因此,急需對(duì)實(shí)時(shí)操作系統(tǒng)進(jìn)行更加深入的研究與開(kāi)發(fā)?,F(xiàn)階段比較流行的實(shí)時(shí)操作系統(tǒng)仿真框架Xenomai,用于為L(zhǎng)inux搭建免費(fèi)的工業(yè)級(jí)實(shí)施開(kāi)發(fā)框架。它通過(guò)抽象出一個(gè)實(shí)時(shí)內(nèi)核,為一系列的RTOS服務(wù)提供更多的用戶空間。Xenomai追求最小的調(diào)度響應(yīng)等待時(shí)間,與此同時(shí),還擁有很高的靈活性、可擴(kuò)充性和可維護(hù)性等優(yōu)越的性能。Xenomai的應(yīng)用是通過(guò)Adeos(自適應(yīng)域環(huán)境)來(lái)實(shí)現(xiàn)的,而Adeos是基于Linux的內(nèi)核實(shí)現(xiàn)的,因此,Xenomai不但能在內(nèi)核層通過(guò)使用Adeos實(shí)現(xiàn)硬實(shí)時(shí),而且在用戶層對(duì)用戶的開(kāi)發(fā)也能夠?qū)崿F(xiàn)很好的實(shí)時(shí)性。
Xenomai實(shí)時(shí)系統(tǒng)日益發(fā)展的同時(shí),在工業(yè)自動(dòng)化領(lǐng)域,工業(yè)以太網(wǎng)也在不斷發(fā)展。EtherCAT通信協(xié)議是由德國(guó)倍福公司開(kāi)發(fā)的實(shí)時(shí)以太網(wǎng)協(xié)議,其配置簡(jiǎn)單,全雙工數(shù)據(jù)有效數(shù)據(jù)利用率較高,可兼容以太網(wǎng)通信協(xié)議,在網(wǎng)絡(luò)結(jié)構(gòu)上也支持多數(shù)設(shè)備連接節(jié)點(diǎn)的拓?fù)漕愋?,同樣具有良好的發(fā)展前景。
1對(duì)Xenomai實(shí)時(shí)框架的分析
Xenomai類似于運(yùn)行在雙內(nèi)核模式中的實(shí)時(shí)補(bǔ)丁。Xenomai實(shí)時(shí)內(nèi)核使用實(shí)時(shí)調(diào)度線程的調(diào)度策略,其線程調(diào)度和一般的線程調(diào)度是一樣的,在運(yùn)行的實(shí)時(shí)系統(tǒng)中,只有Xenomai較高優(yōu)先級(jí)的線程才能優(yōu)先運(yùn)行。Xenomai應(yīng)用程序可以運(yùn)行在兩種模式:一是主模式,它由Xenomai內(nèi)核控制,并受益于硬實(shí)時(shí)調(diào)度延遲;二是二級(jí)模式,它是一個(gè)普通的Linux線程,也可以是任何Linux服務(wù)。
一個(gè)動(dòng)態(tài)線程可能會(huì)改變服務(wù)模式,當(dāng)這個(gè)線程調(diào)用Xenomai實(shí)時(shí)服務(wù)并在二級(jí)模式運(yùn)行時(shí),會(huì)切換到主模式,當(dāng)它調(diào)用任何非實(shí)時(shí)Xenomai服務(wù)或任何Linux服務(wù)(包括異常,如頁(yè)面錯(cuò)誤)并在初級(jí)模式運(yùn)行時(shí),就會(huì)切換到輔助模式。
在基于Adeos的系統(tǒng)中,存在多個(gè)域,每個(gè)域中運(yùn)行著一個(gè)獨(dú)立的系統(tǒng)或功能模塊,可以有獨(dú)立的地址空間,在域的下一層中可通過(guò)虛擬中斷來(lái)切換到上層的各個(gè)域。Xenomai在Adeos系統(tǒng)中的域優(yōu)先級(jí)高于Linux域,因此當(dāng)中斷到來(lái)后,Adeos會(huì)優(yōu)先調(diào)度Xenomai對(duì)中斷進(jìn)行處理,并執(zhí)行中斷響應(yīng)的實(shí)時(shí)任務(wù)。圖1表示出了Xenomai、Linux與Adeos之間的關(guān)系。只有在Xenomai沒(méi)有實(shí)時(shí)任務(wù)或者實(shí)時(shí)處理時(shí),Adeos才會(huì)調(diào)度Linux核運(yùn)行,這樣能夠保證實(shí)時(shí)中斷響應(yīng)速度不會(huì)受到Linux系統(tǒng)的影響。Xenomai提供了許多類型的API,包括任務(wù)管理、內(nèi)存堆服務(wù)和信息管道服務(wù)等,可供用戶層進(jìn)行調(diào)用。

圖1 內(nèi)核調(diào)度結(jié)構(gòu)模型
2EtherCAT 協(xié)議主站的研究
Xenomai支持的Linux系統(tǒng)結(jié)構(gòu)可大體劃分為內(nèi)核空間和用戶空間兩部分。內(nèi)核空間來(lái)進(jìn)行進(jìn)程、存儲(chǔ)以及驅(qū)動(dòng)等的管理;用戶空間則主要進(jìn)行應(yīng)用程序的運(yùn)行,是通過(guò)接口(如字符設(shè)備等)進(jìn)行內(nèi)核空間的特定訪問(wèn)。對(duì)于EtherCAT,內(nèi)核空間中要求必須包含有至少一個(gè)主站ec_master,其功能是對(duì)CoE、SoE、Eoe等協(xié)議進(jìn)行解析,對(duì)實(shí)時(shí)主站任務(wù)進(jìn)行調(diào)度以及為從站提供訪問(wèn)接口等。
主站狀態(tài)可分為孤立狀態(tài)、空閑狀態(tài)和操作狀態(tài)。簡(jiǎn)單來(lái)講,模塊加載后屬于孤立狀態(tài),獲取可用設(shè)備之后,不斷請(qǐng)求總線狀態(tài)時(shí)屬于空閑狀態(tài),之后應(yīng)用模塊提供總線配置,調(diào)用請(qǐng)求主站的程序從而使主站進(jìn)入操作狀態(tài)。主站狀態(tài)有主戰(zhàn)狀態(tài)機(jī)管理,主站狀態(tài)機(jī)能夠進(jìn)行總線監(jiān)控(包括重新配置總線等)、從站配置(即監(jiān)視從站的狀態(tài))和請(qǐng)求對(duì)從站寄存器進(jìn)行處理。
在使用EtherCAT通信協(xié)議時(shí),最好是使用可與其相兼容的網(wǎng)絡(luò)設(shè)備,通用型以太網(wǎng)設(shè)備雖然也可用,但是需要調(diào)用內(nèi)核網(wǎng)絡(luò)協(xié)議棧,實(shí)時(shí)性相對(duì)弱些。對(duì)于EtherCAT的應(yīng)用,主要包括下面幾個(gè)流程:
① 總線配置,也叫主從站配置,進(jìn)行從站信息、PDO和SDO等的配置。
② 創(chuàng)建周期性任務(wù),通過(guò)循環(huán)周期任務(wù)來(lái)保證交換數(shù)據(jù)的周期性。
③ 交換過(guò)程數(shù)據(jù)(PDO),這是任務(wù)的主要功能,通過(guò)對(duì)數(shù)據(jù)域的讀寫來(lái)實(shí)現(xiàn)。
3Xenomai的移植
Xenomai提供了與Linux無(wú)縫結(jié)合的實(shí)時(shí)子系統(tǒng),因此在移植時(shí)首先要將Xenomai作為目標(biāo)內(nèi)核的一部分進(jìn)行編譯。對(duì)于Xenomai版本信息,要求必須與Linux目標(biāo)內(nèi)核版本信息相匹配,否則編譯內(nèi)核時(shí)會(huì)出現(xiàn)錯(cuò)誤。在Xenomai安裝包中,提供了一個(gè)有利于用戶安裝編譯的腳本文件scripts/prepare-kernel.sh,用戶通過(guò)它來(lái)將Xenomai作為內(nèi)核補(bǔ)丁安裝到將要進(jìn)行編譯的目標(biāo)內(nèi)核中。
腳本文件使用方法如下:
#./scripts/preparekernel.sh
-Linux=
其中,Linux 選項(xiàng)指定了目標(biāo)內(nèi)核源代碼的路徑;adeos 選項(xiàng)指定了與目標(biāo)內(nèi)核版本相匹配的Adeos補(bǔ)丁的路徑,但如果Adeos已經(jīng)安裝在目標(biāo)內(nèi)核中,這個(gè)參數(shù)選項(xiàng)將會(huì)被忽略;arch 選項(xiàng)給腳本文件指定了目標(biāo)板的結(jié)構(gòu),如果此選項(xiàng)沒(méi)有賦值,編譯系統(tǒng)將會(huì)檢測(cè)并推薦一個(gè)合理的默認(rèn)值。
安裝好實(shí)時(shí)補(bǔ)丁后,需要對(duì)Linux內(nèi)核選項(xiàng)進(jìn)行配置,用戶可以使用#make menuconfig命令進(jìn)行配置。可以看到內(nèi)核配置中會(huì)多出“Real-time sub-system”選項(xiàng),這就說(shuō)明標(biāo)準(zhǔn)Linux內(nèi)核已經(jīng)結(jié)合了實(shí)時(shí)系統(tǒng)內(nèi)核,將會(huì)與內(nèi)核一起被編譯,用戶可以在子選項(xiàng)中保留或刪除相應(yīng)的功能。
對(duì)實(shí)時(shí)系統(tǒng)來(lái)說(shuō),最為重要的是能夠在指定時(shí)間內(nèi)完成指定的功能并且對(duì)外部作出快速并正確的反應(yīng),這就要求控制系統(tǒng)的任務(wù)響應(yīng)時(shí)間最短、響應(yīng)速度最快。因此,任務(wù)響應(yīng)時(shí)間是測(cè)試Xenomai安裝是否可靠的重要指標(biāo)。
Xenomai的安裝包中提供了可供實(shí)時(shí)性測(cè)試的案例,在其example的文件夾中可以找到。用戶可通過(guò)下列命令進(jìn)行Xenomai安裝正確性、中斷和延遲時(shí)間的測(cè)試:
dmesg | grepI-pipe (有輸出說(shuō)明中斷管道正常)
dmesg | grep Xenomai (有輸出說(shuō)明內(nèi)核加載并開(kāi)啟了POSIX和RTDM服務(wù))
cd/usr/src/Xenomai-2.6.1/src/testsuite/latency/./latency -t0 -p 300 -T 180 -h -s(輸出時(shí)間可作為延遲時(shí)間的參考)
使用凌動(dòng)工控板進(jìn)行測(cè)試,測(cè)試結(jié)果顯示,實(shí)時(shí)任務(wù)的平均延遲時(shí)間為11 μs左右,最大響應(yīng)延遲時(shí)間為100 μs左右,能夠保證系統(tǒng)實(shí)時(shí)性能。具體可參考圖2所示。

圖2 Xenomai 下的延遲時(shí)間測(cè)試
4Xenomai與EtherCAT的結(jié)合
Xenomai實(shí)行任務(wù)機(jī)制,通過(guò)創(chuàng)建優(yōu)先級(jí)分類的任務(wù)來(lái)實(shí)現(xiàn)任務(wù)調(diào)度,同時(shí)它也具有專門的任務(wù)優(yōu)先級(jí)設(shè)置功能。而EtherCAT的設(shè)計(jì)目的是支持標(biāo)準(zhǔn)的以太網(wǎng),并且能夠以最低的硬件成本在實(shí)時(shí)控制領(lǐng)域展開(kāi)使用,具有更新周期短、穩(wěn)定性高的優(yōu)點(diǎn)。實(shí)現(xiàn)Xenomai與EtherCAT的通信,也可看成是在Xenomai中創(chuàng)建一個(gè)與EtherCAT相關(guān)的任務(wù),并通過(guò)周期性地執(zhí)行任務(wù)來(lái)達(dá)到周期交互數(shù)據(jù)的目的。具體執(zhí)行過(guò)程如下:
首先,按照EtherCAT主站的工作原理,執(zhí)行請(qǐng)求主站、創(chuàng)建數(shù)據(jù)域、配置從站地址、配置從站PDOs同步、注冊(cè)PDOs列表入口以及激活主站、獲取數(shù)據(jù)域數(shù)據(jù)等一系列功能函數(shù),使EtherCAT的主站處于激活狀態(tài)。部分代碼如下:
master = ecrt_request_master(0);
domain1 = ecrt_master_create_domain(master);
sc_elmo1=ecrt_master_slave_config(master, ELMO1Pos, Elmo_G_S12154014)
ecrt_slave_config_pdos(sc_elmo1,4,slave_0_sync)
ecrt_domain_reg_pdo_entry_list(domain1,domain1_regs)
ecrt_master_activate(master)
domain1_pd = ecrt_domain_data(domain1)
然后,通過(guò)Xenomai創(chuàng)建、啟動(dòng)并執(zhí)行實(shí)時(shí)任務(wù),完成EtherCAT主站與從站的循環(huán)命令交互。部分代碼如下:
ret = rt_task_create(ðercat_task, "my_task", 0, 90, T_FPU);
ret = rt_task_start(ðercat_task, &my_task_proc, NULL);
最后,當(dāng)實(shí)時(shí)任務(wù)結(jié)束時(shí),需要執(zhí)行刪除任務(wù)以及釋放主站命令,從而達(dá)到釋放實(shí)時(shí)任務(wù)的目的。部分代碼如下:
rt_task_delete(ðercat_task);
ecrt_release_master(master);
Xenomai創(chuàng)建的任務(wù)是通過(guò)周期性定時(shí)中斷調(diào)用來(lái)完成的。周期任務(wù)主要用來(lái)發(fā)送主站命令和獲取從站信息,并對(duì)從站的相關(guān)信息進(jìn)行實(shí)時(shí)處理。
5實(shí)時(shí)系統(tǒng)下的伺服電機(jī)控制測(cè)試
測(cè)試對(duì)象是基于實(shí)時(shí)以太網(wǎng)EtherCAT協(xié)議的多軸運(yùn)動(dòng)控制系統(tǒng)。實(shí)驗(yàn)設(shè)備主要采用凌動(dòng)系列主板的工控機(jī)(此系列工控機(jī)具有低功耗的性能優(yōu)勢(shì)),采用倍福公司的從站控制器 ET1100 實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)鏈路層并作為伺服驅(qū)動(dòng)器,采用三菱交流伺服電機(jī)來(lái)連接從站控制器,使用RJ45網(wǎng)線若干進(jìn)行連接,實(shí)現(xiàn)具有 EtherCAT 從站功能的網(wǎng)絡(luò)運(yùn)動(dòng)控制系統(tǒng)。實(shí)驗(yàn)平臺(tái)搭建如圖3所示。

圖3 伺服電機(jī)控制平臺(tái)搭建圖
本測(cè)試系統(tǒng)在Xenomai實(shí)時(shí)內(nèi)核下進(jìn)行EtherCAT協(xié)議通信,從而驅(qū)動(dòng)電機(jī)運(yùn)動(dòng),其間通過(guò)實(shí)時(shí)性與同步性來(lái)保證控制命令能夠被多個(gè)電機(jī)實(shí)時(shí)與同步接收。在進(jìn)行測(cè)試之前,最好先進(jìn)行Xenomai下的延遲時(shí)間測(cè)試,判斷控制系統(tǒng)的實(shí)時(shí)性是否達(dá)到要求,本控制測(cè)試系統(tǒng)的延遲時(shí)間測(cè)試結(jié)果如圖2所示,已經(jīng)達(dá)到可行性要求。實(shí)驗(yàn)數(shù)據(jù)為實(shí)時(shí)系統(tǒng)下的伺服電機(jī)正弦運(yùn)動(dòng)時(shí)的數(shù)據(jù),通過(guò)EASII軟件進(jìn)行采集,正弦運(yùn)動(dòng)曲線如圖4所示。詳細(xì)運(yùn)動(dòng)曲線圖如圖5所示。

圖4 實(shí)時(shí)系統(tǒng)下的伺服電機(jī)正弦運(yùn)動(dòng)曲線
圖5中橫坐標(biāo)為采樣時(shí)間,縱坐標(biāo)為采樣數(shù)據(jù)大小,曲線1為接收的命令曲線,曲線2為電機(jī)實(shí)際運(yùn)動(dòng)曲線,曲線3為處理后的命令曲線,曲線下面部分為選取的采樣點(diǎn)R1與R2的差值。通過(guò)圖4可以看出,電機(jī)的正弦運(yùn)動(dòng)是相當(dāng)平滑的。通過(guò)圖5可以看出,伺服電機(jī)控制的運(yùn)動(dòng)周期△T在1 ms以內(nèi),處于可接受的范圍之內(nèi),可以實(shí)現(xiàn)良好的實(shí)時(shí)效果。

圖5 實(shí)時(shí)系統(tǒng)下的伺服電機(jī)正弦運(yùn)動(dòng)詳細(xì)曲線
結(jié)語(yǔ)
Xenomai實(shí)時(shí)內(nèi)核具有良好的實(shí)時(shí)性框架,用戶可以在其內(nèi)部建立和運(yùn)行各種實(shí)時(shí)性接口程序。通過(guò)Xenomai實(shí)時(shí)系統(tǒng)下的EtherCAT通信研究可知,實(shí)時(shí)控制系統(tǒng)能夠依賴Xenomai來(lái)保證系統(tǒng)的實(shí)時(shí)性與周期性,并通過(guò)EtherCAT來(lái)保證整個(gè)控制系統(tǒng)的周期同步性。該測(cè)試研究現(xiàn)已成功用于四軸伺服電機(jī)的同步控制。未來(lái)通過(guò)進(jìn)一步優(yōu)化控制系統(tǒng),可以縮短任務(wù)周期,從而向有利于精度高、實(shí)時(shí)性好條件的控制方向發(fā)展,特別是針對(duì)伺服驅(qū)動(dòng)運(yùn)動(dòng)系統(tǒng)的控制方向。
參考文獻(xiàn)
[1] 郇極,劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[2] Essen.IgH EtherCAT Master 1.5.0 Documentation Revision 6129a5f715fb pdf, 2010.
[3] 馬春敏,康存鋒.基于Linux的EtherCAT主站的研究[J].制造業(yè)自動(dòng)化,2011,33(4):78-82.
[4] 單春榮,劉艷強(qiáng).工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT及驅(qū)動(dòng)程序設(shè)計(jì)[J].制造業(yè)自動(dòng)化,2007,9(11):79-82.
[5] 張少勛,郝曉田.基于Linux-RTAI的EtherCAT主戰(zhàn)研究[J].電子設(shè)計(jì)工程,2013,10(21):151-152.
[6] 黎妞.基于EtherCAT的伺服運(yùn)動(dòng)控制系統(tǒng)研究[D].武漢:武漢科技大學(xué),2012.
[7] 張勇.EtherCAT總線接口在數(shù)控系統(tǒng)中的實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
[8] 阮倩茹.基于EtherCAT網(wǎng)絡(luò)的高性能伺服控制系統(tǒng)研究[D].長(zhǎng)沙:湖南大學(xué),2011.
[9] 謝香林.EtherCAT網(wǎng)絡(luò)及其伺服運(yùn)動(dòng)控制系統(tǒng)研究[D].大連:大連理工大學(xué),2008.
[10] 楊昊佐.工業(yè)以太網(wǎng)EtherCAT從站設(shè)計(jì)[D].西安:西安電子科技大學(xué),2013.
吳清收(副教授),從事機(jī)械、電子領(lǐng)域的教學(xué)與科研工作;俞雙懋 (研究生),主要研究方向?yàn)槲C(jī)監(jiān)測(cè)及智能儀器、電機(jī)控制。
(責(zé)任編輯:薛士然收修改稿日期:2015-12-04)
Servo Motor Control Method Based on EtherCAT in Real-time System
Wu Qingshou,Yu Shuangmao,Wang Nan
(College of Mechanical and Electronic Engineering,Shandong University of Science and Technology,Qingdao 266590,China)
Abstract:In the control and conmunication field of the real-time system,Xenomai and EtherCAT communication protocol have good prospects for development.In order to further improve the real-time performance of the industrial control system,the advantages of Xenomai and EtherCAT are comprehensively utilized in the paper.The EtherCAT communication is implemented under the Xenomai architecture,so as to shorten the period of motor control response further.In the end,the experiment results show that the architecture system has good real-time performance.
Key words:servo motor control;Xenomai;EtherCAT;real-time performance
中圖分類號(hào):TP311.1
文獻(xiàn)標(biāo)識(shí)碼:A