摘 要:采用“PC+運(yùn)動(dòng)控制卡”的運(yùn)動(dòng)控制方案,設(shè)計(jì)了基于VB的四軸運(yùn)動(dòng)控制系統(tǒng),通過(guò)調(diào)用控制卡的運(yùn)動(dòng)函數(shù)庫(kù)實(shí)現(xiàn)單軸點(diǎn)動(dòng)、連續(xù)運(yùn)動(dòng)以及直線和圓弧插補(bǔ)等功能。詳細(xì)說(shuō)明了運(yùn)動(dòng)控制系統(tǒng)的組成及運(yùn)動(dòng)控制系統(tǒng)的軟件設(shè)計(jì)。
關(guān)鍵詞:VB;運(yùn)動(dòng)控制卡;運(yùn)動(dòng)控制系統(tǒng);運(yùn)動(dòng)函數(shù)庫(kù)
引言
為了提高產(chǎn)品質(zhì)量和產(chǎn)量,運(yùn)動(dòng)控制系統(tǒng)正在不斷地深入到各個(gè)領(lǐng)域并得以迅速發(fā)展,運(yùn)動(dòng)控制系統(tǒng)在各類(lèi)控制工程中有著廣泛的應(yīng)用前景。其應(yīng)用范圍涵蓋數(shù)控加工業(yè)、汽車(chē)制造業(yè)和機(jī)器人等多個(gè)領(lǐng)域。通過(guò)開(kāi)發(fā)實(shí)時(shí)多軸運(yùn)動(dòng)控制系統(tǒng)軟件來(lái)滿足實(shí)際工作的需求,已經(jīng)成為備受關(guān)注的研究課題[1,2]。
近年來(lái),PC+運(yùn)動(dòng)控制卡模式的運(yùn)動(dòng)控制系統(tǒng)得到了廣泛應(yīng)用。它具有結(jié)構(gòu)簡(jiǎn)單、開(kāi)放性易實(shí)現(xiàn)、成本相對(duì)較低等優(yōu)點(diǎn)[3]。文章的控制系統(tǒng)也采用PC+運(yùn)動(dòng)控制卡模式。
1 系統(tǒng)硬件設(shè)計(jì)
整個(gè)系統(tǒng)由運(yùn)動(dòng)執(zhí)行機(jī)構(gòu)及運(yùn)動(dòng)控制系統(tǒng)組成,PC為控制系統(tǒng)的上位機(jī),運(yùn)動(dòng)控制卡為下位機(jī),系統(tǒng)設(shè)計(jì)方案如圖1所示。
PC主機(jī)與控制卡通過(guò)PCI通訊方式實(shí)現(xiàn)信息交換,PC機(jī)通過(guò)調(diào)用運(yùn)動(dòng)控制卡動(dòng)態(tài)鏈接庫(kù)向控制卡發(fā)出運(yùn)動(dòng)指令,運(yùn)動(dòng)卡接收來(lái)自上位機(jī)的指令后向驅(qū)動(dòng)器發(fā)出控制脈沖信號(hào),控制卡可以控制所發(fā)出脈沖的頻率、個(gè)數(shù)及頻率變化率,從而能滿足電機(jī)各種復(fù)雜的控制要求[4,5],主機(jī)也可以通過(guò)總線讀取運(yùn)動(dòng)控制卡的輸入信號(hào),如通用輸入口、限位信號(hào)、原點(diǎn)開(kāi)關(guān)等,經(jīng)判斷并執(zhí)行相應(yīng)運(yùn)算后向運(yùn)動(dòng)控制卡發(fā)出相應(yīng)執(zhí)行指令。
系統(tǒng)采用的運(yùn)動(dòng)控制卡是深圳固高公司生產(chǎn)的基于PCI總線的型號(hào)為GTS-400-SV的高性能運(yùn)動(dòng)控制卡,該控制卡可以同時(shí)控制4個(gè)軸,實(shí)現(xiàn)多軸協(xié)調(diào)運(yùn)動(dòng)。
圖1 運(yùn)動(dòng)控制系統(tǒng)的硬件結(jié)構(gòu)框圖
系統(tǒng)其中一個(gè)軸的電路連接方式如圖2所示,控制卡的脈沖信號(hào)及方向信號(hào)發(fā)送給驅(qū)動(dòng)器,經(jīng)放大處理后驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)動(dòng),LIM+和LIM-分別連接對(duì)應(yīng)軸的正向限位和負(fù)向限位開(kāi)關(guān),HOME為原點(diǎn)觸發(fā)信號(hào)的輸入引腳,連接原點(diǎn)開(kāi)關(guān)[6]。
圖2 電路連接圖
2系統(tǒng)軟件設(shè)計(jì)
固高運(yùn)動(dòng)控制卡的控制系統(tǒng)可以使用VC、VB和Delphi等支持動(dòng)態(tài)鏈接庫(kù)的開(kāi)發(fā)工具來(lái)編寫(xiě)[7]。文章的運(yùn)動(dòng)控制系統(tǒng)的控制軟件采用VB(Visual Basic)語(yǔ)言進(jìn)行設(shè)計(jì)。VB是面向Windows的可視化編程開(kāi)發(fā)工具,具有簡(jiǎn)練的語(yǔ)法和強(qiáng)大的功能、結(jié)構(gòu)化程序設(shè)計(jì)思想以及方便快捷的可視化編程手段[8],它屏蔽了Windows環(huán)境下程序設(shè)計(jì)的復(fù)雜性,利用動(dòng)態(tài)鏈接庫(kù)DLL可以很快開(kāi)發(fā)出Windows平臺(tái)下的運(yùn)動(dòng)控制系統(tǒng),因此VB在機(jī)電系統(tǒng)軟件開(kāi)發(fā)方面占有很大的比例。
2.1 程序界面設(shè)計(jì)
程序界面主要包括參數(shù)設(shè)置、功能選擇和運(yùn)動(dòng)操作模塊。硬件參數(shù)包括電機(jī)每轉(zhuǎn)脈沖數(shù)、絲杠螺距、驅(qū)動(dòng)器細(xì)分倍數(shù)及控制卡控制周期的設(shè)置,增加了使控制系統(tǒng)的適用性,參數(shù)設(shè)置還包括運(yùn)動(dòng)軸軸號(hào)選擇、運(yùn)動(dòng)速度設(shè)置、移動(dòng)距離設(shè)置、加速度以及加加速度設(shè)置,功能選擇模塊包括直線插補(bǔ)、圓弧插補(bǔ)、單軸運(yùn)動(dòng)、電子齒輪等運(yùn)動(dòng)模式的選擇,操作模塊包括驅(qū)動(dòng)復(fù)位、位置清零、回原點(diǎn)、開(kāi)始、停止和點(diǎn)動(dòng)等,控制程序界面如圖3所示。
圖3 程序界面
2.2 控制程序的編寫(xiě)
運(yùn)動(dòng)控制卡提供了Windows環(huán)境下的動(dòng)態(tài)鏈接庫(kù),在Windows系統(tǒng)下,用戶通過(guò)PC機(jī)調(diào)用函數(shù)庫(kù)中的指令,向運(yùn)動(dòng)控制器發(fā)出控制指令,實(shí)現(xiàn)各種功能。在使用VB編寫(xiě)程序之前,首先將控制卡動(dòng)態(tài)鏈接庫(kù)gts.dll和函數(shù)聲明文件gts.bas復(fù)制到工程文件夾中,然后選擇工程菜單下的“添加模塊”,切換到“現(xiàn)存”標(biāo)簽頁(yè),選擇工程文件夾中的函數(shù)聲明文件gts.bas,將其添加到工程中。最后將運(yùn)動(dòng)控制器的動(dòng)態(tài)鏈接庫(kù)文件gts.dll復(fù)制到PC機(jī)中C盤(pán)windows system 文件夾中。至此可以調(diào)用函數(shù)庫(kù)中的指令函數(shù)來(lái)編寫(xiě)程序[9],使用VB編寫(xiě)控制程序的界面如圖4所示。
圖4 程序代碼編寫(xiě)界面
程序主要包括返回值處理函數(shù)、初始化函數(shù)、運(yùn)動(dòng)參數(shù)設(shè)置及運(yùn)動(dòng)執(zhí)行函數(shù)等。初始化函數(shù)包括控制卡和運(yùn)動(dòng)控制軸初始化函數(shù),控制卡初始化函數(shù)由GT_Open()(打開(kāi)運(yùn)動(dòng)控制器)、GT_SwitchtoCardNo()(指定當(dāng)前控制卡)、GT_SetSmplTm()(設(shè)置控制周期)、GT_Reset()(復(fù)位運(yùn)動(dòng)控制器)等指令組成;運(yùn)動(dòng)軸初始化函數(shù)由GT_Axis()(設(shè)置當(dāng)前軸)、GT_ClrSts()(清除當(dāng)前軸狀態(tài))等指令組成??刂瓶ㄌ峁┝舜罅康倪\(yùn)動(dòng)指令供調(diào)用,可以滿足各種簡(jiǎn)單及復(fù)雜運(yùn)動(dòng)控制的要求。
以下是以電子齒輪模式運(yùn)動(dòng)函數(shù)為例簡(jiǎn)要介紹VB編程環(huán)境下運(yùn)動(dòng)指令的調(diào)用方式,對(duì)于用戶通過(guò)主機(jī)發(fā)送的命令,運(yùn)動(dòng)控制器在檢查、校驗(yàn)后,會(huì)給出一個(gè)反饋,這個(gè)反饋就是指令(庫(kù)函數(shù))的返回值,在程序中,指令的返回值賦值給變量rtn,rtn經(jīng)過(guò)返回值處理函數(shù)顯示出相應(yīng)的錯(cuò)誤信息。指令GT_PrflG(2)為設(shè)置當(dāng)前軸的運(yùn)動(dòng)模式為電子齒輪控制模式,主軸為2軸,指令GT_SetRatio(2)用來(lái)設(shè)置當(dāng)前軸的電子齒輪傳動(dòng)比為2。指令GT_SetAcc(0.01)、GT_SetVel(B)、GT_SetPos(A)分別用來(lái)設(shè)置當(dāng)前軸的運(yùn)動(dòng)加速度、速度及目標(biāo)位置,變量B和A分別為用戶輸入的速度及目標(biāo)位置經(jīng)過(guò)運(yùn)算后的數(shù)值。
Private Sub GMotion() '電子齒輪控制模式運(yùn)動(dòng)子函數(shù)
rtn = GT_Axis(1): Er (rtn)
rtn = GT_PrflG(2): Er (rtn)
rtn = GT_SetRatio(2): Er (rtn)
rtn = GT_Update(): Er (rtn)
End Sub
Private Sub Command6_Click() '以電子齒輪模式運(yùn)動(dòng)到目標(biāo)位置
Dim A As Single
Dim B As Single
A = Text2
B = Text1 / 4 * 1600 / 1000000 * 200
GT_Initial
InputCfg
Axis_1_Initial
Axis_2_Initial
GMotion
rtn = GT_Axis(2)
rtn = GT_PrflT(): Er (rtn)
rtn = GT_SetAcc(0.01): Er (rtn)
rtn = GT_SetVel(B): Er (rtn)
rtn = GT_SetPos(A): Er (rtn)
rtn = GT_Update(): Er (rtn)
End Sub
3 結(jié)束語(yǔ)
文中運(yùn)動(dòng)控制系統(tǒng)采用“PC+運(yùn)動(dòng)控制卡”模式,使系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,動(dòng)態(tài)鏈接庫(kù)機(jī)制使VB在對(duì)第三方運(yùn)動(dòng)控制卡的支持上有了一個(gè)通用可行的途徑。這種方法不僅可以采用價(jià)格相對(duì)較低的普通運(yùn)動(dòng)控制卡,而且能避免繁瑣的界面編程,縮短周期,提高效率,降低成本。文章所引用的程序已在某四軸運(yùn)動(dòng)平臺(tái)上通過(guò)測(cè)試并得到應(yīng)用,運(yùn)行穩(wěn)定、可靠。
參考文獻(xiàn)
[1]叢爽.實(shí)用運(yùn)動(dòng)控制技術(shù)[M].北京:電子工業(yè)出版社,2006:38-42.
[2]李剛,楊繼東.基于PC的開(kāi)放式數(shù)控系統(tǒng)的開(kāi)發(fā)[J].機(jī)床與液壓,2006(4):82-83.
[3]何麗嬌,張憲民,王宇華.二維定位平臺(tái)的運(yùn)動(dòng)控制系統(tǒng)研究[J].機(jī)電工程技術(shù),2008,37(1):54-97.
[4]周光學(xué).基于運(yùn)動(dòng)控制器的開(kāi)放式數(shù)控系統(tǒng)研究及軟件設(shè)計(jì)[D].秦皇島:燕山大學(xué),2005.
[5]關(guān)學(xué)鋒,王偉,胡明.基于運(yùn)動(dòng)控制卡的五自由度機(jī)器人控制系統(tǒng)的開(kāi)發(fā)[J].機(jī)械設(shè)計(jì)與制造,2009(6):189-190.
[6]李國(guó)厚.步進(jìn)電機(jī)驅(qū)動(dòng)與控制系統(tǒng)的設(shè)計(jì)[J].煤礦機(jī)械,2008,29(2):114-116.
[7]楊中寶,康順哲.VB語(yǔ)言程序設(shè)計(jì)教程[M].北京:人民郵電出版社,2006:46-77.
[8]沈洪,施明利,等.VB程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,
2010,6:0-56.
[9]固高科技(深圳)有限公司.GTS系列運(yùn)動(dòng)控制器編程手冊(cè)[Z].
2011.