黃昭縣,王志成,趙鴻博
(1.中國(guó)科學(xué)院大學(xué),北京 100049;2. 中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所,沈陽(yáng) 110168;3.沈陽(yáng)高精數(shù)控技術(shù)有限公司,沈陽(yáng) 110168)
在工控領(lǐng)域中,單軸運(yùn)動(dòng)是最基本、最常見(jiàn)的運(yùn)動(dòng),因此設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單、控制靈活、成本低廉的單軸控制系統(tǒng)一直是國(guó)內(nèi)外伺服系統(tǒng)研發(fā)中的熱點(diǎn)。
傳統(tǒng)的單軸控制系統(tǒng)采用單軸控制器+伺服驅(qū)動(dòng)器的分立方式。首先,這種分立方式中單軸控制器和伺服驅(qū)動(dòng)器是獨(dú)立的產(chǎn)品,成本較高,而且二者間連接復(fù)雜,通訊時(shí)延較長(zhǎng)[1]。再者,傳統(tǒng)單軸控制器只是完成加減速控制,在上層仍需要一個(gè)復(fù)雜的數(shù)控系統(tǒng)解釋執(zhí)行運(yùn)動(dòng)控制程序,這在一些簡(jiǎn)單的應(yīng)用中無(wú)疑是極大的浪費(fèi)。
近年來(lái)隨著微電子技術(shù)的迅猛發(fā)展,伺服驅(qū)動(dòng)器的硬件性能得到很大提高,有更多的資源來(lái)支持復(fù)雜功能的實(shí)現(xiàn),使單軸控制器的功能集成在伺服驅(qū)動(dòng)器中成為可能。
基于以上兩點(diǎn),本文設(shè)計(jì)實(shí)現(xiàn)了一種嵌入式單軸控制器,并將其嵌入到高性能伺服驅(qū)動(dòng)器中,使伺服驅(qū)動(dòng)器具有加減速控制和解釋執(zhí)行運(yùn)動(dòng)控制程序的功能,降低了系統(tǒng)成本,增加了系統(tǒng)的靈活性。
典型的軸控制系統(tǒng)如圖1 所示,包括軸控制器、伺服驅(qū)動(dòng)器和被控對(duì)象三個(gè)部分。軸控制器根據(jù)上位機(jī)傳遞的運(yùn)動(dòng)參數(shù)完成加減速控制,將位移指令傳遞給伺服驅(qū)動(dòng)器;伺服驅(qū)動(dòng)器進(jìn)行速度位置閉環(huán)矢量控制,將驅(qū)動(dòng)信號(hào)傳遞給伺服電機(jī),完成伺服控制。
軸控制器一般由CNC 或PLC 實(shí)現(xiàn),伺服驅(qū)動(dòng)器一般采用功能強(qiáng)大的DSP,并且基于實(shí)時(shí)操作系統(tǒng)控制平臺(tái)。二者分屬于不同的硬件,運(yùn)行于不同的CPU,相對(duì)獨(dú)立,不存在復(fù)雜的時(shí)序問(wèn)題。
嵌入式單軸控制器如圖1 虛框所示,將軸控制器和伺服驅(qū)動(dòng)器集成在一起,但并不是簡(jiǎn)單地集成到一塊電路板上,而是使兩者共用一個(gè)高性能CPU,需要解決復(fù)雜的時(shí)序問(wèn)題。因此需要良好的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)才能達(dá)到性能的要求。
圖1 伺服控制系統(tǒng)結(jié)構(gòu)
鑒于伺服驅(qū)動(dòng)器強(qiáng)大的硬件性能和實(shí)時(shí)控制要求,設(shè)計(jì)將軸控制器嵌入到伺服驅(qū)動(dòng)器中,并增加解釋執(zhí)行運(yùn)動(dòng)控制程序的功能。參考文獻(xiàn)[2]中提到的可重構(gòu)伺服驅(qū)動(dòng)器,基于TI 公司的DSP/BIOS 實(shí)時(shí)操作系統(tǒng),利用層次化思想對(duì)整體結(jié)構(gòu)進(jìn)行設(shè)計(jì)。
整個(gè)嵌入式單軸控制器體系結(jié)構(gòu)如圖2 所示,分四個(gè)層次:硬件層、驅(qū)動(dòng)層、控制層、應(yīng)用層。硬件層為外部被控對(duì)象(電機(jī))和伺服驅(qū)動(dòng)單元硬件。驅(qū)動(dòng)層是硬件上的第一層軟件,實(shí)現(xiàn)對(duì)硬件層的抽象和封裝,并向上層提供服務(wù)支持??刂茖又饕ㄖ噶钚蛄械拇鎯?chǔ)、解釋器、函數(shù)庫(kù)和運(yùn)動(dòng)控制器以及電機(jī)三環(huán)矢量控制。其中解釋器完成指令代碼的解釋,函數(shù)庫(kù)是相應(yīng)的指令處理函數(shù),運(yùn)動(dòng)控制器完成加減速控制。應(yīng)用層是建構(gòu)在最上層的非實(shí)時(shí)性任務(wù),主要完成系統(tǒng)的人機(jī)交互、通信、參數(shù)管理等功能[2]。
圖2 嵌入式單軸控制器體系結(jié)構(gòu)
DSP/BIOS 實(shí)際上是一個(gè)代碼很小的實(shí)時(shí)庫(kù),包含一個(gè)固定優(yōu)先級(jí)搶占調(diào)度器,用戶通過(guò)調(diào)用系統(tǒng)提供的API 函數(shù)使用實(shí)時(shí)庫(kù)的服務(wù)[3]。為了解決復(fù)雜的時(shí)序問(wèn)題,在控制層設(shè)計(jì)高、中、低三種優(yōu)先級(jí):電機(jī)三環(huán)矢量控制處于高優(yōu)先級(jí),運(yùn)動(dòng)控制器處于中優(yōu)先級(jí),解釋器處于低優(yōu)先級(jí)。
整體的工作流程如下:首先,在上位機(jī)中用類匯編語(yǔ)言進(jìn)行編程,編譯后通過(guò)應(yīng)用層的通訊接口將程序指令代碼序列下載到嵌入式單軸控制器中;然后,控制層的解釋器對(duì)指令代碼程序進(jìn)行解釋,并根據(jù)不同的指令標(biāo)識(shí)符調(diào)用函數(shù)庫(kù)中不同的指令處理函數(shù)進(jìn)行處理,將運(yùn)動(dòng)參數(shù)傳遞給運(yùn)動(dòng)控制器;最后,運(yùn)動(dòng)控制器根據(jù)不同的加減速控制規(guī)律做軌跡規(guī)劃,將位置指令、啟動(dòng)/停止等命令傳遞給電機(jī)三環(huán)矢量控制,以此來(lái)控制電機(jī)的運(yùn)動(dòng)。
在嵌入式單軸控制器中,軸控制器和伺服驅(qū)動(dòng)器間指令信號(hào)的傳遞由內(nèi)部的共享內(nèi)存替代傳統(tǒng)的通訊接口,消除了時(shí)延,提高了系統(tǒng)的實(shí)時(shí)性;增加解釋器和運(yùn)動(dòng)控制器,使伺服驅(qū)動(dòng)器能夠解釋執(zhí)行運(yùn)動(dòng)控制程序,并能對(duì)加減速進(jìn)行控制,提高了系統(tǒng)的靈活性。
嵌入式單軸控制器中,解釋器的功能是把指令代碼序列解釋為一系列的操作,并將運(yùn)動(dòng)控制參數(shù)傳遞給運(yùn)動(dòng)控制器。其中每一行指令代碼(如401,100,300,3000)完成一個(gè)操作。每一行指令代碼中“401”是指令標(biāo)識(shí),“100,300,3000”是參數(shù)。解釋程序讀取一行指令序列后根據(jù)不同的指令標(biāo)識(shí)調(diào)用不同的指令處理函數(shù),指令處理函數(shù)返回要讀取的下一行指令序列號(hào)并給出運(yùn)動(dòng)參數(shù)和控制指令等。
首先,對(duì)指令格式進(jìn)行設(shè)計(jì),如圖3 所示。一條指令由指令標(biāo)志符和參數(shù)組成,有兩種指令格式:一種指令最多有3 個(gè)參數(shù),每個(gè)參數(shù)占2 個(gè)字節(jié);另一種指令最多有2 個(gè)參數(shù),參數(shù)1 占2 個(gè)字節(jié),參數(shù)2 占4 個(gè)字節(jié)。
圖3 指令格式
在嵌入式單軸控制器中用結(jié)構(gòu)體來(lái)存儲(chǔ)指令,結(jié)構(gòu)體如圖4 所示:cmd 存儲(chǔ)指令標(biāo)識(shí)符,p1 存儲(chǔ)參數(shù)1,p2 和p3 存儲(chǔ)第一種格式中的參數(shù)2 和參數(shù)3,p3 存儲(chǔ)第二種格式中參數(shù)2,p2 和p3 與p23 共用一個(gè)聯(lián)合體。
圖4 指令存儲(chǔ)結(jié)構(gòu)體
在文獻(xiàn)[6]中提到的可重構(gòu)伺服驅(qū)動(dòng)器調(diào)試工具中,這些指令用類匯編的標(biāo)識(shí)符表示,如運(yùn)動(dòng)類指令中的DRIVID 表示運(yùn)動(dòng)到某個(gè)位置。編程時(shí)采用“標(biāo)識(shí)符+參數(shù)”的方式,例如DRIVID 1000 表示運(yùn)動(dòng)1000個(gè)脈沖。在單軸控制器中,這些指令用數(shù)字標(biāo)識(shí)符表示,如DRIVID 用101 表示。
指令參數(shù)可以是立即數(shù)和變量,根據(jù)不同的功能設(shè)計(jì)了3 種變量類型,S 型:在程序中只讀,不可寫及修改,主要用于上位機(jī)的編程;M 型:程序中可讀可寫,主要用于程序運(yùn)行中數(shù)據(jù)的暫時(shí)存儲(chǔ);B 型:位變量,取值為0 或1。主要用于控制信號(hào)。
編程中常用的指令主要包括運(yùn)動(dòng)類指令、控制類指令、運(yùn)算類指令、跳轉(zhuǎn)類指令、邏輯類指令和數(shù)據(jù)傳送類指令,如表1 所示[4]。
在表1 中,對(duì)指令參數(shù)約定如下:
#line 表示行號(hào)
#data 表示立即數(shù)
#[S] 表示參數(shù)存儲(chǔ)在S 型變量中
#[M] 表示參數(shù)存儲(chǔ)在M 型變量中
#[B] 表示參數(shù)是某個(gè)B 型變量
為方便描述,在下面表格中,若無(wú)特別說(shuō)明,#[S]表示既可以是S 型變量,也可以是M 型變量。
表1 指令集
續(xù)表
設(shè)計(jì)有限狀態(tài)機(jī)控制解釋器的運(yùn)行,狀態(tài)機(jī)有5個(gè)工作狀態(tài),如圖5 所示:解釋器在系統(tǒng)啟動(dòng)時(shí)完成初始化任務(wù),包括對(duì)M 型變量和B 型變量的初始化;然后進(jìn)入begin 狀態(tài),由begin 狀態(tài)進(jìn)入run;在run 中,解釋器根據(jù)不同的指令標(biāo)志符調(diào)用不同的指令處理函數(shù),然后根據(jù)指令函數(shù)的返回值決定進(jìn)入end、wait 還是繼續(xù)run。在運(yùn)行過(guò)程中,如果遇到錯(cuò)誤指令,則返回錯(cuò)誤標(biāo)識(shí)并斷電停機(jī)。
圖5 解釋器狀態(tài)圖
運(yùn)動(dòng)控制器從解釋器獲取運(yùn)動(dòng)控制參數(shù)和控制命令,根據(jù)實(shí)際需求選取不同的加減速控制算法,在每個(gè)插補(bǔ)周期到來(lái)時(shí)給出位置指令,傳遞給電機(jī)三環(huán)矢量控制來(lái)完成電機(jī)的運(yùn)動(dòng)控制。主要工作就是完成加減速控制和軌跡規(guī)劃。
在伺服驅(qū)動(dòng)器位置環(huán)控制模式下,給定目標(biāo)位置、加速度和最大速度后,加減速控制算法在插補(bǔ)周期中斷到來(lái)之前計(jì)算出當(dāng)前周期的位置增量,然后加上前一個(gè)周期的位置給定得到當(dāng)前周期的位置給定,底層位置環(huán)通過(guò)周期地刷新位置指令來(lái)驅(qū)動(dòng)電機(jī)運(yùn)動(dòng)。每個(gè)插補(bǔ)周期內(nèi)插補(bǔ)步長(zhǎng)即位置增量體現(xiàn)了速度的大小,插補(bǔ)步長(zhǎng)越大,速度越大;插補(bǔ)步長(zhǎng)越小,速度越小。通過(guò)這種遞推的方式,位置指令向目標(biāo)位置遞增或遞減,最終到達(dá)目標(biāo)位置。
根據(jù)加減速算法的實(shí)現(xiàn)思想,在上述嵌入式伺服控制系統(tǒng)軟件平臺(tái)中的控制層實(shí)現(xiàn)直線加減速控制,算法流程圖如圖6 所示。得到運(yùn)動(dòng)控制參數(shù)后判斷當(dāng)前位置是否等于目標(biāo)位置,相等則退出加減速控制,不相等則進(jìn)一步判斷是大于還是小于目標(biāo)位置并作出相應(yīng)處理得到位置給定。
圖6 直線加減速算法流程圖
由圖6 可知,直線加減速控制的關(guān)鍵就是求出ΔPos,即插補(bǔ)步長(zhǎng)。ΔPos 計(jì)算有多種方法,經(jīng)常采用的是簡(jiǎn)單直觀的面積計(jì)算法。在直線加減速控制算中,加速度是恒定的,即Vk=Vk-1+Vacc;位置增量等于平均速度與插補(bǔ)周期之積,即ΔPos= (Vk+Vk-1)/2·Δt,位置增量的計(jì)算問(wèn)題轉(zhuǎn)變成了速度Vk的刷新問(wèn)題,已知插補(bǔ)周期兩端的速度即可求得插補(bǔ)步長(zhǎng)。算法流程圖如圖7 所示。
圖7 ΔPos 算法流程圖
在傳統(tǒng)直線加減速中,加速段和減速段中的加速度是常數(shù),在系統(tǒng)啟動(dòng)和加減速結(jié)束時(shí)存在加速度突變,加速度不具有連續(xù)性,仍會(huì)產(chǎn)生一定沖擊,因而不適用于高速高精的應(yīng)用場(chǎng)合。
文獻(xiàn)[5]提出了一種基于滑動(dòng)平均濾波器的改進(jìn)方法對(duì)直線加減速算法進(jìn)行改進(jìn)。參考文獻(xiàn)[5]對(duì)每個(gè)插補(bǔ)周期的ΔPos 進(jìn)行移動(dòng)平均濾波處理,得到和S形加減速算法相似的控制效果,效果圖如圖8 所示。
圖8 改進(jìn)的直線加減速算法
為了驗(yàn)證嵌入式單軸控制器,以沈陽(yáng)高精數(shù)控有限公司的可重構(gòu)伺服驅(qū)動(dòng)器為基礎(chǔ),將單軸控制器嵌入到伺服驅(qū)動(dòng)器中,實(shí)際的實(shí)驗(yàn)平臺(tái)如圖9所示。
圖9 嵌入式單軸控制器實(shí)驗(yàn)平臺(tái)
設(shè)計(jì)了一個(gè)簡(jiǎn)單的定點(diǎn)運(yùn)動(dòng)控制實(shí)例,如圖10 所示,電機(jī)以加速度500、最大速度50000 運(yùn)動(dòng)到200000 脈沖的位置后延時(shí)5s,然后將加速度和最大速度改變?yōu)?00 和100000,運(yùn)動(dòng)返回原點(diǎn),最后跳轉(zhuǎn)到第0 行重新開(kāi)始執(zhí)行。
圖10 定點(diǎn)運(yùn)動(dòng)控制程序
利用文獻(xiàn)[6]設(shè)計(jì)的可重構(gòu)伺服驅(qū)動(dòng)器調(diào)試工具進(jìn)行編程,然后編譯下載到伺服驅(qū)動(dòng)器中,點(diǎn)擊上電運(yùn)行,實(shí)際的運(yùn)行效果如圖11 所示:電機(jī)以最大速度50000 運(yùn)動(dòng)到200000 脈沖位置,然后延時(shí)5s,以最大速度100000 反向轉(zhuǎn)動(dòng)返回原點(diǎn),然后往復(fù)運(yùn)動(dòng),實(shí)驗(yàn)表明電機(jī)按照預(yù)定程序轉(zhuǎn)動(dòng),驗(yàn)證了嵌入式單軸控制器的正確性。
(1)設(shè)計(jì)了嵌入式單軸控制器,在高性能可重構(gòu)伺服驅(qū)動(dòng)器中實(shí)現(xiàn),解決了復(fù)雜的時(shí)序控制問(wèn)題。
(2)設(shè)計(jì)的指令集能夠滿足用戶的需求,可以用這些指令的組合完成豐富的功能。
(3)運(yùn)動(dòng)控制器中對(duì)直線加減速進(jìn)行移動(dòng)平均濾波處理得到與S 形加減速相似的控制效果,提高了直線加減速控制的性能。
(4)設(shè)計(jì)的典型單軸控制器,為實(shí)現(xiàn)嵌入式多軸控制器奠定了基礎(chǔ)。
[1]楊凱峰.單軸運(yùn)動(dòng)控制器的設(shè)計(jì)[D]. 武漢:華中科技大學(xué),2008.
[2]王志成,林滸,劉偉軍.基于組件技術(shù)的可重構(gòu)伺服驅(qū)動(dòng)軟件設(shè)計(jì)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2013(10):58 -60.
[3]董海濤. 嵌入式可重構(gòu)CNC 系統(tǒng)研究與實(shí)現(xiàn)[D]. 武漢:華中科技大學(xué)2012.
[4]研控科技.PMC100 單軸控制器說(shuō)明書[S]. 北京天瑞中海精密儀器有限公司.
[5]李歐.基于前瞻-濾波的加減速控制方法的研究[D]. 沈陽(yáng):中科院沈陽(yáng)計(jì)算技術(shù)研究所,2010.
[6]柴宇,欒勇,王志成.可重構(gòu)伺服驅(qū)動(dòng)調(diào)試工具的設(shè)計(jì)與實(shí)現(xiàn)[J]. 組合機(jī)床與自動(dòng)化加工技術(shù),2013(7):75 -77.
[7]石彥華.工業(yè)CT 獨(dú)立運(yùn)動(dòng)軸控制器設(shè)計(jì)[D].重慶:重慶大學(xué),2012.
[8]張仕龍. 基于DSP 的嵌入式工程機(jī)械運(yùn)動(dòng)控制器研究[J].電源技術(shù)應(yīng)用.2013(8):246.
[9]鄭胄強(qiáng). 基于DSP + CPLD 的橫機(jī)伺服驅(qū)動(dòng)器的研究[D].杭州:杭州電子科技大學(xué),2012.
[10]陳桂.開(kāi)放式可重構(gòu)伺服系統(tǒng)研究與設(shè)計(jì)[J]. 現(xiàn)代雷達(dá),2011(11):66 -69.