劉長(zhǎng)宏,宋 鵬,劉巖川,唐建波
(大連民族學(xué)院機(jī)電信息工程學(xué)院,遼寧大連 116605)
基于運(yùn)動(dòng)控制卡的數(shù)控系統(tǒng)應(yīng)用研究
劉長(zhǎng)宏,宋 鵬,劉巖川,唐建波
(大連民族學(xué)院機(jī)電信息工程學(xué)院,遼寧大連 116605)
基于PC+運(yùn)動(dòng)控制卡仿真數(shù)控裝置,從硬件組成及軟件設(shè)計(jì)方面介紹了和利時(shí)運(yùn)動(dòng)控制卡在仿真數(shù)控平臺(tái)上的應(yīng)用,并在VC++6.0環(huán)境下,以對(duì)話框的形式,介紹了軟件的開(kāi)發(fā)過(guò)程及要點(diǎn),實(shí)現(xiàn)了回零、限位保護(hù)、實(shí)時(shí)控制和運(yùn)動(dòng)軌跡顯示等功能,適用于數(shù)控算法研究及數(shù)控原理培訓(xùn)。
運(yùn)動(dòng)控制卡;步進(jìn)電機(jī);仿真數(shù)控裝置;VC++
基于PC+運(yùn)控制卡數(shù)控系統(tǒng)滿足標(biāo)準(zhǔn)化、柔性化與開(kāi)放性的要求,使得它的開(kāi)發(fā)和使用備受青睞[1]。本文使用VC++6.0 MFC應(yīng)用程序,利用和利時(shí)6030運(yùn)動(dòng)控制卡開(kāi)發(fā)設(shè)計(jì)仿真數(shù)控平臺(tái)。該平臺(tái)具備了回零、限位保護(hù)、實(shí)時(shí)控制和運(yùn)動(dòng)軌跡顯示等功能,適用于數(shù)控算法研究及數(shù)控原理培訓(xùn)。
本系統(tǒng)在硬件上由PC機(jī)、和利時(shí)6030運(yùn)動(dòng)控制卡、步進(jìn)電機(jī)驅(qū)動(dòng)器及步進(jìn)電機(jī)組成。X軸和Y軸電機(jī)通過(guò)滾珠絲杠副帶動(dòng)平臺(tái)移動(dòng),在平臺(tái)上各個(gè)軸的左右有軟件控制限位開(kāi)關(guān)和硬件強(qiáng)制限位保護(hù)開(kāi)關(guān),平臺(tái)的右上角為設(shè)備的工作零點(diǎn)。為了便于軌跡的研究,裝置配有抬筆/落筆裝置,由電磁線圈控制。運(yùn)動(dòng)控制板卡插在PC機(jī)的PCI插槽內(nèi),PC機(jī)實(shí)現(xiàn)對(duì)系統(tǒng)監(jiān)控管理、軟硬件參數(shù)設(shè)置。通過(guò)控制軟件對(duì)運(yùn)動(dòng)控制卡進(jìn)行讀寫(xiě)操作,運(yùn)動(dòng)控制卡根據(jù)主機(jī)的命令產(chǎn)生脈沖序列,包括脈沖個(gè)數(shù)(位置)、頻率(速度)及頻率變化率(加速度)。步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)器根據(jù)接收到的脈沖信號(hào)產(chǎn)生多拍節(jié)脈沖驅(qū)動(dòng)信號(hào),控制步進(jìn)電機(jī)旋轉(zhuǎn),帶動(dòng)工作臺(tái)移動(dòng)。系統(tǒng)結(jié)構(gòu)如圖1。
本仿真數(shù)控系統(tǒng)的核心為和利時(shí)6030運(yùn)動(dòng)控制卡,由PCI主板和接口端子板組成。這是一款3軸步進(jìn)電機(jī)控制器,每軸可輸出脈沖和方向信號(hào),具有梯形升降曲線。提供帶光電隔離的16路輸入、8路達(dá)林頓輸出及2路繼電器輸出[2]??梢杂脕?lái)輸入工作臺(tái)的限位信號(hào)和控制提筆/落筆。采用DSP芯片做控制器,可以完成升降速計(jì)算、行程控制及多軸直線和圓弧插補(bǔ)控制。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
外圍電路由工作臺(tái)限位開(kāi)關(guān)、抬筆/落筆電磁線圈及步進(jìn)電機(jī)單元組成。運(yùn)動(dòng)控制卡與驅(qū)動(dòng)器之間的連接采用的是脈沖/方向的輸出方式,CW端為脈沖輸出,D端為方向輸出,共陽(yáng)極接法。脈沖信號(hào)為低電平有效。初始電平為高電平。工作臺(tái)限位開(kāi)關(guān)位于X,Y軸極限位置,依次由光電耦合開(kāi)關(guān)125C51組成軟件控制限位和硬件強(qiáng)制限位。在程序錯(cuò)誤軟件限位開(kāi)關(guān)失去作用時(shí),硬件限位開(kāi)關(guān)動(dòng)作,斷掉步進(jìn)電機(jī)的公共端,使電機(jī)停止運(yùn)動(dòng)。如要脫離硬限位,需按硬件電路中復(fù)位鍵,強(qiáng)制將脈沖信號(hào)加到驅(qū)動(dòng)器上,電機(jī)運(yùn)動(dòng),脫離硬限位,系統(tǒng)工作正常。抬筆/落筆控制采用繼電器輸出工作方式。
步進(jìn)電機(jī)56BYG250C與運(yùn)動(dòng)控制卡之間需要采用專門(mén)的驅(qū)動(dòng)器SH-20403,根據(jù)控制信號(hào),使步進(jìn)電機(jī)的繞組按照特定的順序通斷電,從而完成電機(jī)轉(zhuǎn)子的轉(zhuǎn)動(dòng)動(dòng)作。驅(qū)動(dòng)器工作時(shí)需外接開(kāi)關(guān)電源,通過(guò)驅(qū)動(dòng)器面板上6位撥碼開(kāi)關(guān)可以設(shè)置輸出電流和細(xì)分運(yùn)行模式。當(dāng)步進(jìn)電機(jī)驅(qū)動(dòng)器接受數(shù)控裝置發(fā)出的N個(gè)進(jìn)給脈沖時(shí),步進(jìn)電機(jī)的角位移,θ為步距角,i為細(xì)分倍數(shù)。步進(jìn)電機(jī)的速度式中h為傳動(dòng)機(jī)構(gòu)(絲杠)的螺距,f為輸入到步進(jìn)電機(jī)的脈沖頻率。當(dāng)本工作臺(tái)絲杠螺距為5 mm,步進(jìn)電機(jī)驅(qū)動(dòng)器細(xì)分設(shè)置為16,步距角1.8°時(shí),脈沖當(dāng)量為640 pulse/mm,每個(gè)脈沖工作臺(tái)前進(jìn)0.001 562 5 mm。
和利時(shí)6030運(yùn)動(dòng)卡基于W indows平臺(tái),提供了W indows32位動(dòng)態(tài)連接庫(kù)DLLs,支持Microsoft VisualBASI C、Visual C++及Borland C++Builder,具有初始化函數(shù)、運(yùn)動(dòng)控制函數(shù)、檢測(cè)函數(shù)及直線插補(bǔ)、圓弧插補(bǔ)函數(shù)等各種豐富的函數(shù),可以完成3軸的實(shí)時(shí)協(xié)調(diào)運(yùn)動(dòng)控制[2]。
目前,基于W indows操作系統(tǒng),采用面向?qū)ο蟮腣isual C++6.0語(yǔ)言為開(kāi)發(fā)工具的數(shù)控系統(tǒng),已成為全軟件數(shù)控系統(tǒng)的熱點(diǎn)[3]。本系統(tǒng)基于W indows進(jìn)行程序設(shè)計(jì),是一種基于消息件驅(qū)動(dòng)方式的程序設(shè)計(jì)[4],當(dāng)用戶需要完成某種功能如數(shù)據(jù)輸入時(shí),點(diǎn)擊功能按鈕,會(huì)產(chǎn)生消息。操作系統(tǒng)將啟動(dòng)消息循環(huán)并檢索消息,同時(shí)將消息發(fā)送給適當(dāng)?shù)膶?duì)象。每個(gè)可以接收消息的對(duì)象都有自己的消息映射,用于將消息與處理函數(shù)聯(lián)系在一起。目標(biāo)對(duì)象接收到消息時(shí),將搜索消息映射,尋找匹配的處理函數(shù)實(shí)現(xiàn)相應(yīng)的功能。在W indows xp系統(tǒng)下,利用VC++6.0以對(duì)話框方式編寫(xiě)數(shù)控仿真系統(tǒng)控制程序時(shí),將動(dòng)態(tài)聯(lián)接庫(kù)Dfjzh6030Api.dll拷貝到VC的工作目錄下,然后將Dfjzh6030Api.lib及頭文件Dfjzh6030Api.h包含在該工程項(xiàng)目中,建立如圖2的對(duì)話框。系統(tǒng)要完成對(duì)卡的初始化,數(shù)控系統(tǒng)工作零點(diǎn)的建立,工作參數(shù)的輸入,系統(tǒng)軌跡的實(shí)時(shí)控制、顯示及限位保護(hù)等任務(wù)。在這些任務(wù)中,有的沒(méi)有實(shí)時(shí)性,有的有實(shí)時(shí)性,根據(jù)這點(diǎn),可以利用W indows系統(tǒng)的多任務(wù)、搶占式的特點(diǎn)和多線程技術(shù)將各個(gè)任務(wù)分給不同的線程,并賦予不同的優(yōu)先級(jí)來(lái)實(shí)現(xiàn)數(shù)控系統(tǒng)的實(shí)時(shí)性[5]。當(dāng)系統(tǒng)要求不高時(shí),也可用消息響應(yīng)函數(shù)onTimer()來(lái)實(shí)現(xiàn)系統(tǒng)周期性的實(shí)時(shí)控制。
圖2 數(shù)控仿真平臺(tái)設(shè)置的對(duì)話框界面
新建一個(gè)基于對(duì)話框的VC工程Test,MFC應(yīng)用程序向?qū)?chuàng)建CtestApp和CTestdlg兩個(gè)類。在CTestdlg類內(nèi),添加如下代碼完成運(yùn)動(dòng)控制卡的初始化。
在對(duì)話框中添加控件和變量,并建立控件和變量的關(guān)聯(lián)。實(shí)現(xiàn)插補(bǔ)的選擇、坐標(biāo)終點(diǎn)及圓心坐標(biāo)等參數(shù)的輸入。
采用定時(shí)器定時(shí)循環(huán)檢測(cè)的形式,完成系統(tǒng)的實(shí)時(shí)控制。在程序中添加消息定時(shí)器完成消息的映射,并編寫(xiě)相應(yīng)的功能函數(shù)OnTi mer()。定時(shí)函數(shù)OnTimer()是實(shí)時(shí)控制中的關(guān)鍵函數(shù)。根據(jù)定時(shí)器設(shè)定的時(shí)間值,循環(huán)執(zhí)行,完成以下功能:
(1)X,Y軸極限位置判斷。當(dāng)極限開(kāi)關(guān)動(dòng)作后,緊急停止X-Y軸的運(yùn)動(dòng),復(fù)位定時(shí)器。退出插補(bǔ)緩沖區(qū),并發(fā)出超出行程的信息。
(2)X-Y軸實(shí)時(shí)坐標(biāo)顯示。利用函數(shù)actpos6030(),得到X-Y軸的實(shí)時(shí)運(yùn)行脈沖。經(jīng)量程變換轉(zhuǎn)換成顯示設(shè)備的坐標(biāo)并畫(huà)出相應(yīng)線段。
(3)回零的實(shí)時(shí)控制。回零過(guò)程是數(shù)控系統(tǒng)工作零點(diǎn)的建立過(guò)程。其工作原理是,歸零時(shí)先X軸后Y軸,每個(gè)坐標(biāo)軸向零點(diǎn)方向移動(dòng)。碰到極限開(kāi)關(guān)后,停止運(yùn)動(dòng)。然后向相反方向移動(dòng),脫離限位開(kāi)關(guān)后,停止,清坐標(biāo)軸寄存器,建立系統(tǒng)工作零點(diǎn)。其流程如圖3。
圖3 回零控制流程圖
當(dāng)窗口內(nèi)容變化時(shí),發(fā)送消息,調(diào)用消息函數(shù)ON_Paint()。在此消息函數(shù)中應(yīng)定義要顯示插補(bǔ)軌跡的區(qū)域及X,Y軸的坐標(biāo)樣式和刻度標(biāo)注。并在插補(bǔ)命令執(zhí)行時(shí)實(shí)時(shí)顯示軌跡。
根據(jù)需要,設(shè)置“開(kāi)始插補(bǔ)命令”“確認(rèn)插補(bǔ)命令”“暫?!薄皥?zhí)行插補(bǔ)命令”“回零”“急?!薄皬?fù)位”“停止”“退出”按鈕。在類內(nèi),當(dāng)鼠標(biāo)動(dòng)作時(shí),產(chǎn)生消息,為消息建立功能映射函數(shù),根據(jù)各個(gè)鍵的功能,編寫(xiě)相應(yīng)的函數(shù)。
在功能按鈕中,“回零”按鈕是關(guān)鍵,每次新的插補(bǔ)命令執(zhí)行前,都要執(zhí)行此函數(shù),它將建立設(shè)備中X,Y軸數(shù)據(jù)坐標(biāo)的零點(diǎn)?!皬?fù)位”按鈕鍵功能更新窗口參數(shù),將數(shù)組中所有數(shù)據(jù)清零,清除插補(bǔ)緩沖區(qū)數(shù)據(jù),清零X和Y軸數(shù)據(jù)寄存器,并等待新參數(shù)輸入?!皬?fù)位”執(zhí)行完畢后還需再執(zhí)行“回零”功能鍵。急停和停止的區(qū)別是調(diào)用不同的函數(shù)以不同的速度停止?!伴_(kāi)始插補(bǔ)命令”按鈕、“確認(rèn)插補(bǔ)命令”按鈕、“執(zhí)行插補(bǔ)命令”按鈕是程序的主要部分。完成插補(bǔ)的初始化及速度、加減速度等參數(shù)設(shè)置及執(zhí)行插補(bǔ)命令等功能。為了提高精度,可以采用各種插補(bǔ)算法,提高軌跡精度。
“歸零”按鈕的功能是設(shè)置回零標(biāo)記,軌跡顯示,抬筆/落筆電磁線圈斷電。退出插補(bǔ)緩沖區(qū),等待定時(shí)時(shí)間到后,設(shè)置X軸回零的速度和加速度。調(diào)用OnTimer()等待歸零完成。其按鈕程序如下:
本文利用VC++6.0提供的微軟基礎(chǔ)類庫(kù)(MFC)及板卡支持的底層函數(shù)庫(kù),詳細(xì)介紹了利用和立時(shí)6030運(yùn)動(dòng)控制卡控制仿真數(shù)控裝置進(jìn)行二次開(kāi)發(fā)的全過(guò)程,本數(shù)控平臺(tái)具備了很好極限保護(hù)功能及實(shí)時(shí)控制功能,是進(jìn)行數(shù)控知識(shí)學(xué)習(xí)和研究的很好的平臺(tái),可以在此平臺(tái)上進(jìn)行各種插補(bǔ)算法學(xué)習(xí)和研究。如果將數(shù)控系統(tǒng)的G代碼編制成模塊程序,可以作為數(shù)控編程培訓(xùn)設(shè)備使用。這樣極大地節(jié)約成本,為我國(guó)數(shù)控工業(yè)發(fā)展做出貢獻(xiàn)。
[1]耿宏濤,舒志兵.基于VC的多軸運(yùn)動(dòng)控制卡軟件開(kāi)發(fā)技術(shù)研究[J].機(jī)床與液壓,2007,35(11):130-133.
[2]北京和利時(shí)電機(jī)技術(shù)有限公司.6030電機(jī)控制卡使用手冊(cè)[C].北京:北京和利時(shí)電機(jī)技術(shù)有限公司, 2002.
[3]賈敏忠,謝明紅.PLC-839運(yùn)動(dòng)控制卡數(shù)控系統(tǒng)開(kāi)發(fā)[J].華僑大學(xué)學(xué)報(bào):自然科學(xué)版,2006(4):404-407.
[4]金雪云.Visual C++教程[M].北京:清華大學(xué)出版社, 2005.
[5]張宏.基于PC+運(yùn)動(dòng)控制卡的開(kāi)放式數(shù)控系統(tǒng)的研究[J].機(jī)械設(shè)計(jì)與制造,2008(6):171-172.
Research on Applications of a Numerical Control System Based on M otion Control Card
L IU Chang-hong,SONG Peng,L IU Yan-chuan,TANG Ji an-bo
(College of Electromechanical&Information Engineering,Dalian NationalitiesUniversity, Dalian Liaoning 116605,China)
Based on a numerical control(NC)emulator consisting of a PC and a motion control card,this paper presents applications of Hollysys motion control cards on NC emulation platforms from the perspectivesof hardware configuration and software design.The software development process and main pointswere introduced in the form of dialog boxes in VC++6.0.Functions such as reset,position limitprotection,real-time control andmotion trace displaywere achieved.The cards find applications in NC algorithm research and NC principles training.
motion control card;step motor;NC emulator;VC++
T M383
A
1009-315X(2010)01-0017-04
2009-06-30
劉長(zhǎng)宏(1968-),男,河南林州人,工程師,主要從事機(jī)電一體化研究。
(責(zé)任編輯 劉敏)