董 宇 王廣龍 陳建輝 喬中濤
(軍械工程學(xué)院導(dǎo)彈工程系,河北 石家莊 050003)
伺服系統(tǒng)也稱(chēng)隨動(dòng)系統(tǒng),屬于自動(dòng)控制系統(tǒng)中的一種。伺服控制技術(shù)應(yīng)用廣泛,其不僅能完成轉(zhuǎn)動(dòng)控制、直線運(yùn)動(dòng)控制,而且能依靠多套伺服系統(tǒng)的配合完成復(fù)雜的空間曲線運(yùn)動(dòng)的控制[1-2]。
早期的伺服驅(qū)動(dòng)器多屬于模擬伺服,處理器運(yùn)算速度的增長(zhǎng)為數(shù)字伺服驅(qū)動(dòng)器的出現(xiàn)奠定了基礎(chǔ)。具有數(shù)字輸入與輸出接口的數(shù)字伺服驅(qū)動(dòng)器具有體積小、質(zhì)量輕等特點(diǎn)。采用數(shù)字伺服驅(qū)動(dòng)器進(jìn)行編程,僅需設(shè)計(jì)上層軟件就能實(shí)現(xiàn)復(fù)雜功能,體現(xiàn)出極大的優(yōu)越性[3-4]。目前,國(guó)內(nèi)大多數(shù)電機(jī)控制系統(tǒng)采用嵌入式系統(tǒng)進(jìn)行設(shè)計(jì),成本相對(duì)較低,但運(yùn)算能力較弱,無(wú)法實(shí)現(xiàn)多元(自由度)大運(yùn)算量計(jì)算及復(fù)雜算法[5-6]。
本控制系統(tǒng)采用高性能的工控機(jī)作為核心控制模塊,并基于Linux操作系統(tǒng)進(jìn)行控制軟件的開(kāi)發(fā),軟件編程更靈活,魯棒性更好,控制算法優(yōu)化易于實(shí)現(xiàn),系統(tǒng)性能得到大大改善。
本控制系統(tǒng)包括核心控制、USBcan和伺服驅(qū)動(dòng)三個(gè)模塊,如圖1所示。其中核心控制模塊包括工控機(jī)及其外部I/O設(shè)備;USBcan模塊的核心部分為USBcan轉(zhuǎn)換器;伺服驅(qū)動(dòng)模塊包括數(shù)字伺服驅(qū)動(dòng)器和執(zhí)行電機(jī)。
圖1 系統(tǒng)硬件結(jié)構(gòu)Fig.1 Hardware structure of the system
核心控制模塊以工控機(jī)PCM9362D為核心。PCM9362D工控機(jī)采用+12 V電源供電,功耗只有10 W左右,其集成了USB、CF存儲(chǔ)器接口等外部接口,具有很高的集成度。該工控機(jī)支持Windows、Linux等多種操作系統(tǒng),系統(tǒng)可安裝在CF卡中,無(wú)需硬盤(pán)的支持,這有效提高了系統(tǒng)的可靠性和穩(wěn)定性。PCM9362D工控機(jī)采用的雙核Intel微功耗處理器,能有效保證其高速運(yùn)算的能力,可運(yùn)行復(fù)雜的控制算法,為控制系統(tǒng)軟件開(kāi)發(fā)提供了高性能的硬件平臺(tái)。
USBcan模塊采用Kvaser公司的USBcan Professional轉(zhuǎn)換器,實(shí)現(xiàn)USB到雙端口CAN的數(shù)據(jù)接口和數(shù)據(jù)交換。該模塊可通過(guò)USB中的電源供電,無(wú)需外加電源;支持Linux下的驅(qū)動(dòng)模塊自動(dòng)加載,可同時(shí)支持CAN2.0A、CAN2.0B協(xié)議。其工作過(guò)程為:內(nèi)部處理器接收核心控制模塊發(fā)送的控制指令,并將接收到的數(shù)據(jù)根據(jù)CAN協(xié)議封裝打包,經(jīng)CAN總線發(fā)送給伺服驅(qū)動(dòng)模塊,以驅(qū)動(dòng)執(zhí)行電機(jī);同時(shí)接收來(lái)自電機(jī)的反饋信息,并上傳給核心控制模塊。
USBcan模塊的驅(qū)動(dòng)程序中包含通道設(shè)置、波特率設(shè)置、初始化、數(shù)據(jù)讀寫(xiě)等多個(gè)API函數(shù),可在應(yīng)用程序中直接調(diào)用,為軟件開(kāi)發(fā)提供了方便,提高了軟件的可移植性。該模塊通過(guò)CAN接口可擴(kuò)展多路CAN總線終端設(shè)備,為編程控制多元執(zhí)行電機(jī)創(chuàng)造了條件。
伺服驅(qū)動(dòng)模塊的核心部分為Elmo公司的WHI系列數(shù)字伺服驅(qū)動(dòng)器,其結(jié)構(gòu)如圖2所示。WHI伺服驅(qū)動(dòng)器同時(shí)支持CAN總線及RS-232通信接口,可在角度、位置、速度和力矩控制多模式之間任意切換。該伺服驅(qū)動(dòng)器的微處理器具有內(nèi)置的驅(qū)動(dòng)程序,能執(zhí)行內(nèi)置的腳本;可以根據(jù)電機(jī)狀態(tài)自動(dòng)調(diào)整伺服電機(jī)的工作參數(shù);根據(jù)控制指令運(yùn)行相應(yīng)的操作,直到核心控制模塊發(fā)送改變其運(yùn)行狀態(tài)的指令。
圖2 數(shù)字伺服驅(qū)動(dòng)器結(jié)構(gòu)圖Fig.2 Structure of the digital servo driver
WHI數(shù)字伺服驅(qū)動(dòng)器中封裝了SP(速度設(shè)置)、MP[N](運(yùn)動(dòng)參數(shù)設(shè)置)、LD(程序加載)等完整的硬件控制命令。在優(yōu)化底層硬件驅(qū)動(dòng)程序的基礎(chǔ)上,本系統(tǒng)的軟件設(shè)計(jì)著重于上層控制系統(tǒng)軟件的實(shí)現(xiàn),其中控制算法的設(shè)計(jì)是上層控制系統(tǒng)設(shè)計(jì)的關(guān)鍵部分。
PID控制是一種線性控制方法,其在連續(xù)時(shí)間域中的表達(dá)式如下[7]:
式中:Kp、Ti、Td分別為模擬控制器的比例增益、積分時(shí)間和微分時(shí)間常數(shù);e(t)為控制偏差;u0為系統(tǒng)穩(wěn)態(tài)工作時(shí)的控制器輸出,即偏差e=0時(shí)的輸出。
對(duì)式(1)進(jìn)行離散化處理之后,得到PID控制器的數(shù)字算法如式(2)所示:
式中:u(k)為采樣時(shí)刻t=kT時(shí)的計(jì)算機(jī)輸出;Ki為積分常數(shù);Kd為微分系數(shù)[8-9]。
系統(tǒng)對(duì)積分項(xiàng)的要求是:系統(tǒng)偏差大時(shí),積分作用減弱以至全無(wú);而在小偏差時(shí)則應(yīng)加強(qiáng)。因此,引入變速積分PID控制算法。其基本思想為:設(shè)法改變積分項(xiàng)的累加速度,使其與偏差大小相對(duì)應(yīng),偏差越大,積分越慢,反之則越快。為此,設(shè)置系數(shù)f[e(k)],它是e(k)的函數(shù)。當(dāng)|e(k)|增大時(shí),f減小,反之增大,則得到變速積分PID積分項(xiàng)表達(dá)式如下:
將式(3)代入式(2),最終得到變速積分PID算法的完整形式,即:
變速積分PID控制算法可以完全消除積分飽和現(xiàn)象,大大減少了超調(diào)量,從而使得系統(tǒng)更加穩(wěn)定[10]。另外,本系統(tǒng)在設(shè)計(jì)時(shí)對(duì)PID輸出設(shè)置了上下限幅值,避免了因輸出過(guò)大造成的系統(tǒng)不穩(wěn)定,進(jìn)一步增強(qiáng)了系統(tǒng)的魯棒性。
本控制系統(tǒng)所采用的數(shù)字伺服驅(qū)動(dòng)器提供了對(duì)電機(jī)加速度和最大速度等參數(shù)的編程控制,其內(nèi)部的控制機(jī)制能保證其在頻繁啟停、頻率發(fā)生突變的高速運(yùn)轉(zhuǎn)過(guò)程中不會(huì)發(fā)生堵轉(zhuǎn)和失步現(xiàn)象。
在控制軟件中,需要保證通過(guò)軟件設(shè)置的速度值與電機(jī)實(shí)際轉(zhuǎn)速保持一致[11],這就需要設(shè)計(jì)速度控制算法進(jìn)行速度控制。電機(jī)速度控制算法流程如圖3所示。
圖3 速度控制算法流程圖Fig.3 Flowchart of the speed control algorithm
在數(shù)字伺服驅(qū)動(dòng)器中,對(duì)電機(jī)轉(zhuǎn)動(dòng)位置的設(shè)定是采用設(shè)定下一運(yùn)動(dòng)將到達(dá)的相對(duì)位置的方式進(jìn)行的,這使得對(duì)電機(jī)的轉(zhuǎn)動(dòng)控制不夠直觀明了。因此,在上層軟件中,將電機(jī)下一運(yùn)動(dòng)將到達(dá)的相對(duì)位置換算成電機(jī)將轉(zhuǎn)動(dòng)的角度值,其換算關(guān)系為:
式中:Pr為電機(jī)下一運(yùn)動(dòng)將到達(dá)的相對(duì)位置;Pa為電機(jī)轉(zhuǎn)動(dòng)的角度值;Gr為齒輪齒數(shù)比;Ec為編碼器轉(zhuǎn)數(shù)。在軟件控制時(shí),只需設(shè)置角度值Pa即可使電機(jī)轉(zhuǎn)過(guò)相應(yīng)角度。
控制系統(tǒng)軟件采用Linux Ubuntu10.04+Kedit程序編輯器作為其開(kāi)發(fā)環(huán)境,根據(jù)面向?qū)ο笏枷脒M(jìn)行編程,以命令行的方式運(yùn)行。在系統(tǒng)軟件運(yùn)行前需首先加載硬件驅(qū)動(dòng)程序,然后通過(guò)CAN總線控制器使能CAN總線。在初始化電機(jī)和WHI伺服驅(qū)動(dòng)器之后,即可驅(qū)動(dòng)多元電機(jī)運(yùn)行。
在進(jìn)行系統(tǒng)軟件編程之前,首先需要保證硬件正常工作。Linux系統(tǒng)本身對(duì)一些使用較為普遍的硬件提供了相應(yīng)的驅(qū)動(dòng)程序,本部分的主要工作為驅(qū)動(dòng)USBcan轉(zhuǎn)換器。
USBcan轉(zhuǎn)換器針對(duì)Linux系統(tǒng)定制了驅(qū)動(dòng)程序,可通過(guò) make、make install命令編譯、安裝,但由于Ubuntu對(duì)Linux內(nèi)核做了修改,在對(duì)USB設(shè)備進(jìn)行識(shí)別時(shí),導(dǎo)致驅(qū)動(dòng)程序無(wú)法加載,因此需要修改USBcan驅(qū)動(dòng)中的ProductID。驅(qū)動(dòng)程序安裝完成后,即可啟動(dòng)加載驅(qū)動(dòng)程序。
本系統(tǒng)采用單獨(dú)的子程序?qū)AN總線控制器進(jìn)行操作,其程序流程如圖4所示。
圖4 CAN總線控制流程圖Fig.4 Control flowchart of CAN bus
首先,調(diào)用canInitializeLibrary()方法初始化CAN總線控制器驅(qū)動(dòng)程序;然后讀取當(dāng)前處于活動(dòng)狀態(tài)的CAN通道號(hào)。對(duì)應(yīng)每一個(gè)處于活動(dòng)狀態(tài)的CAN通道都對(duì)應(yīng)一個(gè)句柄handle,該值若小于0,則說(shuō)明打開(kāi)失敗,進(jìn)入錯(cuò)誤處理程序;否則開(kāi)啟操作人員選擇的CAN通道。使用canSetBusParams()方法設(shè)置好CAN通道的相關(guān)參數(shù),即可打開(kāi)CAN總線進(jìn)行讀寫(xiě)操作[12]。
本文在初始化數(shù)字伺服驅(qū)動(dòng)器時(shí),首先通過(guò)InitialDriverMode()方法設(shè)置數(shù)字伺服驅(qū)動(dòng)器的采樣時(shí)間,并設(shè)置驅(qū)動(dòng)電機(jī)的相關(guān)運(yùn)動(dòng)參數(shù),如位置參考點(diǎn)、位置控制器的采樣次數(shù)以及定時(shí)數(shù)據(jù)等。然后調(diào)用FillInMotionBuffer()方法清空數(shù)字伺服驅(qū)動(dòng)器的數(shù)據(jù)存儲(chǔ)器,這其中包括用于存儲(chǔ)時(shí)間、位置、速度陣列的QTⅠ、QPⅠ、QVⅠ數(shù)組。最后調(diào)用 ResetDriverWithData()方法啟動(dòng)歸位進(jìn)程,重置數(shù)字伺服驅(qū)動(dòng)器的位置寄存器。
對(duì)電機(jī)的初始化操作主要是為電機(jī)的相關(guān)數(shù)據(jù)賦初值,包括對(duì)各個(gè)電機(jī)所對(duì)應(yīng)的CAN節(jié)點(diǎn)號(hào)的設(shè)置、各個(gè)電機(jī)的齒輪齒數(shù)比和編碼器轉(zhuǎn)數(shù)的設(shè)置等。
對(duì)于多元電機(jī)的控制,本文采用循環(huán)控制的方法,其流程如圖5所示。所有電機(jī)既可以根據(jù)程序預(yù)先設(shè)定好的自動(dòng)運(yùn)行模式運(yùn)動(dòng),也可以通過(guò)人工輸入運(yùn)動(dòng)控制參數(shù)的方式運(yùn)動(dòng)。
目前,本控制系統(tǒng)實(shí)現(xiàn)的自動(dòng)運(yùn)行模式包括兩種方式,即按默認(rèn)速度連續(xù)運(yùn)動(dòng)和按預(yù)先設(shè)定好的時(shí)間、速度、位置陣列運(yùn)動(dòng)。程序中對(duì)電機(jī)的控制方式包括旋轉(zhuǎn)角度控制、轉(zhuǎn)速控制、運(yùn)動(dòng)模式切換等。在電機(jī)運(yùn)動(dòng)的過(guò)程中,采用變速積分PID控制算法實(shí)時(shí)檢測(cè)運(yùn)動(dòng)誤差并進(jìn)行誤差補(bǔ)償[13-16]。
圖5 多元電機(jī)控制流程圖Fig.5 Flowchart of the multi-motor control
根據(jù)數(shù)字伺服驅(qū)動(dòng)器的要求,輸入20組角度值,通過(guò)對(duì)數(shù)字伺服驅(qū)動(dòng)器的PX指令加載,得到電機(jī)的實(shí)際轉(zhuǎn)動(dòng)角度反饋數(shù)據(jù)如表1所示。根據(jù)表1繪制得到的數(shù)據(jù)分析曲線如圖6所示。
表1 角度測(cè)試試驗(yàn)數(shù)據(jù)Tab.1 Experimental data of angle test
圖6 數(shù)據(jù)分析曲線Fig.6 Curve of data analysis
由表1可見(jiàn),單個(gè)電機(jī)的控制誤差不超過(guò)1°。由圖6可以看出,該曲線具有良好的線性度,控制系統(tǒng)運(yùn)轉(zhuǎn)穩(wěn)定。
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于數(shù)字伺服驅(qū)動(dòng)器的多元電機(jī)控制系統(tǒng)。該系統(tǒng)采用面向?qū)ο蟮乃枷刖幊蹋哂辛己玫娜藱C(jī)交互性,相關(guān)控制算法的設(shè)計(jì)使得本系統(tǒng)的電機(jī)控制高效穩(wěn)定。經(jīng)試驗(yàn)驗(yàn)證,系統(tǒng)魯棒性較好、可靠性較高、靈敏度高、誤差小,CAN總線可掛接多個(gè)總線設(shè)備。本控制系統(tǒng)可用于機(jī)器人、數(shù)控機(jī)床等多種應(yīng)用環(huán)境,具有較高的實(shí)用價(jià)值和良好的擴(kuò)展性。
[1]黃會(huì)生,樊利民.基于Elmo數(shù)字伺服控制器的機(jī)載吊艙陀螺穩(wěn)定平臺(tái)設(shè)計(jì)[J].電子設(shè)計(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]林青松,姚玉菲,王軍曉.新型伺服控制系統(tǒng)的建模仿真與分析[J].電子技術(shù)應(yīng)用,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]吳紅星,錢(qián)海榮,劉瑩,等.永磁直線同步電機(jī)控制技術(shù)綜述[J].微電機(jī),2011,44(7):76 -80.
[6]高梅,王忠慶.基于DSP的交流伺服電機(jī)控制系統(tǒng)的研究[J].機(jī)械工程與自動(dòng)化,2009(5):149-150.
[7]于曉敏,于曉坤,耿蕊.PID控制器參數(shù)優(yōu)化算法的仿真研究[J].計(jì)算機(jī)仿真,2011,28(7):212 -215.
[8]王秀君,胡協(xié)和.一種改進(jìn)的單神經(jīng)元PID控制策略[J].浙江大學(xué)學(xué)報(bào),2011,45(8):1498 -1501.
[9]黃友銳,曲立國(guó).PID控制器參數(shù)整定與實(shí)現(xiàn)[M].北京:科學(xué)出版社,2010:10-12.
[10]盧志剛,吳杰.數(shù)字伺服控制系統(tǒng)與設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,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總線數(shù)據(jù)傳輸可靠性分析[J].機(jī)械科學(xué)與技術(shù),2011,30(6):888 -891.
[13]王維平,張磊,李同華.基于DSP無(wú)軸承永磁同步電機(jī)控制系統(tǒng)設(shè)計(jì)[J].電力電子技術(shù),2011,45(6):55 -57.
[14]阮見(jiàn).多功能智能移動(dòng)機(jī)器人控制系統(tǒng)設(shè)計(jì)與分析[D].南京:南京理工大學(xué),2008.
[15]鐘新華,蔡自興,鄒小兵.移動(dòng)機(jī)器人運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)及控制算法研究[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2004(s1).
[16]邱寄帆,王海春,唐斌,等.通用智能機(jī)器人分布式控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006(8):71-73.