黃昭縣,王志成,趙鴻博
(1.中國科學院大學,北京 100049;2. 中國科學院 沈陽計算技術研究所,沈陽 110168;3.沈陽高精數控技術有限公司,沈陽 110168)
在工控領域中,單軸運動是最基本、最常見的運動,因此設計結構簡單、控制靈活、成本低廉的單軸控制系統一直是國內外伺服系統研發中的熱點。
傳統的單軸控制系統采用單軸控制器+伺服驅動器的分立方式。首先,這種分立方式中單軸控制器和伺服驅動器是獨立的產品,成本較高,而且二者間連接復雜,通訊時延較長[1]。再者,傳統單軸控制器只是完成加減速控制,在上層仍需要一個復雜的數控系統解釋執行運動控制程序,這在一些簡單的應用中無疑是極大的浪費。
近年來隨著微電子技術的迅猛發展,伺服驅動器的硬件性能得到很大提高,有更多的資源來支持復雜功能的實現,使單軸控制器的功能集成在伺服驅動器中成為可能。
基于以上兩點,本文設計實現了一種嵌入式單軸控制器,并將其嵌入到高性能伺服驅動器中,使伺服驅動器具有加減速控制和解釋執行運動控制程序的功能,降低了系統成本,增加了系統的靈活性。
典型的軸控制系統如圖1 所示,包括軸控制器、伺服驅動器和被控對象三個部分。軸控制器根據上位機傳遞的運動參數完成加減速控制,將位移指令傳遞給伺服驅動器;伺服驅動器進行速度位置閉環矢量控制,將驅動信號傳遞給伺服電機,完成伺服控制。
軸控制器一般由CNC 或PLC 實現,伺服驅動器一般采用功能強大的DSP,并且基于實時操作系統控制平臺。二者分屬于不同的硬件,運行于不同的CPU,相對獨立,不存在復雜的時序問題。
嵌入式單軸控制器如圖1 虛框所示,將軸控制器和伺服驅動器集成在一起,但并不是簡單地集成到一塊電路板上,而是使兩者共用一個高性能CPU,需要解決復雜的時序問題。因此需要良好的系統結構設計才能達到性能的要求。

圖1 伺服控制系統結構
鑒于伺服驅動器強大的硬件性能和實時控制要求,設計將軸控制器嵌入到伺服驅動器中,并增加解釋執行運動控制程序的功能。參考文獻[2]中提到的可重構伺服驅動器,基于TI 公司的DSP/BIOS 實時操作系統,利用層次化思想對整體結構進行設計。
整個嵌入式單軸控制器體系結構如圖2 所示,分四個層次:硬件層、驅動層、控制層、應用層。硬件層為外部被控對象(電機)和伺服驅動單元硬件。驅動層是硬件上的第一層軟件,實現對硬件層的抽象和封裝,并向上層提供服務支持??刂茖又饕ㄖ噶钚蛄械拇鎯?、解釋器、函數庫和運動控制器以及電機三環矢量控制。其中解釋器完成指令代碼的解釋,函數庫是相應的指令處理函數,運動控制器完成加減速控制。應用層是建構在最上層的非實時性任務,主要完成系統的人機交互、通信、參數管理等功能[2]。

