0引言
數(shù)控技術(shù)是以數(shù)字量編程實現(xiàn)控制機械或其他設(shè)備自動工作的技術(shù),,數(shù)控機床就是采用了數(shù)控技術(shù)的機床,或者說裝備了數(shù)控系統(tǒng)的機床。機床數(shù)控系統(tǒng)主要由幾個部分組成:零件加工程序的輸入,、數(shù)據(jù)處理,、插補計算和運動機構(gòu)的控制。本文主要介紹最后一個部分運動機構(gòu)的控制,,即如何控制電機的動作,。可選的電機有很多種,,在這里我們選擇步進電機,。
步進電機是數(shù)字控制電機,是一種將電脈沖轉(zhuǎn)換成角位移的精密執(zhí)行元件,。它的旋轉(zhuǎn)是以固定的角度一步一步運行的,,每給步進電機發(fā)一個脈沖電機就旋轉(zhuǎn)一個固定的角度,只要脈沖數(shù)發(fā)的正確,,電機就能走到位,,無累積誤差,所以對步進電機的控制可以采用開環(huán)控制方法,。如何精確且經(jīng)濟的控制步進電機成為廣大研究人員探討的課題,。本文將采用CPLD來實現(xiàn)對步進電機的控制。并最終通過實驗仿真結(jié)果,。
1步進電機驅(qū)動原理
步進電機的驅(qū)動是靠給步進電機的各相勵磁繞組通電,,實現(xiàn)步進電機內(nèi)部磁場方向的變化來使步進電機轉(zhuǎn)動的。設(shè)我們所用的步進電機是四相的,,這四相分別為A,,B,C,,D,,對應(yīng)于四對磁極。每個磁極的內(nèi)表面都分布著大小,,齒間距相同的多個小齒(不同的步進電機,,小齒的個數(shù)不同),假設(shè)Ⅳ為轉(zhuǎn)子中小齒的個數(shù),。當這4相按A—B—C—D的順序通電時,,步進電機的內(nèi)部磁場變化一周(360°),此種通電方式為單相四拍通電方式,,此時步進電機的步距角:
θ=90°/N
若N=50,,則θ=1.8°
如果選擇的通電順序為A—AB—B—BC—C—CD—D—AD,此種通電方式為雙相八拍通電方式,,此時步進電機的步距角為:
θ=45°/N
若N=50,,則θ=0.9°
步距角是步進電機一次能轉(zhuǎn)過的最小角度,,電機的步距角越小,說明電機走的越精確,,所以本文選擇驅(qū)動電機通電的方式為雙相八拍通電方式,。
2設(shè)計方案
一個完整的,控制精度高的步進電機控制系統(tǒng)框圖如圖1所示,。CPLD和步進電機的驅(qū)動器相連,,驅(qū)動器把CPLD輸出的信號放大后送入步進電機,由于數(shù)控機床的各個軸是靠電機的轉(zhuǎn)動來帶動的,,所以電機的轉(zhuǎn)動帶動相應(yīng)軸的動作,。
各組成模塊功能描述如下:
2.1CPLD模塊
使用CPLD來控制步進電機實現(xiàn)電機的啟動、停止以及正反轉(zhuǎn),。傳統(tǒng)的方式是用單片機來控制步進電機,但是在一個數(shù)控系統(tǒng)中單片機要做的工作很多,,比如單片機既要控制步進電機還要接受上位機的數(shù)據(jù)做相應(yīng)的運算,,還要控制顯示模塊,以及報警處理等,,如果改用CPLD來驅(qū)動步進電機則可以減輕單片機的負擔,。用大規(guī)模可編程邏輯器件作為控制器,,可以反映出CPLD在控制方面起到較高的作用,,而不是僅僅作為邏輯器件來使用。并且CPLD具有較為經(jīng)濟的價格,。
另外CPLD的外圍接口也較多,,比如以ALTERA公司生產(chǎn)的EPM7032為例,它的I/O口有36個,,內(nèi)部的邏輯門有600多個,,除了驅(qū)動步進電機所用的資源外,其余剩余的資源還可在系統(tǒng)中做其他用途,。
在實際電路板設(shè)計階段,,如果用傳統(tǒng)的設(shè)計方法設(shè)計電路必須首先決定使用的器件類別和規(guī)格,然后從繪制硅片版圖開始,,逐級向上,,直至整個系統(tǒng)的設(shè)計。在這個過程中如果有哪一級發(fā)生問題必須返工重來,,整個電路板將報廢,。但是如果使用CPLD,設(shè)計方法是自頂向下的設(shè)計方法,,就是在整個設(shè)計流程中各設(shè)計環(huán)節(jié)逐步求精的過程,。比如在我們設(shè)計的一開始就可以先把CPLD和驅(qū)動器相連,再通過軟件的設(shè)置來利用到我們已經(jīng)連好的引腳,如果程序出現(xiàn)錯誤,,可以同過ISP(在系統(tǒng)可編程的方法)把新的程序裝載到CPLD中,,而不用更換電路板。
2.2驅(qū)動器模塊
步進電機的運行要有一電子裝置進行驅(qū)動,,這種裝置就是步進電機驅(qū)動器,,由于CPLD輸出的信號還不足以驅(qū)動電機使電機轉(zhuǎn)動,所以在CPLD和步進電機之間要連接驅(qū)動器,,放大CPLD輸出的信號,。CPLD每發(fā)一個脈沖信號,通過驅(qū)動器就使步進電機旋轉(zhuǎn)一步距角,。因而控制送入步進電機脈沖頻率,,可以對電機進行調(diào)速。脈沖發(fā)的快電機運行的快,,脈沖發(fā)的慢電機運行的慢,。對于電機轉(zhuǎn)速的控制可以間接通過調(diào)整對送入CPLD中CLK脈沖的頻率來實現(xiàn);控制步進脈沖的個數(shù),,可以對電機進行精確定位,。
3軟件實現(xiàn)
本文通過對CPLD進行編程來實現(xiàn)對步進電機的控制,使用的語言是VHDL語言,,使用的編程環(huán)境是MAX+PLUSII,。控制程序由兩大部分構(gòu)成,,一是實體部分,,二是結(jié)構(gòu)體部分,實體的作用是描述端口的信息,,結(jié)構(gòu)體的作用是描述電路的功能,。
3.1實體部分
在實體中定義了6個端口。
CLK:時鐘信號
reset:復(fù)位信號
DIR:正轉(zhuǎn)信號
START:啟動信號
STOP:停止信號
phase:輸出信號
3.2結(jié)構(gòu)體部分
在軟件設(shè)計中,,重點是先正確寫出雙相八拍通電方式下的狀態(tài)轉(zhuǎn)換表,。
表1中‘1’表示通電,‘0’表示斷電,,S0~S7分別表示按A—AB—B—BC—C—CD—D—AD通電方式下的8個狀態(tài),。在此種狀態(tài)順序下電機正轉(zhuǎn),反之電機反轉(zhuǎn),。表中的S0~S7都是以二進制數(shù)來表示,,如果轉(zhuǎn)換為十六進制數(shù)則分別為1,3,,2,,6,,4,C,,8,,9。
程序的結(jié)構(gòu)體部分由3部分組成:說明部分,,主控時序進程,,主控組合進程。在說明部分中定義相關(guān)的信號及常數(shù),;在主控時序進程中負責把計算好的次態(tài)的信息送入初態(tài),,并負責最后的輸出;在主控組合進程中負責相關(guān)的計算,,比如判斷啟動和停止,,正轉(zhuǎn)和反轉(zhuǎn),以及在正反轉(zhuǎn)狀態(tài)下如何取下一個狀態(tài),。下面這段程序就是結(jié)構(gòu)體里主控組合進程中,,如何判斷電機正反轉(zhuǎn)和下一步電機將如何動作的程序段。
3.3系統(tǒng)仿真結(jié)果
整個控制程序的軟件波形仿真如下:
從圖2中可以看到,,在模擬步進電機啟動、停止,、正反轉(zhuǎn)時電機的狀態(tài),。比如在復(fù)位后當START=‘1’時,如果這時DIR=‘1’表示電機是正轉(zhuǎn),,則電機的通電狀態(tài)是A—AB—B—BC—C—CD—D—AD,,對應(yīng)的CPLD的輸出狀態(tài)就為S0~S7。當DIR=‘0’時表示電機是反轉(zhuǎn),,就圖2的截圖來說在CLK的上升沿時,,輸出是狀態(tài)S2,因為它的前一個狀態(tài)從圖上我們可以看出是S1,。
4結(jié)束語
在數(shù)控系統(tǒng)中我們希望達到準確,、高效、經(jīng)濟的控制,,在運動機構(gòu)的控制這一環(huán)節(jié),,通過CPLD可以起到很好的效果,首先可以簡化硬件電路,,提高電路的可靠性,,其次可以通過對器件進行編程來改變器件的結(jié)構(gòu),達到我們預(yù)期的功能,,并且通過ISP在系統(tǒng)可編程的方法把程序加載到器件上,。
通過CPLD可控制步進電機的啟動,、停止、以及正反轉(zhuǎn),,本文通過軟件仿真,,驗證了方案的正確性。本文所列舉的電機是四相的,,如果是三相或是五相電機,,都可按本文的方法實現(xiàn),如果對電機采用的單相通電的方法,,也可按本文的方法實現(xiàn),,同樣只須稍微修改參數(shù)即可。