石科峰, 何俊華
(中國(guó)科學(xué)院西安光學(xué)精密機(jī)械研究所,陜西西安 710119)
步進(jìn)電機(jī)在工業(yè)、航天等領(lǐng)域的應(yīng)用范圍越來(lái)越廣,不同的應(yīng)用要求和環(huán)境對(duì)電機(jī)的控制也提出了不同的設(shè)計(jì)方法。比較常見(jiàn)的針對(duì)實(shí)現(xiàn)多步進(jìn)電機(jī)的控制有兩種:(1)完全基于運(yùn)動(dòng)控制卡,該方法設(shè)計(jì)簡(jiǎn)單,但需要多個(gè)運(yùn)動(dòng)控制卡,在硬件的連接上也比較復(fù)雜;(2)通過(guò)運(yùn)動(dòng)控制卡+繼電器,對(duì)多電機(jī)的控制需要多個(gè)繼電器占用空間且浪費(fèi)成本。本文介紹的系統(tǒng)采用運(yùn)動(dòng)控制卡作為上位機(jī),對(duì)電機(jī)進(jìn)行分組選擇,復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)作為下位機(jī)控制電機(jī)的通斷,大大簡(jiǎn)化了電路,并節(jié)約了成本。
該系統(tǒng)由運(yùn)動(dòng)控制卡模塊、CPLD電路、4個(gè)組件控制模塊(每組件8臺(tái),共32臺(tái)電機(jī))等組成。各組件控制模塊相互獨(dú)立,分別用于控制各組件的電機(jī)運(yùn)動(dòng)??刂撇糠植捎蒙钲诒姙榕d數(shù)控技術(shù)有限公司的ADT8940運(yùn)動(dòng)控制卡和Xilinx公司的XC9536CPLD,由于要控制32臺(tái)電機(jī),為了減少擴(kuò)展I/O口的設(shè)計(jì),系統(tǒng)采用CPLD取代傳統(tǒng)的單片機(jī)[1]。運(yùn)動(dòng)控制卡通過(guò)PCI總線與計(jì)算機(jī)通信,其兩個(gè)開(kāi)關(guān)量的輸出信號(hào)作為CPLD的輸入信號(hào),進(jìn)行電機(jī)的分組選擇,CPLD的輸出信號(hào)通過(guò)模擬開(kāi)關(guān)74HC4052使被選中組的電機(jī)導(dǎo)通。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
運(yùn)動(dòng)控制卡完成電機(jī)運(yùn)動(dòng)控制的所有細(xì)節(jié),包括脈沖和方向信號(hào)的輸出、加減速的處理、原點(diǎn)、限位及電機(jī)的分組選擇信號(hào)等。運(yùn)動(dòng)控制卡根據(jù)PC機(jī)的實(shí)時(shí)控制指令向步進(jìn)電機(jī)驅(qū)動(dòng)器發(fā)出脈沖、方向等控制信號(hào),通過(guò)相應(yīng)的步進(jìn)電機(jī)驅(qū)動(dòng)器驅(qū)動(dòng)電機(jī)運(yùn)行。系統(tǒng)采用的ADT8940有如下特點(diǎn)[2]:(1)基于PCI總線的高性能伺服/步進(jìn)控制卡,支持即插即用。(2)脈沖輸出方式可用單脈沖(脈沖+方向)或雙脈沖(脈沖+脈沖)方式。該系統(tǒng)采用單脈沖方式,最大脈沖頻率為2 MHz,采用先進(jìn)技術(shù),保證在輸出頻率較高時(shí),頻率誤差小于0.1%。(3)速度控制可用定速和梯形加減速。(4)位置管理采用兩個(gè)加/減計(jì)數(shù)器。一個(gè)用于內(nèi)部管理驅(qū)動(dòng)脈沖輸出的邏輯位置計(jì)數(shù)器;一個(gè)用于接收外部的輸入,輸入信號(hào)是A/B相輸入的編碼器或光柵尺,作為實(shí)際位置計(jì)數(shù)器。(5)計(jì)數(shù)器位數(shù)高達(dá)32位,最大范圍為-2 147 483 648~+2 147 483 647。(6)所有輸入、輸出均采用光耦隔離,抗干擾性強(qiáng)。運(yùn)動(dòng)控制卡模塊的關(guān)鍵在于軟件設(shè)計(jì),主要是根據(jù)PC機(jī)的實(shí)時(shí)指令,由兩個(gè)開(kāi)關(guān)輸出量OUT0、OUT1作為CPLD的輸入信號(hào)進(jìn)行電機(jī)分組選擇,脈沖和方向信號(hào)分別接到8塊模擬開(kāi)關(guān)74HC4052的16個(gè)公共端,由分組信號(hào)選通后接入電機(jī)。由于ADT8940是四軸控制卡,而系統(tǒng)每個(gè)組件有8臺(tái)電機(jī),因此需要2張運(yùn)動(dòng)控制卡,如圖2所示。
圖1 系統(tǒng)總體框圖
整個(gè)系統(tǒng)有四臺(tái)組件,但要求同一時(shí)間只有一臺(tái)組件在工作。由于是分時(shí)工作的,因此可以通過(guò)CPLD控制電路來(lái)選擇四個(gè)中的一個(gè)組件,如果需要調(diào)整其他組件,可以再次進(jìn)行選擇。系統(tǒng)采用Xilinx公司的XC9536CPLD,屬XC9500系列器件,是一款高性能、有特點(diǎn)的可編程邏輯器件。從結(jié)構(gòu)上看,其包含三個(gè)單元:宏單元、可編程I/O單元和可編程的內(nèi)部連線。其主要特點(diǎn)如下:(1)高性能。在所有可編程引腳之間pin-pin延時(shí)5 ns,系統(tǒng)的時(shí)鐘速度可達(dá)到100 MHz。(2)容量范圍大。容量范圍為36個(gè)宏單元,可用系統(tǒng)門(mén)為800個(gè)。(3)5 V在系統(tǒng)編程,可以編程10 000次。(4)具有強(qiáng)大的強(qiáng)腳鎖定能力。(5)每個(gè)宏單元都有可編程低功耗模式。(6)沒(méi)有用的引腳有編程接地能力。
圖2 運(yùn)動(dòng)控制卡
對(duì)于CPLD電路,運(yùn)動(dòng)控制卡的兩個(gè)開(kāi)關(guān)量輸出信號(hào)作為CPLD的輸入信號(hào),進(jìn)行電機(jī)的分組選擇,CPLD的輸出信號(hào)通過(guò)模擬開(kāi)關(guān)74HC4052使被選中組的電機(jī)導(dǎo)通。因此,運(yùn)動(dòng)控制卡1的兩個(gè)開(kāi)關(guān)輸出量OUT0、OUT1作為CPLD的輸入量,進(jìn)行電機(jī)的分組選擇;16個(gè)輸出量通過(guò)I/O口分別接到8個(gè)模擬開(kāi)關(guān)74HC4052的位選端S0、S1。具體硬件連接如圖3所示。
軟件系統(tǒng)是實(shí)現(xiàn)控制系統(tǒng)硬件功能的基本保障,只有在軟件的控制下才能實(shí)現(xiàn)對(duì)設(shè)備的運(yùn)動(dòng)控制功能。因此,軟件在整個(gè)系統(tǒng)中占據(jù)十分重要的位置,其性能將會(huì)直接影響到系統(tǒng)的可靠性、操作方便性等[3]。主程序主要用于組件選擇、速度和位置的設(shè)定、信息獲取及位置的判斷等,軟件流程如圖4所示。
對(duì)于組件的選擇,因?yàn)橄到y(tǒng)有四臺(tái)組件,同一時(shí)間只有一臺(tái)組件工作,設(shè)定OUT0、OUT1為組件選擇信號(hào),給定0為低電平,1為高電平。當(dāng)選擇組件1時(shí),OUT0、OUT1輸出00信號(hào)。同理,當(dāng)選擇2、3、4 組件時(shí),分別輸出01、10、11 信號(hào)。
圖3 CPLD電路硬件連接圖
圖4 軟件流程圖
對(duì)于速度的設(shè)置,要求在電機(jī)不失步的情況下,位置完全由控制卡向電機(jī)驅(qū)動(dòng)器發(fā)送的脈沖數(shù)量來(lái)控制[4]。但負(fù)載及運(yùn)行速度的變化,可能會(huì)導(dǎo)致電機(jī)在起動(dòng)時(shí)由于起動(dòng)頻率過(guò)高而出現(xiàn)失步,而在停止時(shí)由于慣性作用會(huì)發(fā)生過(guò)沖。為了避免電機(jī)失步,就必須采用與電機(jī)矩頻特性相適應(yīng)的速度控制方案,即以較低的速度起動(dòng),而后逐漸加速到某一速度運(yùn)行,再逐漸降速直至停止。因此,該系統(tǒng)根據(jù)總脈沖數(shù)量,通過(guò)設(shè)置相應(yīng)的控制參數(shù),自動(dòng)選擇加、減曲線來(lái)達(dá)到快速起停而又不失步的控制,該控制方法可大大提高電機(jī)的運(yùn)行性能。針對(duì)電機(jī)驅(qū)動(dòng)方式和位置的設(shè)定,ADT8940提供了專(zhuān)門(mén)的庫(kù)函數(shù)。
CPLD電路的主要功能是選擇四個(gè)組件中的一個(gè)。當(dāng)要選擇組件1時(shí),輸入00信號(hào),此時(shí)其16個(gè)I/O口輸出8組00信號(hào),然后接入8個(gè)模擬開(kāi)關(guān)74HC4052的位選端,此時(shí)每個(gè)模擬開(kāi)關(guān)選通1個(gè)(共8個(gè))電機(jī),此8個(gè)電機(jī)即為組件1。同樣,當(dāng)輸入01信號(hào)時(shí),I/O口輸出8組01信號(hào),選通組件2;輸入10信號(hào)時(shí),I/O口輸出8組10信號(hào),選通組件3;輸入11信號(hào)時(shí),I/O口輸出8組11信號(hào),選通組件4。流程如圖5所示。
圖5 CPLD軟件選擇組件流程
為了更好地實(shí)施PC機(jī)的指令,需要制作一個(gè)簡(jiǎn)易的操作界面。通過(guò)該界面可以直接得到系統(tǒng)的狀態(tài)、參數(shù)等信息,根據(jù)此信息可以方便地對(duì)這些參數(shù)進(jìn)行調(diào)整和處理,以達(dá)到精確的控制效果。所有功能盡可能地安排在一個(gè)主界面中實(shí)現(xiàn),標(biāo)題、設(shè)置選項(xiàng)、操作按鈕等一目了然,在力求簡(jiǎn)練的同時(shí)提供豐富的功能。通過(guò)VB編程,得到基本界面如圖6所示,包括了起停、組件選擇、速度和位置設(shè)置及系統(tǒng)的實(shí)際信息等。
圖6 基本界面
本文介紹的系統(tǒng)的主要目的是達(dá)到對(duì)電機(jī)位置的精確控制,而對(duì)步進(jìn)電機(jī)而言,其位置主要由脈沖數(shù)決定,因此對(duì)設(shè)定位置(設(shè)定脈沖數(shù))和實(shí)際位置(實(shí)際脈沖數(shù))進(jìn)行了統(tǒng)計(jì),如表1所示,誤差率最高達(dá)0.25%,控制效果比較理想。
表1 實(shí)際位置與設(shè)定位置統(tǒng)計(jì)
該系統(tǒng)采用CPLD進(jìn)行多電機(jī)的分時(shí)控制,抗干擾能力強(qiáng),功耗低,使硬件電路得到簡(jiǎn)化,節(jié)約了成本,并通過(guò)軟件編程使系統(tǒng)的操作性更強(qiáng),達(dá)到了更高的設(shè)計(jì)精度,具有較高的實(shí)用價(jià)值。
[1]李萌萌,彭建朝,許向眾.基于FPGA的多通道控制器的設(shè)計(jì)與模擬實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,14(25):168-170.
[2]深圳眾為興數(shù)控技術(shù)有限公司.ADT8940用戶(hù)手冊(cè)[G].2008.
[3]魏筱瑜,韓焱.基于CPLD和AD9852的多功能信號(hào)模擬器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,11(34):71-73.
[4]關(guān)學(xué)忠.單片機(jī)與TA8435的步進(jìn)電機(jī)細(xì)分控制[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006,3(10):52-54.