圖2 嵌入式單軸控制器體系結構
DSP/BIOS 實際上是一個代碼很小的實時庫,包含一個固定優先級搶占調度器,用戶通過調用系統提供的API 函數使用實時庫的服務[3]。為了解決復雜的時序問題,在控制層設計高、中、低三種優先級:電機三環矢量控制處于高優先級,運動控制器處于中優先級,解釋器處于低優先級。
整體的工作流程如下:首先,在上位機中用類匯編語言進行編程,編譯后通過應用層的通訊接口將程序指令代碼序列下載到嵌入式單軸控制器中;然后,控制層的解釋器對指令代碼程序進行解釋,并根據不同的指令標識符調用函數庫中不同的指令處理函數進行處理,將運動參數傳遞給運動控制器;最后,運動控制器根據不同的加減速控制規律做軌跡規劃,將位置指令、啟動/停止等命令傳遞給電機三環矢量控制,以此來控制電機的運動。
在嵌入式單軸控制器中,軸控制器和伺服驅動器間指令信號的傳遞由內部的共享內存替代傳統的通訊接口,消除了時延,提高了系統的實時性;增加解釋器和運動控制器,使伺服驅動器能夠解釋執行運動控制程序,并能對加減速進行控制,提高了系統的靈活性。
嵌入式單軸控制器中,解釋器的功能是把指令代碼序列解釋為一系列的操作,并將運動控制參數傳遞給運動控制器。其中每一行指令代碼(如401,100,300,3000)完成一個操作。每一行指令代碼中“401”是指令標識,“100,300,3000”是參數。解釋程序讀取一行指令序列后根據不同的指令標識調用不同的指令處理函數,指令處理函數返回要讀取的下一行指令序列號并給出運動參數和控制指令等。
首先,對指令格式進行設計,如圖3 所示。一條指令由指令標志符和參數組成,有兩種指令格式:一種指令最多有3 個參數,每個參數占2 個字節;另一種指令最多有2 個參數,參數1 占2 個字節,參數2 占4 個字節。

圖3 指令格式
在嵌入式單軸控制器中用結構體來存儲指令,結構體如圖4 所示:cmd 存儲指令標識符,p1 存儲參數1,p2 和p3 存儲第一種格式中的參數2 和參數3,p3 存儲第二種格式中參數2,p2 和p3 與p23 共用一個聯合體。

圖4 指令存儲結構體
在文獻[6]中提到的可重構伺服驅動器調試工具中,這些指令用類匯編的標識符表示,如運動類指令中的DRIVID 表示運動到某個位置。編程時采用“標識符+參數”的方式,例如DRIVID 1000 表示運動1000個脈沖。在單軸控制器中,這些指令用數字標識符表示,如DRIVID 用101 表示。
指令參數可以是立即數和變量,根據不同的功能設計了3 種變量類型,S 型:在程序中只讀,不可寫及修改,主要用于上位機的編程;M 型:程序中可讀可寫,主要用于程序運行中數據的暫時存儲;B 型:位變量,取值為0 或1。主要用于控制信號。
編程中常用的指令主要包括運動類指令、控制類指令、運算類指令、跳轉類指令、邏輯類指令和數據傳送類指令,如表1 所示[4]。
在表1 中,對指令參數約定如下:
#line 表示行號
#data 表示立即數
#[S] 表示參數存儲在S 型變量中
#[M] 表示參數存儲在M 型變量中
#[B] 表示參數是某個B 型變量
為方便描述,在下面表格中,若無特別說明,#[S]表示既可以是S 型變量,也可以是M 型變量。

表1 指令集

續表
設計有限狀態機控制解釋器的運行,狀態機有5個工作狀態,如圖5 所示:解釋器在系統啟動時完成初始化任務,包括對M 型變量和B 型變量的初始化;然后進入begin 狀態,由begin 狀態進入run;在run 中,解釋器根據不同的指令標志符調用不同的指令處理函數,然后根據指令函數的返回值決定進入end、wait 還是繼續run。在運行過程中,如果遇到錯誤指令,則返回錯誤標識并斷電停機。

圖5 解釋器狀態圖
運動控制器從解釋器獲取運動控制參數和控制命令,根據實際需求選取不同的加減速控制算法,在每個插補周期到來時給出位置指令,傳遞給電機三環矢量控制來完成電機的運動控制。主要工作就是完成加減速控制和軌跡規劃。
在伺服驅動器位置環控制模式下,給定目標位置、加速度和最大速度后,加減速控制算法在插補周期中斷到來之前計算出當前周期的位置增量,然后加上前一個周期的位置給定得到當前周期的位置給定,底層位置環通過周期地刷新位置指令來驅動電機運動。每個插補周期內插補步長即位置增量體現了速度的大小,插補步長越大,速度越大;插補步長越小,速度越小。通過這種遞推的方式,位置指令向目標位置遞增或遞減,最終到達目標位置。
根據加減速算法的實現思想,在上述嵌入式伺服控制系統軟件平臺中的控制層實現直線加減速控制,算法流程圖如圖6 所示。得到運動控制參數后判斷當前位置是否等于目標位置,相等則退出加減速控制,不相等則進一步判斷是大于還是小于目標位置并作出相應處理得到位置給定。

