1 引言
隨著制造業(yè)發(fā)展,對數(shù)控機床的柔性和通用性提出了更高的要求,同時伴隨著計算機技術(shù)的迅速發(fā)展,開放式數(shù)控系統(tǒng)應(yīng)運而生,并已經(jīng)成為當(dāng)前研究的熱點。此類系統(tǒng)分為“PC嵌入NC”結(jié)構(gòu)、“PC嵌入NC”結(jié)構(gòu)、全軟件型結(jié)構(gòu)。第一種系統(tǒng)硬件結(jié)構(gòu)較復(fù)雜,系統(tǒng)價格十分昂貴。第二種,采用運動控制卡+PC機構(gòu)成。最后一種,所有的數(shù)控功能全部都由計算機軟件來實現(xiàn)。
本文采用NC嵌入PC的開放式數(shù)控結(jié)構(gòu)形式,由運動控制器完成數(shù)控實時響應(yīng)和控制,PC完成數(shù)控人機界面功能。在人機界面的處理中采用了多線程技術(shù)。
本系統(tǒng)所采用的數(shù)控系統(tǒng)結(jié)構(gòu)圖如圖1所示。用研華公司的運動控制卡+PC機,以JZ位的Whdows98/NT 4.0/Win-dows2000操作系統(tǒng)為開發(fā)平臺;并采用支持可視化編程的集成環(huán)境Visual C++6.0作為算法語言和界而設(shè)計上具,利用封裝性,繼承性和可重用性作為特征的而向?qū)ο蟮木幊碳夹g(shù)。
圖1 數(shù)控系統(tǒng)結(jié)構(gòu)示意圖
2 數(shù)控加土過程的控制
機床的數(shù)控系統(tǒng)是以程序指令為依據(jù)來控制機床的運動。首先就要對程序指令進行檢查,并進行預(yù)處理轉(zhuǎn)化為刀具的運行軌跡。
2.1 數(shù)據(jù)結(jié)構(gòu)
由于數(shù)控加上程序是由程序段組成,每一個程序段又由各個指令構(gòu)成,所以用一個鏈表結(jié)構(gòu)來存儲、管理這些代碼比較有效。
1)用DotList表示點數(shù)據(jù)。首先用從CObject派生的CDot類記錄程序指令信息。采用鏈表結(jié)構(gòu)記錄程序加上點的數(shù)據(jù),選用MFC的數(shù)據(jù)結(jié)構(gòu)CTypedPtrList模板類定義一個點的鏈表類DotList}鏈表結(jié)構(gòu)易于遍歷和插入操作,可以提高效率。
2)用SubFuncList棧類進行子程序調(diào)用。在數(shù)控加上時,用子程序編寫經(jīng)常重復(fù)進行的加上,比如某一確定的輪廓形狀。子程序位于卞程序中適當(dāng)?shù)牡胤剑谛枰獣r進行調(diào)用。棧的特點就是后進先出,正好符合子程序,所以采用鏈式棧SubFuncList來表示。棧的每個元素('SubFuncInfo由四部分構(gòu)成:
CString szSubFuncName//子程序名
int iSubFuncAddress;//子程序的起始位置
int iSubFuncRetAddress;//子程序返回卞程序的位置
int iLoopNum;//子程序循環(huán)次數(shù)
考慮到Windows操作系統(tǒng)并不是一個嚴格意義上的實時操作系統(tǒng),為了提高實時響應(yīng)速度,本系統(tǒng)首先對程序指令進行翻譯,全部轉(zhuǎn)換成最后加上的點的信息,既先對程序指令掃描一邊記錄下信息,再進行掃描一邊,把子程序調(diào)用插入到第一次掃描的結(jié)果中而得到最后的掃描結(jié)果。圖2所示是第1次掃描的流程圖。
圖2 程序指令讀入流程圖
2.2 運動控制
在機床手動控制運行中分為JOG和MDA方式。JOG方式中可以點動坐標(biāo)軸運行,在 MDA方式中可以分別輸入零件程序段加以執(zhí)行。在進行加上前要進行對刀,一般在對刀的時候采用J (X=方式。線程是計算機應(yīng)用程序?qū)嵗械囊粭l執(zhí)行路徑,外加一組操作系統(tǒng)分配的資源(堆棧、寄存器狀態(tài)等)。一個應(yīng)用程序?qū)嵗梢酝瑫r啟動多個線程,從用戶的角度看一,程序中的線程是廈時運行的。操作系統(tǒng)通過線程間反復(fù)地快速切換控制來達到并行計算這一效果。數(shù)控系統(tǒng)中存在加上程序和控制程序,采用多線程技術(shù)將每個任務(wù)放在不同的線程中,即可達到對該系統(tǒng)的控制日的。事件是一種Window、為線程同步提供的核心對象,本系統(tǒng)采用事件使線程同步。在點動運動中,用戶界而作為主線程,點動運動作為輔助線程。點動運動控制中有如下三個事件:
CEvent g-JogStartC FALSE TRUE);//點動運動啟動事件
CEvent g-JogPause( FALSE TRUE);//點動運動折停事件
CEvent g-JogExit} FALSE } TRUE ) ;//點動運動退出事件
在數(shù)控加上控制中,將用戶控制界而作為一個線程,叫做控制線程,作為本系統(tǒng)的卞線程,數(shù)控加上程序作為另一個線程,叫做加上線程,作為輔助線程。加上過程中有如下三個全局事件對象:
CEvent g-ControlStartCFALSE,TRUE);//加上啟動事件
CEvent g-ControlPause(FALSE,TRUE);//加上折停事件
CEvent g- ControlExi (FALSE,TRUE) ;//加上停止事件
圖3為我們完成的用于西門子802系列數(shù)控教學(xué)的PC軟件,其中按鈕①、②、③分別為復(fù)位、中斷、啟動,分別對應(yīng)加上控制中的三個事件的。此系統(tǒng)已經(jīng)運用于實際中。
圖3 數(shù)控系統(tǒng)的界面控制
3 結(jié)論
基于上業(yè)標(biāo)準的Pc'機進行數(shù)控系統(tǒng)開發(fā)已經(jīng)成為當(dāng)前數(shù)控技術(shù)發(fā)展的一個重要方向,特別是在Window、系列平臺上進行數(shù)控系統(tǒng)的人機界而設(shè)計具有界而友好,可以多線程操作等優(yōu)點。
對數(shù)控系統(tǒng)來說,采用NC+ PC機數(shù)控系統(tǒng)能發(fā)揮Windows操作系統(tǒng)的優(yōu)勢,并能最大限度的滿足客戶的各種特殊功能要求。
(審核編輯: 智匯胡妮)
分享