朱興華,左健民,2,汪木蘭,蘇 薇
ZHU Xing-hua1,ZUO Jian-min1,2,WANG Mu-lan3,SU Wei4
(1. 常州數(shù)控技術(shù)研究所,常州 213164;2. 江蘇技術(shù)師范學(xué)院,常州 213001;3. 南京工程學(xué)院 先進(jìn)數(shù)控技術(shù)江蘇省高校重點(diǎn)建設(shè)實(shí)驗(yàn)室,南京 211167;4. 江蘇大學(xué) 機(jī)械工程學(xué)院,鎮(zhèn)江 212013)
速度控制功能在計(jì)算機(jī)數(shù)控(Computer Numerical Control,CNC)系統(tǒng)中發(fā)揮著重要作用,它接受插補(bǔ)運(yùn)算結(jié)果(命令值),并控制伺服電動(dòng)機(jī),其性能直接影響和決定了CNC系統(tǒng)的快速性、精確性和穩(wěn)定性。
由于技術(shù)的發(fā)展,脈沖式速度控制方式應(yīng)用越來(lái)越廣泛,不僅步進(jìn)電動(dòng)機(jī)工作于脈沖控制方式,而且交流伺服單元也可工作于脈沖控制方式。為了易于敘述實(shí)現(xiàn)思路和說(shuō)明實(shí)現(xiàn)技術(shù),本文以步進(jìn)電動(dòng)機(jī)伺服裝置實(shí)現(xiàn)過(guò)程為例。步進(jìn)電動(dòng)機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移和線位移的執(zhí)行元件,其轉(zhuǎn)速與電機(jī)繞組相電流的切換頻率成正比。因其結(jié)構(gòu)簡(jiǎn)單和運(yùn)行穩(wěn)定可靠,可以和其他元器件組成簡(jiǎn)單實(shí)用的全數(shù)字化伺服系統(tǒng),且不需要反饋環(huán)節(jié),故在數(shù)控系統(tǒng)脈沖式速度控制場(chǎng)合獲得了成功應(yīng)用[1]。步進(jìn)電動(dòng)機(jī)的起動(dòng)頻率特性使其啟動(dòng)時(shí)不能直接加載到運(yùn)行頻率,需要經(jīng)歷“啟動(dòng)—加速—恒速—減速—停止”的升降速過(guò)程[2]。對(duì)步進(jìn)電動(dòng)機(jī)速度控制實(shí)現(xiàn)方式的研究文獻(xiàn)很多,如使用單片機(jī)與PC機(jī)、定時(shí)器和寄存器等實(shí)現(xiàn)速度控制[3~5],并且大多數(shù)是由軟件實(shí)現(xiàn),在控制的快速性和穩(wěn)定性等方面不如早期的硬件電路。由于早期硬件電路較復(fù)雜,調(diào)整不便,后期的CNC系統(tǒng)中軟件實(shí)現(xiàn)比較廣泛。隨著電子技術(shù)快速發(fā)展,F(xiàn)PGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)的綜合性能和集成度等方面得到很大提高,可以滿足軟件硬化實(shí)現(xiàn)速度控制模塊功能的需要[6]。本文介紹使用FPGA軟件硬化技術(shù)實(shí)現(xiàn)數(shù)控系統(tǒng)中脈沖式速度控制模塊功能,并采用定時(shí)法原理予以實(shí)現(xiàn)。
步進(jìn)電動(dòng)機(jī)的速度控制規(guī)律一般有直線型、指數(shù)型和拋物線型速度控制[7]。由于步進(jìn)電機(jī)的轉(zhuǎn)速正比于控制脈沖的頻率,故調(diào)節(jié)控制脈沖頻率就可以達(dá)到調(diào)節(jié)電動(dòng)機(jī)轉(zhuǎn)速的效果。本文采用了直線型控制速度方案,相應(yīng)的步進(jìn)電動(dòng)機(jī)速度控制過(guò)程如圖1所示。
圖1 步進(jìn)電動(dòng)機(jī)速度控制過(guò)程
實(shí)現(xiàn)直線型速度控制方案的方法有定時(shí)法和定步法。本文采用定時(shí)法實(shí)現(xiàn)升降速控制,即按一定的時(shí)間間隔(Dt)改變步進(jìn)電動(dòng)機(jī)的運(yùn)行頻率,從而實(shí)現(xiàn)升降速控制。為了確保步進(jìn)電動(dòng)機(jī)運(yùn)行穩(wěn)定且不發(fā)生失步或過(guò)沖現(xiàn)象,每改變一次運(yùn)行頻率,步進(jìn)電機(jī)運(yùn)行一段時(shí)間(一定步長(zhǎng))。在選擇Dt時(shí)要注意每次的頻率變化量不得大于步進(jìn)電動(dòng)機(jī)所允許的突跳頻率值,否則會(huì)引起步進(jìn)電動(dòng)機(jī)發(fā)生失步或堵轉(zhuǎn)現(xiàn)象,從而導(dǎo)致定位誤差增大或無(wú)法正常運(yùn)轉(zhuǎn),甚而會(huì)損壞電機(jī)。
如果進(jìn)給的行程比較長(zhǎng),則脈沖式伺服單元的速度控制過(guò)程不但有恒速段,還包含升速段和降速段,且降速段是升速段的逆過(guò)程,相應(yīng)速度(脈沖頻率)變化曲線如圖1(a)所示。如果進(jìn)給的行程很短,不足以完成一個(gè)定時(shí)時(shí)間間隔的升速和降速過(guò)程時(shí),就不必進(jìn)行升降速控制,而是以較低的適當(dāng)設(shè)定速度走完整個(gè)行程,則速度控制過(guò)程只有恒速段,相應(yīng)的速度(脈沖頻率)變化曲線如圖1(b)所示。
根據(jù)最佳升降頻控制規(guī)律[8],可推出步進(jìn)電機(jī)的“頻率—步長(zhǎng)—時(shí)間”關(guān)系曲線如圖2所示。
圖2 步進(jìn)電機(jī)的“頻率—步長(zhǎng)—時(shí)間”關(guān)系曲線
圖2中,步進(jìn)電動(dòng)機(jī)以起始頻率fs開(kāi)始作升速運(yùn)動(dòng),經(jīng)過(guò)Dt時(shí)間,運(yùn)動(dòng)S1步長(zhǎng)后,再以頻率f1作升速運(yùn)動(dòng),同樣經(jīng)過(guò)Dt時(shí)間,運(yùn)動(dòng)S2步長(zhǎng),如此經(jīng)過(guò)若干Dt時(shí)間,到達(dá)頻率fo,以fo作恒速運(yùn)動(dòng),經(jīng)過(guò)mDt 時(shí)間后作與升速過(guò)程相反的降速運(yùn)動(dòng)。Ss為升速段的總步長(zhǎng),Sj為升速段和恒速段的總步長(zhǎng),S為整個(gè)過(guò)程的總步長(zhǎng)。頻率與步長(zhǎng)之間對(duì)應(yīng)關(guān)系如表1所示,進(jìn)一步根據(jù)圖2和表1可以總結(jié)出脈沖式速度控制運(yùn)動(dòng)方式和相應(yīng)的滿足條件如表2所示。
當(dāng)模塊初始化以后,首先根據(jù)S、S1、Ss和Sj等變量之間的關(guān)系,選擇相應(yīng)的運(yùn)行方式,然后根據(jù)如圖3所示的脈沖式速度控制流程走完整個(gè)行程。
表1 運(yùn)行頻率變化與步長(zhǎng)之間對(duì)應(yīng)關(guān)系
表2 脈沖式速度控制運(yùn)行方式及滿足條件
圖3 脈沖式速度控制流程
CYCLONE II 系列FPGA器件是美國(guó)Altera公司的中端產(chǎn)品,本文選用器件型號(hào)為EP2C8芯片,它具有8256個(gè)邏輯單元(LE),26塊M4K存儲(chǔ)器,165888 bits存儲(chǔ)器容量,13個(gè)乘法器,2個(gè)鎖相環(huán)(PLL),182個(gè)用戶可用引腳數(shù)。
Quartus II設(shè)計(jì)軟件是Altera提供的FPGA軟件開(kāi)發(fā)環(huán)境,由原先的MAX+PLUS II演變而來(lái),繼承了MAX+PLUS II工具的優(yōu)點(diǎn),能夠直接滿足各種設(shè)計(jì)需要,可為單芯片可編程系統(tǒng)(SOPC)提供全面的設(shè)計(jì)環(huán)境,已成為Altera公司新一代的EDA設(shè)計(jì)工具。
脈沖式速度控制模塊由復(fù)位單元、分頻單元和速度處理單元組成。使用軟件硬化技術(shù)把步進(jìn)電動(dòng)機(jī)升降速軟件實(shí)現(xiàn)過(guò)程采用FPGA硬件電路實(shí)現(xiàn),并將整個(gè)脈沖式速度控制模塊功能固化到單芯片,也相當(dāng)于定制一個(gè)專用控制芯片,其內(nèi)部原理結(jié)構(gòu)如圖4所示。
圖4 脈沖式速度控制模塊內(nèi)部結(jié)構(gòu)簡(jiǎn)圖
圖4中復(fù)位單元的作用是負(fù)責(zé)整個(gè)速度控制模塊的復(fù)位、清零和置位等工作。分頻單元的作用是生成升速、恒速和降速段控制信號(hào)的脈沖頻率。速度處理單元的作用是當(dāng)分頻單元傳來(lái)脈沖頻率(時(shí)鐘)時(shí),根據(jù)計(jì)數(shù)器的數(shù)值反饋分頻控制信號(hào)至分頻單元和最終輸出信號(hào)至脈沖式伺服驅(qū)動(dòng)單元。
頻選信號(hào)計(jì)數(shù)器i的數(shù)值把分頻控制信號(hào)f_ctr數(shù)值發(fā)送到分頻單元,分頻單元把與f_ctr數(shù)值對(duì)應(yīng)的分頻信號(hào)發(fā)送到速度處理單元作為時(shí)鐘輸入,速度處理單元在時(shí)鐘的控制下,根據(jù)定時(shí)碼計(jì)數(shù)器的數(shù)值輸出速度控制信號(hào)。
運(yùn)動(dòng)方式為第1類別情況下,即“恒低速”運(yùn)行時(shí),計(jì)數(shù)器初始化并根據(jù)判斷條件確定是否計(jì)數(shù),在條件滿足時(shí)計(jì)數(shù)器累加到總步長(zhǎng)S,表示到達(dá)目的地。相應(yīng)的部分硬件描述語(yǔ)言程序如下:
其中fo為運(yùn)行頻率,fs為有載起始頻率,CNT1為計(jì)數(shù)器,S為總步長(zhǎng)。第1行表述“恒低速”運(yùn)行條件判斷,條件滿足后,第2行表述計(jì)數(shù)器值是否小于等于總步長(zhǎng),若計(jì)數(shù)器值等于總步長(zhǎng),則計(jì)數(shù)器清零,頻選信號(hào)計(jì)數(shù)器值清零,如第5行、第6行所述,否則計(jì)數(shù)器值累加,如第9行表述。
運(yùn)動(dòng)方式為第2類別情況時(shí),速度處理單元在分頻時(shí)鐘的控制下,加減計(jì)數(shù)器對(duì)輸入脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù),計(jì)數(shù)值達(dá)到定時(shí)數(shù)值時(shí),計(jì)數(shù)器i加1,f_ctr數(shù)值改變,速度處理單元分頻時(shí)鐘更新,加減計(jì)數(shù)器再次對(duì)輸入脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù),如此循環(huán)。當(dāng)i計(jì)數(shù)到與Ss所對(duì)應(yīng)的定時(shí)數(shù)值時(shí),執(zhí)行恒速階段。恒速階段完成以后,i進(jìn)行累減運(yùn)算進(jìn)入降速階段,處理過(guò)程與加速過(guò)程相反,直到i=1停止。使用case語(yǔ)句來(lái)處理頻率選擇后的過(guò)程,部分硬件描述語(yǔ)言程序如下:
其中CNT為計(jì)數(shù)器,ss為在Dt時(shí)間內(nèi)頻率對(duì)應(yīng)的步長(zhǎng),addsub為計(jì)數(shù)器i值的增減信號(hào),iload為計(jì)數(shù)器i值的增減控制信號(hào),此段處理方法與第1類別運(yùn)動(dòng)方式相似。
所設(shè)計(jì)的復(fù)位單元采用了異步復(fù)位、同步釋放的雙緩沖電路,可以較好地解決同步復(fù)位資源消耗過(guò)多和異步復(fù)位的亞穩(wěn)態(tài)問(wèn)題,相應(yīng)的復(fù)位單元內(nèi)部電路原理結(jié)構(gòu)如圖5所示。
本設(shè)計(jì)在Quartus II 9.0環(huán)境中采用Verilog HDL語(yǔ)言編寫(xiě),應(yīng)用于CYCLONE II 系列EP2C8Q208C8芯片。經(jīng)過(guò)編譯和綜合,通過(guò)ModelSim SE軟件仿真驗(yàn)證了設(shè)計(jì)的正確性。速度控制模塊共消耗了457個(gè)LE(邏輯單元),71個(gè)寄存器,51個(gè)可用管腳。
圖5 異步復(fù)位和同步釋放電路
為了仿真時(shí)便于觀察,模塊時(shí)鐘使用50MHz,分頻單元將50MHz分頻為100Hz、200Hz……900Hz、1kHz,設(shè)置 fs為 400Hz,Dt為 100ms。
在第1類別運(yùn)行方式下,fs設(shè)置為200Hz,S1置為200,S置為100,其仿真結(jié)果波形如圖6所示。
在第2類別運(yùn)行方式下,fs設(shè)置為200Hz,S1置為200,S置為900,其仿真結(jié)果波形如圖7所示。
在仿真結(jié)果波形圖中,mclk為主時(shí)鐘50MHz;clr為復(fù)位、清零和置位等信號(hào),低電平有效;V為速度信號(hào)輸出。
圖6 第1類別運(yùn)動(dòng)方式仿真圖
圖7 第2類別運(yùn)動(dòng)方式仿真圖
根據(jù)數(shù)控機(jī)床脈沖式速度控制的功能需求,利用Verilog HDL語(yǔ)言設(shè)計(jì)了基于FPGA的步進(jìn)電動(dòng)機(jī)升降速控制模塊,并進(jìn)行了仿真,驗(yàn)證了設(shè)計(jì)的正確性。本文的主要工作體現(xiàn)在根據(jù)步進(jìn)電動(dòng)機(jī)升降速軟件實(shí)現(xiàn)流程提出了FPGA硬化實(shí)現(xiàn)的具體方法,提高了系統(tǒng)的運(yùn)行速度,相對(duì)于早期硬件實(shí)現(xiàn)電路,減少了元器件數(shù)量,提高了系統(tǒng)的可靠性,增強(qiáng)了模塊的可移植性和適用性。在仿真中出現(xiàn)的毛刺現(xiàn)象和定時(shí)間隔可調(diào)實(shí)現(xiàn)是以后進(jìn)一步研究的內(nèi)容。
[1] 汪木蘭. 數(shù)控原理與系統(tǒng)[M]. 北京:機(jī)械工業(yè)出版社,2007.
[2] 龐淑娟,倪受東. 基于FPGA的步進(jìn)電機(jī)速度控制器的設(shè)計(jì)[J]. 數(shù)字技術(shù)與機(jī)械加工工藝裝備,2008(4):32-33.
[3] 黃勇,廖宇,高林. 基于單片機(jī)的步進(jìn)電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)[J]. 電子測(cè)量技術(shù),2008(5):150-154.
[4] 楊國(guó)良,高瑞斌. 步進(jìn)電機(jī)的加減速控制設(shè)計(jì)[C]. 第十四屆中國(guó)小電機(jī)技術(shù)研討會(huì),2009.
[5] 李翠敏,高有行. 用寄存器實(shí)現(xiàn)步進(jìn)電機(jī)速度控制[J].驅(qū)動(dòng)控制,2005(5):14-16.
[6] 姚遠(yuǎn),李辰. FPGA應(yīng)用開(kāi)發(fā)入門(mén)與典型實(shí)例[M]. 北京:人民郵電出版社,2010.
[7] 徐煜明. 步進(jìn)電機(jī)速度控制的研究與實(shí)現(xiàn)[J]. 工礦自動(dòng)化,2007(2):82-84.
[8] 王玉琳,王強(qiáng). 步進(jìn)電機(jī)的速度調(diào)節(jié)方法[J]. 電機(jī)與控制應(yīng)用,2006(33):53-56.