圖6 直線加減速算法流程圖
由圖6 可知,直線加減速控制的關鍵就是求出ΔPos,即插補步長。ΔPos 計算有多種方法,經常采用的是簡單直觀的面積計算法。在直線加減速控制算中,加速度是恒定的,即Vk=Vk-1+Vacc;位置增量等于平均速度與插補周期之積,即ΔPos= (Vk+Vk-1)/2·Δt,位置增量的計算問題轉變成了速度Vk的刷新問題,已知插補周期兩端的速度即可求得插補步長。算法流程圖如圖7 所示。

圖7 ΔPos 算法流程圖
在傳統直線加減速中,加速段和減速段中的加速度是常數,在系統啟動和加減速結束時存在加速度突變,加速度不具有連續性,仍會產生一定沖擊,因而不適用于高速高精的應用場合。
文獻[5]提出了一種基于滑動平均濾波器的改進方法對直線加減速算法進行改進。參考文獻[5]對每個插補周期的ΔPos 進行移動平均濾波處理,得到和S形加減速算法相似的控制效果,效果圖如圖8 所示。

圖8 改進的直線加減速算法
為了驗證嵌入式單軸控制器,以沈陽高精數控有限公司的可重構伺服驅動器為基礎,將單軸控制器嵌入到伺服驅動器中,實際的實驗平臺如圖9所示。

圖9 嵌入式單軸控制器實驗平臺
設計了一個簡單的定點運動控制實例,如圖10 所示,電機以加速度500、最大速度50000 運動到200000 脈沖的位置后延時5s,然后將加速度和最大速度改變為300 和100000,運動返回原點,最后跳轉到第0 行重新開始執行。

圖10 定點運動控制程序
利用文獻[6]設計的可重構伺服驅動器調試工具進行編程,然后編譯下載到伺服驅動器中,點擊上電運行,實際的運行效果如圖11 所示:電機以最大速度50000 運動到200000 脈沖位置,然后延時5s,以最大速度100000 反向轉動返回原點,然后往復運動,實驗表明電機按照預定程序轉動,驗證了嵌入式單軸控制器的正確性。
(1)設計了嵌入式單軸控制器,在高性能可重構伺服驅動器中實現,解決了復雜的時序控制問題。
(2)設計的指令集能夠滿足用戶的需求,可以用這些指令的組合完成豐富的功能。
(3)運動控制器中對直線加減速進行移動平均濾波處理得到與S 形加減速相似的控制效果,提高了直線加減速控制的性能。
(4)設計的典型單軸控制器,為實現嵌入式多軸控制器奠定了基礎。
[1]楊凱峰.單軸運動控制器的設計[D]. 武漢:華中科技大學,2008.
[2]王志成,林滸,劉偉軍.基于組件技術的可重構伺服驅動軟件設計[J]. 組合機床與自動化加工技術,2013(10):58 -60.
[3]董海濤. 嵌入式可重構CNC 系統研究與實現[D]. 武漢:華中科技大學2012.
[4]研控科技.PMC100 單軸控制器說明書[S]. 北京天瑞中海精密儀器有限公司.
[5]李歐.基于前瞻-濾波的加減速控制方法的研究[D]. 沈陽:中科院沈陽計算技術研究所,2010.
[6]柴宇,欒勇,王志成.可重構伺服驅動調試工具的設計與實現[J]. 組合機床與自動化加工技術,2013(7):75 -77.
[7]石彥華.工業CT 獨立運動軸控制器設計[D].重慶:重慶大學,2012.
[8]張仕龍. 基于DSP 的嵌入式工程機械運動控制器研究[J].電源技術應用.2013(8):246.
[9]鄭胄強. 基于DSP + CPLD 的橫機伺服驅動器的研究[D].杭州:杭州電子科技大學,2012.
[10]陳桂.開放式可重構伺服系統研究與設計[J]. 現代雷達,2011(11):66 -69.