董 宇 王廣龍 陳建輝 喬中濤
(軍械工程學院導彈工程系,河北 石家莊 050003)
伺服系統也稱隨動系統,屬于自動控制系統中的一種。伺服控制技術應用廣泛,其不僅能完成轉動控制、直線運動控制,而且能依靠多套伺服系統的配合完成復雜的空間曲線運動的控制[1-2]。
早期的伺服驅動器多屬于模擬伺服,處理器運算速度的增長為數字伺服驅動器的出現奠定了基礎。具有數字輸入與輸出接口的數字伺服驅動器具有體積小、質量輕等特點。采用數字伺服驅動器進行編程,僅需設計上層軟件就能實現復雜功能,體現出極大的優越性[3-4]。目前,國內大多數電機控制系統采用嵌入式系統進行設計,成本相對較低,但運算能力較弱,無法實現多元(自由度)大運算量計算及復雜算法[5-6]。
本控制系統采用高性能的工控機作為核心控制模塊,并基于Linux操作系統進行控制軟件的開發,軟件編程更靈活,魯棒性更好,控制算法優化易于實現,系統性能得到大大改善。
本控制系統包括核心控制、USBcan和伺服驅動三個模塊,如圖1所示。其中核心控制模塊包括工控機及其外部I/O設備;USBcan模塊的核心部分為USBcan轉換器;伺服驅動模塊包括數字伺服驅動器和執行電機。

圖1 系統硬件結構Fig.1 Hardware structure of the system
核心控制模塊以工控機PCM9362D為核心。PCM9362D工控機采用+12 V電源供電,功耗只有10 W左右,其集成了USB、CF存儲器接口等外部接口,具有很高的集成度。該工控機支持Windows、Linux等多種操作系統,系統可安裝在CF卡中,無需硬盤的支持,這有效提高了系統的可靠性和穩定性。PCM9362D工控機采用的雙核Intel微功耗處理器,能有效保證其高速運算的能力,可運行復雜的控制算法,為控制系統軟件開發提供了高性能的硬件平臺。
USBcan模塊采用Kvaser公司的USBcan Professional轉換器,實現USB到雙端口CAN的數據接口和數據交換。該模塊可通過USB中的電源供電,無需外加電源;支持Linux下的驅動模塊自動加載,可同時支持CAN2.0A、CAN2.0B協議。其工作過程為:內部處理器接收核心控制模塊發送的控制指令,并將接收到的數據根據CAN協議封裝打包,經CAN總線發送給伺服驅動模塊,以驅動執行電機;同時接收來自電機的反饋信息,并上傳給核心控制模塊。
USBcan模塊的驅動程序中包含通道設置、波特率設置、初始化、數據讀寫等多個API函數,可在應用程序中直接調用,為軟件開發提供了方便,提高了軟件的可移植性。該模塊通過CAN接口可擴展多路CAN總線終端設備,為編程控制多元執行電機創造了條件。
伺服驅動模塊的核心部分為Elmo公司的WHI系列數字伺服驅動器,其結構如圖2所示。WHI伺服驅動器同時支持CAN總線及RS-232通信接口,可在角度、位置、速度和力矩控制多模式之間任意切換。該伺服驅動器的微處理器具有內置的驅動程序,能執行內置的腳本;可以根據電機狀態自動調整伺服電機的工作參數;根據控制指令運行相應的操作,直到核心控制模塊發送改變其運行狀態的指令。

圖2 數字伺服驅動器結構圖Fig.2 Structure of the digital servo driver
WHI數字伺服驅動器中封裝了SP(速度設置)、MP[N](運動參數設置)、LD(程序加載)等完整的硬件控制命令。在優化底層硬件驅動程序的基礎上,本系統的軟件設計著重于上層控制系統軟件的實現,其中控制算法的設計是上層控制系統設計的關鍵部分。
PID控制是一種線性控制方法,其在連續時間域中的表達式如下[7]:

式中:Kp、Ti、Td分別為模擬控制器的比例增益、積分時間和微分時間常數;e(t)為控制偏差;u0為系統穩態工作時的控制器輸出,即偏差e=0時的輸出。
對式(1)進行離散化處理之后,得到PID控制器的數字算法如式(2)所示:

