王政皓,楊召彬,喬磊,王宏甲,趙慶志
(山東理工大學(xué) 機(jī)械工程學(xué)院,山東 淄博 255049)
隨著我國(guó)科學(xué)技術(shù)的不斷發(fā)展,經(jīng)濟(jì)型數(shù)控系統(tǒng)在一定程度上得到很快發(fā)展,為加工生產(chǎn)提供了更好的技術(shù)支持[1-3]。經(jīng)濟(jì)型數(shù)控系統(tǒng)通過(guò)與計(jì)算機(jī)的完美結(jié)合,使用價(jià)值進(jìn)一步得到提升,目前經(jīng)濟(jì)型數(shù)控機(jī)床因?yàn)槠湫阅芎?、價(jià)格低廉等優(yōu)點(diǎn),已經(jīng)成為我國(guó)制造業(yè)中必不可少的重要部分。雖然經(jīng)濟(jì)型數(shù)控系統(tǒng)因?yàn)槠渥陨韮?yōu)勢(shì)而被廣泛使用,但其插補(bǔ)功能存在一定的不足[4],無(wú)法滿足部分較精細(xì)工件的加工生產(chǎn)要求。因此,本文進(jìn)行圓錐曲線數(shù)控系統(tǒng)的設(shè)計(jì)與研究,以期在一定程度上彌補(bǔ)傳統(tǒng)經(jīng)濟(jì)型數(shù)控系統(tǒng)插補(bǔ)能力的不足,提高傳統(tǒng)經(jīng)濟(jì)型數(shù)控系統(tǒng)的性能。
為實(shí)現(xiàn)圓錐曲線插補(bǔ),提高經(jīng)濟(jì)型數(shù)控系統(tǒng)的性能,本文設(shè)計(jì)的數(shù)控系統(tǒng)主要采用了差分插補(bǔ)原理、多線程以及OpenGL等技術(shù)。整個(gè)數(shù)控系統(tǒng)的軟件模塊如圖1所示。數(shù)控系統(tǒng)主要由輸入模塊、輸出模塊、運(yùn)動(dòng)控制模塊以及輔助模塊4部分組成,實(shí)現(xiàn)了NC代碼的譯碼、加工仿真、插補(bǔ)加工以及加工信息的顯示等功能。同時(shí),本文采用PCI-750數(shù)據(jù)采集卡作為控制系統(tǒng)的硬件核心,實(shí)現(xiàn)圓錐曲線數(shù)控系統(tǒng)的動(dòng)力系統(tǒng)與伺服系統(tǒng)的控制。
圖1 數(shù)控系統(tǒng)的軟件模塊Fig.1 The functional framework of the numerical control system
該數(shù)控系統(tǒng)設(shè)計(jì)結(jié)構(gòu)嚴(yán)謹(jǐn)、穩(wěn)定性強(qiáng)、功能齊全、實(shí)現(xiàn)簡(jiǎn)單,結(jié)合差分插補(bǔ)原理能夠?qū)崿F(xiàn)圓錐曲線的直接插補(bǔ)。
本文的圓錐曲線數(shù)控系統(tǒng)插補(bǔ)模塊程序以差分插補(bǔ)原理為核心編寫。從相關(guān)文獻(xiàn)[5-7]中分析可得,差分插補(bǔ)原理是從原點(diǎn)開(kāi)始,依據(jù)函數(shù)遞增的趨勢(shì)進(jìn)行推導(dǎo)的。在插補(bǔ)的過(guò)程中,為滿足該插補(bǔ)方法的理論依據(jù),曲線方程需經(jīng)坐標(biāo)系平移和變向化為可分離變量的正高次曲線,坐標(biāo)系劃分為定義用絕對(duì)坐標(biāo)系、相對(duì)坐標(biāo)系和加工用絕對(duì)坐標(biāo)系,具體各種坐標(biāo)系的含義和變換方法見(jiàn)文獻(xiàn) [8]。
差分插補(bǔ)原理能夠?qū)崿F(xiàn)對(duì)變量可分離的正高次曲線的直接插補(bǔ),并且插補(bǔ)運(yùn)算誤差不超過(guò)半個(gè)脈沖當(dāng)量。差分插補(bǔ)原理的每次進(jìn)給中都要包含脈沖密度高的基準(zhǔn)軸,并判斷非基準(zhǔn)軸的脈沖是否存在,以此為基礎(chǔ),系統(tǒng)從平面直線插補(bǔ)擴(kuò)展到空間多維線性插補(bǔ)[9-10]。
例如:用絕對(duì)坐標(biāo)系定義的二次多項(xiàng)式方程Q(x)=P(y),經(jīng)過(guò)坐標(biāo)系平移和變向化為相對(duì)坐標(biāo)系中的正二次曲線方程
a2x2+a1x=b2y2+b1y
正二次曲線方程的差分插補(bǔ)基本原理如圖2所示。其中差分插補(bǔ)代碼為:
jx1,jx2,jy1,jy2,F,G,L
jx1:x的一階差分;jx2:x的二階差分;
jy1:y的一階差分;jy2:y的二階差分;
F:插補(bǔ)偏差;
G:計(jì)數(shù)方向;
L:加工用的絕對(duì)坐標(biāo)象限。
圖2 正二次曲線差分插補(bǔ)基本原理圖Fig.2The basic principle of positive quadratic differential interpolation
如何完成多任務(wù)的實(shí)時(shí)控制是開(kāi)發(fā)數(shù)控系統(tǒng)必須解決的關(guān)鍵問(wèn)題[11-12]。本文的圓錐曲線數(shù)控系統(tǒng)在VC++6.0環(huán)境下編寫,其中的譯碼解釋模塊、插補(bǔ)運(yùn)動(dòng)模塊、位置控制模塊等重要模塊均采用了多線程技術(shù)。多線程技術(shù)在本文數(shù)控系統(tǒng)中的運(yùn)用,實(shí)現(xiàn)了各個(gè)任務(wù)之間的合理調(diào)度,使各個(gè)單元模塊能夠迅速切換,并且多個(gè)單元模塊可以同時(shí)運(yùn)行。運(yùn)用多線程技術(shù),提高了PC機(jī)的CPU使用效率,不會(huì)出現(xiàn)因某個(gè)任務(wù)程序長(zhǎng)時(shí)間占用CPU時(shí)間和內(nèi)存導(dǎo)致數(shù)控系統(tǒng)崩潰的情況。
本文數(shù)控系統(tǒng)創(chuàng)建的線程中有用戶界面線程和工作線程兩種類型。工作線程實(shí)現(xiàn)譯碼解釋任務(wù)和插補(bǔ)運(yùn)算任務(wù)等比較耗時(shí)的后臺(tái)任務(wù),用戶界面線程實(shí)現(xiàn)數(shù)控系統(tǒng)中的加工信息顯示任務(wù),用來(lái)顯示當(dāng)前加工的代碼和當(dāng)前加工工件的坐標(biāo)等。
以插補(bǔ)線程為例,由于插補(bǔ)算法是數(shù)控系統(tǒng)中最復(fù)雜的一部分,因此創(chuàng)建工作線程,并對(duì)插補(bǔ)模塊的線程級(jí)別進(jìn)行了合理分配,以保證數(shù)控系統(tǒng)插補(bǔ)功能對(duì)于實(shí)時(shí)性和并行性的要求。線程的優(yōu)先級(jí)分配機(jī)理可參考文獻(xiàn)[12],數(shù)控系統(tǒng)的插補(bǔ)運(yùn)算任務(wù)、譯碼解釋任務(wù)是強(qiáng)實(shí)時(shí)性任務(wù),優(yōu)先級(jí)最高,故將其設(shè)置為31級(jí);I/O監(jiān)控任務(wù)設(shè)定為15級(jí),加工信息顯示任務(wù)設(shè)定為14級(jí)。線程設(shè)置如圖3所示。插補(bǔ)模塊工作線程的創(chuàng)建過(guò)程為:首先在MFC中編寫創(chuàng)建線程代碼,線程的聲明函數(shù)為UINT Interpolation (LPVOID lpParam),然后編寫工作線程代碼pThread = AfxBeginThread(Interpolation ,&Info) ,最后寫入差分插補(bǔ)算法。
圖3 數(shù)控系統(tǒng)各線程優(yōu)先級(jí)別Fig. 3 The priority of each thread of the numerical control system
根據(jù)PCI-1750數(shù)據(jù)采集卡的特點(diǎn),在程序中定義了兩個(gè)unsigned char類型的變量,每個(gè)變量占PC機(jī)上的地址內(nèi)存都是一個(gè)字節(jié),分別作為進(jìn)給軸步進(jìn)電機(jī)驅(qū)動(dòng)器和主軸永磁無(wú)刷直流電機(jī)驅(qū)動(dòng)器的控制信號(hào)。在數(shù)控系統(tǒng)的運(yùn)動(dòng)控制模塊中,實(shí)現(xiàn)各軸步進(jìn)電機(jī)伺服運(yùn)動(dòng)控制是最主要的內(nèi)容。
一個(gè)字節(jié)共八位數(shù)字,用其中的兩位分別作為控制一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器的方向信號(hào)位和脈沖信號(hào)位,在程序中定義1為正向信號(hào),0為反向信號(hào)。每發(fā)送一次11、10信號(hào)為一次正向脈沖信號(hào),每發(fā)送一次01、00信號(hào)為一次反向脈沖信號(hào),收到特定的脈沖信號(hào)后,步進(jìn)電機(jī)在相應(yīng)的方向轉(zhuǎn)動(dòng)一個(gè)步距角,相應(yīng)的進(jìn)給伺服系統(tǒng)完成一個(gè)脈沖當(dāng)量。
由于數(shù)控系統(tǒng)需要發(fā)送3個(gè)進(jìn)給軸的脈沖信號(hào),結(jié)合不同的轉(zhuǎn)向,共8種不同的聯(lián)動(dòng)情況,如果每個(gè)方向的運(yùn)動(dòng)都需要數(shù)控系統(tǒng)做一次判斷,會(huì)使程序極其復(fù)雜。所以本文的數(shù)控系統(tǒng)程序中將每種運(yùn)動(dòng)控制信號(hào)都與101010B進(jìn)行與運(yùn)算,運(yùn)算后每個(gè)軸的方向位不變,脈沖位置為零,這樣就實(shí)現(xiàn)了一個(gè)脈沖信號(hào)的高低電平變化,再運(yùn)用研華I/O輸出函數(shù)AdxDioWriteDoPorts將脈沖信號(hào)發(fā)送出去,實(shí)現(xiàn)相應(yīng)的運(yùn)動(dòng)控制。
本文采用PCI-1750數(shù)據(jù)采集卡發(fā)送信號(hào)來(lái)控制電機(jī)驅(qū)動(dòng)器實(shí)現(xiàn)運(yùn)動(dòng)。PCI-1750數(shù)據(jù)采集卡是一款功能強(qiáng)大的PCI總線半長(zhǎng)卡,能提供16個(gè)隔離數(shù)字量數(shù)字通道,16個(gè)隔離數(shù)字量輸出通道即一個(gè)帶輸入信號(hào)的隔離計(jì)數(shù)器/定時(shí)器。由于帶有2 500 VDC隔離保護(hù)及支持干接點(diǎn),所以PCI-1750數(shù)據(jù)采集卡非常適合需要高電壓保護(hù)的工業(yè)應(yīng)用場(chǎng)所。PCI-1750數(shù)據(jù)采集卡上每個(gè)I/O通道對(duì)應(yīng)微機(jī)I/O端口的一位。這使得對(duì)PCI-1750編程非常方便。該卡還提供了一個(gè)計(jì)數(shù)器或定時(shí)器中斷,以及兩個(gè)數(shù)字量輸入中斷,用戶可以方便地用軟件對(duì)它們進(jìn)行配置。控制系統(tǒng)硬件設(shè)計(jì)如圖4所示。
圖4 控制系統(tǒng)的硬件設(shè)計(jì)Fig.4 Control system hardware design
圓錐曲線微型數(shù)控雕刻機(jī)的驅(qū)動(dòng)箱由3個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器、1個(gè)永磁無(wú)刷直流電機(jī)驅(qū)動(dòng)器及1個(gè)直流電源組成,3個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器分別控制XYZ軸電機(jī),永磁無(wú)刷直流電機(jī)驅(qū)動(dòng)器控制主軸電機(jī)。
根據(jù)PCI-1750數(shù)據(jù)采集卡的端口特點(diǎn),設(shè)計(jì)了用兩組信號(hào)輸出端口分別發(fā)送數(shù)控系統(tǒng)中進(jìn)給軸的控制信號(hào)和主軸的控制信號(hào)。其中一組端口發(fā)送數(shù)控系統(tǒng)中的數(shù)字量脈沖信號(hào)給步進(jìn)電機(jī)驅(qū)動(dòng)器,可以實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的運(yùn)動(dòng)控制;而主軸永磁無(wú)刷直流電機(jī)的運(yùn)動(dòng)控制相對(duì)復(fù)雜一些,需要PCI-1750數(shù)據(jù)采集卡的另一組端口給加在主軸驅(qū)動(dòng)器上的中間繼電器發(fā)送持續(xù)信號(hào),通過(guò)控制永磁無(wú)刷直流電機(jī)驅(qū)動(dòng)器上CH1、CH2、CH3相對(duì)于COM口的通斷,實(shí)現(xiàn)對(duì)永磁無(wú)刷直流電機(jī)的多檔速度控制,速度從0~3 500 r/min,以每500 r/min遞增。圖5為微型數(shù)控雕刻機(jī)控制箱內(nèi)的BL-2203C無(wú)刷直流電機(jī)驅(qū)動(dòng)器的接線圖,R/S為電機(jī)運(yùn)行/停止控制端子,DIR為電機(jī)正反轉(zhuǎn)控制端子。
圖5 無(wú)刷直流電機(jī)驅(qū)動(dòng)器接線圖Fig.5 Wiring diagram of brushless DC motor driver
PCI-1750數(shù)據(jù)采集卡與進(jìn)給軸步進(jìn)電機(jī)驅(qū)動(dòng)器和中間繼電器的接口電路設(shè)計(jì)如圖6所示。進(jìn)給伺服系統(tǒng)的脈沖當(dāng)量為0.002 5 mm,在程序內(nèi)部需要把坐標(biāo)變化量與脈沖當(dāng)量做一定處理后發(fā)送脈沖信號(hào)。3個(gè)可供12 V電壓的中間繼電器的負(fù)載端分別接在PCI-1750數(shù)據(jù)采集卡的3個(gè)接口上,通過(guò)判斷PC端發(fā)送的持續(xù)信號(hào)來(lái)調(diào)節(jié)自身高低電平,實(shí)現(xiàn)電路通斷功能。
圖6 PCI-1750數(shù)據(jù)采集卡接線圖Fig.6 Wiring diagram of PCI-1750 data acquisition card
將要加工的材料(本次實(shí)驗(yàn)所用材料為肥皂)固定在雕刻機(jī)上,打開(kāi)圓錐曲線數(shù)控系統(tǒng)界面,數(shù)控系統(tǒng)中各種圓錐曲線的代碼及加工仿真的過(guò)程如圖7所示。
圖7 數(shù)控系統(tǒng)界面Fig.7 CNC system interface
通過(guò)手動(dòng)功能完成加工前的對(duì)刀工作,對(duì)刀完成后載入G代碼文件,進(jìn)行仿真與加工。加工完成的作品如圖8和圖9所示。
圖8 圓錐曲線加工作品Fig.8 Works by conic curve processing
圖9 線性插補(bǔ)加工作品Fig.9 Works by linear interpolation processing
圖8為數(shù)控系統(tǒng)進(jìn)行各種圓錐曲線的插補(bǔ)完成后的作品,圖8中曲線分別為順時(shí)針橢圓、逆時(shí)針圓、順時(shí)針拋物線、逆時(shí)針雙曲線、順時(shí)針雙曲線、逆時(shí)針拋物線、順時(shí)針圓和逆時(shí)針橢圓。圖9為數(shù)控系統(tǒng)空間線性插補(bǔ)完成后的圖案,實(shí)驗(yàn)表明,數(shù)控系統(tǒng)各項(xiàng)命令的執(zhí)行都快速而精確,作品的加工精度較傳統(tǒng)數(shù)控系統(tǒng)的直線插補(bǔ)擬合有了很大提升。
本文主要以教學(xué)、實(shí)驗(yàn)為主,運(yùn)用多線程技術(shù)設(shè)計(jì)數(shù)控系統(tǒng),與傳統(tǒng)的經(jīng)濟(jì)型數(shù)控系統(tǒng)相比,擴(kuò)展了插補(bǔ)類型,實(shí)現(xiàn)了各種圓錐曲線的直接插補(bǔ)。該數(shù)控系統(tǒng)的研制為后期進(jìn)行圓錐曲線擬合加工奠定了良好的基礎(chǔ)。