式中:u(k)為采樣時刻t=kT時的計算機輸出;Ki為積分常數;Kd為微分系數[8-9]。
系統對積分項的要求是:系統偏差大時,積分作用減弱以至全無;而在小偏差時則應加強。因此,引入變速積分PID控制算法。其基本思想為:設法改變積分項的累加速度,使其與偏差大小相對應,偏差越大,積分越慢,反之則越快。為此,設置系數f[e(k)],它是e(k)的函數。當|e(k)|增大時,f減小,反之增大,則得到變速積分PID積分項表達式如下:

將式(3)代入式(2),最終得到變速積分PID算法的完整形式,即:

變速積分PID控制算法可以完全消除積分飽和現象,大大減少了超調量,從而使得系統更加穩定[10]。另外,本系統在設計時對PID輸出設置了上下限幅值,避免了因輸出過大造成的系統不穩定,進一步增強了系統的魯棒性。
本控制系統所采用的數字伺服驅動器提供了對電機加速度和最大速度等參數的編程控制,其內部的控制機制能保證其在頻繁啟停、頻率發生突變的高速運轉過程中不會發生堵轉和失步現象。
在控制軟件中,需要保證通過軟件設置的速度值與電機實際轉速保持一致[11],這就需要設計速度控制算法進行速度控制。電機速度控制算法流程如圖3所示。

圖3 速度控制算法流程圖Fig.3 Flowchart of the speed control algorithm
在數字伺服驅動器中,對電機轉動位置的設定是采用設定下一運動將到達的相對位置的方式進行的,這使得對電機的轉動控制不夠直觀明了。因此,在上層軟件中,將電機下一運動將到達的相對位置換算成電機將轉動的角度值,其換算關系為:

式中:Pr為電機下一運動將到達的相對位置;Pa為電機轉動的角度值;Gr為齒輪齒數比;Ec為編碼器轉數。在軟件控制時,只需設置角度值Pa即可使電機轉過相應角度。
控制系統軟件采用Linux Ubuntu10.04+Kedit程序編輯器作為其開發環境,根據面向對象思想進行編程,以命令行的方式運行。在系統軟件運行前需首先加載硬件驅動程序,然后通過CAN總線控制器使能CAN總線。在初始化電機和WHI伺服驅動器之后,即可驅動多元電機運行。
在進行系統軟件編程之前,首先需要保證硬件正常工作。Linux系統本身對一些使用較為普遍的硬件提供了相應的驅動程序,本部分的主要工作為驅動USBcan轉換器。
USBcan轉換器針對Linux系統定制了驅動程序,可通過 make、make install命令編譯、安裝,但由于Ubuntu對Linux內核做了修改,在對USB設備進行識別時,導致驅動程序無法加載,因此需要修改USBcan驅動中的ProductID。驅動程序安裝完成后,即可啟動加載驅動程序。
本系統采用單獨的子程序對CAN總線控制器進行操作,其程序流程如圖4所示。

圖4 CAN總線控制流程圖Fig.4 Control flowchart of CAN bus
首先,調用canInitializeLibrary()方法初始化CAN總線控制器驅動程序;然后讀取當前處于活動狀態的CAN通道號。對應每一個處于活動狀態的CAN通道都對應一個句柄handle,該值若小于0,則說明打開失敗,進入錯誤處理程序;否則開啟操作人員選擇的CAN通道。使用canSetBusParams()方法設置好CAN通道的相關參數,即可打開CAN總線進行讀寫操作[12]。
本文在初始化數字伺服驅動器時,首先通過InitialDriverMode()方法設置數字伺服驅動器的采樣時間,并設置驅動電機的相關運動參數,如位置參考點、位置控制器的采樣次數以及定時數據等。然后調用FillInMotionBuffer()方法清空數字伺服驅動器的數據存儲器,這其中包括用于存儲時間、位置、速度陣列的QTⅠ、QPⅠ、QVⅠ數組。最后調用 ResetDriverWithData()方法啟動歸位進程,重置數字伺服驅動器的位置寄存器。
對電機的初始化操作主要是為電機的相關數據賦初值,包括對各個電機所對應的CAN節點號的設置、各個電機的齒輪齒數比和編碼器轉數的設置等。
對于多元電機的控制,本文采用循環控制的方法,其流程如圖5所示。所有電機既可以根據程序預先設定好的自動運行模式運動,也可以通過人工輸入運動控制參數的方式運動。
目前,本控制系統實現的自動運行模式包括兩種方式,即按默認速度連續運動和按預先設定好的時間、速度、位置陣列運動。程序中對電機的控制方式包括旋轉角度控制、轉速控制、運動模式切換等。在電機運動的過程中,采用變速積分PID控制算法實時檢測運動誤差并進行誤差補償[13-16]。

圖5 多元電機控制流程圖Fig.5 Flowchart of the multi-motor control
根據數字伺服驅動器的要求,輸入20組角度值,通過對數字伺服驅動器的PX指令加載,得到電機的實際轉動角度反饋數據如表1所示。根據表1繪制得到的數據分析曲線如圖6所示。

表1 角度測試試驗數據Tab.1 Experimental data of angle test

圖6 數據分析曲線Fig.6 Curve of data analysis
由表1可見,單個電機的控制誤差不超過1°。由圖6可以看出,該曲線具有良好的線性度,控制系統運轉穩定。
本文設計并實現了一種基于數字伺服驅動器的多元電機控制系統。該系統采用面向對象的思想編程,具有良好的人機交互性,相關控制算法的設計使得本系統的電機控制高效穩定。經試驗驗證,系統魯棒性較好、可靠性較高、靈敏度高、誤差小,CAN總線可掛接多個總線設備。本控制系統可用于機器人、數控機床等多種應用環境,具有較高的實用價值和良好的擴展性。
[1]黃會生,樊利民.基于Elmo數字伺服控制器的機載吊艙陀螺穩定平臺設計[J].電子設計工程,2010,10(18):64 -66.
[2] Yang Wenlei,Jang Tingbiao.Hardware design of digital AC servo system based on DSP2812[C]//2010 International Conference on Intelligent Computing and Integrated Systems,2010:337 -340.
[3]林青松,姚玉菲,王軍曉.新型伺服控制系統的建模仿真與分析[J].電子技術應用,2010,36(12):135 -140.
[4] Chen Nanhu,Li Zexiang.A sensorless speed control strategy for a lowcost full-closed-loop servo driver system[C]//7th World Congress on Intelligent Control and Automation,2008:5616 -5621.
[5]吳紅星,錢海榮,劉瑩,等.永磁直線同步電機控制技術綜述[J].微電機,2011,44(7):76 -80.
[6]高梅,王忠慶.基于DSP的交流伺服電機控制系統的研究[J].機械工程與自動化,2009(5):149-150.
[7]于曉敏,于曉坤,耿蕊.PID控制器參數優化算法的仿真研究[J].計算機仿真,2011,28(7):212 -215.
[8]王秀君,胡協和.一種改進的單神經元PID控制策略[J].浙江大學學報,2011,45(8):1498 -1501.
[9]黃友銳,曲立國.PID控制器參數整定與實現[M].北京:科學出版社,2010:10-12.
[10]盧志剛,吳杰.數字伺服控制系統與設計[M].北京:機械工業出版社,2007:312-315.
[11]Boussak M.Implementation and experimental investigation of sensorless speed control with initial rotor position estimation for interior PM synchronous motor drive[J].IEEE Transactions on Power Electronics,2005,20(6):1413 -1422.
[12]劉宇,張義民.CAN總線數據傳輸可靠性分析[J].機械科學與技術,2011,30(6):888 -891.
[13]王維平,張磊,李同華.基于DSP無軸承永磁同步電機控制系統設計[J].電力電子技術,2011,45(6):55 -57.
[14]阮見.多功能智能移動機器人控制系統設計與分析[D].南京:南京理工大學,2008.
[15]鐘新華,蔡自興,鄒小兵.移動機器人運動控制系統設計及控制算法研究[J].華中科技大學學報:自然科學版,2004(s1).
[16]邱寄帆,王海春,唐斌,等.通用智能機器人分布式控制系統的設計與實現[J].電子技術應用,2006(8):71-73.