【摘要】針對目前數(shù)控車削加工的實際特點,研究開發(fā)了一種數(shù)控車削程序校驗軟件。該軟件是基于Windows開發(fā)平臺下的Visual C++6.0開發(fā)環(huán)境和OpenGL圖形設(shè)備接口開發(fā)的數(shù)控車床仿真系統(tǒng),軟件實現(xiàn)了G、M、F、T、S等常用數(shù)控代碼的仿真功能,并且實現(xiàn)了常用三維軟件的各種視圖、平移、旋轉(zhuǎn)、放大、縮小、渲染、光照、材質(zhì)等操作。在教學(xué)演示、加工程序校驗中具有一定的實際應(yīng)用價值。
【關(guān)鍵詞】數(shù)控車削;仿真系統(tǒng);Visual C++6.0;OpenGL;數(shù)控代碼
1.前言
多品種小批量的生產(chǎn)已經(jīng)成為現(xiàn)代制造業(yè)的主要的生產(chǎn)模式,數(shù)控車床正是適應(yīng)這種生產(chǎn)模式柔性化的生產(chǎn)工具。數(shù)控加工過程隱含在數(shù)控程序中,數(shù)控程序中的錯誤不容易發(fā)現(xiàn),因此無論是在實際生產(chǎn)中、還是教學(xué)的過程中都造成很大的資源、人力、物力的浪費。從教學(xué)的角度說,可以提高學(xué)生的學(xué)習(xí)興趣,使學(xué)生可以按照自己的想象力來進(jìn)行實際練習(xí),又不必?fù)?dān)心浪費資源;從企業(yè)培訓(xùn)的角度來說,可以減少由于培訓(xùn)過程中實際加工造成的毛胚、刀具的浪費和對機(jī)床的損害,同時可以讓學(xué)員充分了解加工過程;從實際生產(chǎn)的角度來說,可以在產(chǎn)品實際加工之前確定合理的、優(yōu)化的加工方案,并且可以進(jìn)行模擬試切加工,不但提高了生產(chǎn)效率, 產(chǎn)品的質(zhì)量得到了很大保證[1-2]。
國外的數(shù)控車床的水平已經(jīng)很高,然而我國現(xiàn)代制造業(yè)的數(shù)控車的水平還不是很高主要原因之一就是,現(xiàn)在的企業(yè)或者科研單位都不能花費大量的財力和資源來培養(yǎng)數(shù)控車的技術(shù)人員,而實際的操作是培養(yǎng)這些人員的必經(jīng)之路,因此開發(fā)一套數(shù)控車床的加工過程仿真軟件是十分必要的。
2.仿真系統(tǒng)的實現(xiàn)方法[3-4]
仿真過程的實質(zhì)是做出符合實際運動規(guī)律的動畫,因此核心是計算每一幀工件的輪廓,以往的設(shè)計中有使用下面的設(shè)計思路:首先把加工的零件離散成空間的點坐標(biāo),通過每三個點按照一定的方向科學(xué)的生成一個三角面片,只要工件離散的點坐標(biāo)足夠的密,就可以通過OpenGL顯示非常逼真的模型。通過計算每一時刻的刀具軌跡來改變組成工件的空間坐標(biāo)系的點坐標(biāo)。這樣一幀一幀顯示就可以模擬工件的連續(xù)的被加工的過程。
考慮上述方法的計算量較大,我們采用只改變要加工的一塊軸段??梢栽O(shè)計一個顯示鏈表,該鏈表的初值就是毛胚鏈表。我們可以通過刀具軌跡判斷出要加工哪個軸段,然后對該軸段進(jìn)行修改。這樣我們把注意力放在了被加工的軸段上,可以極大的減少計算量。
3.仿真系統(tǒng)的結(jié)構(gòu)[5-7]
(1)設(shè)計毛胚模塊
該模塊主要是要求用戶輸入加工零件的毛胚信息。由于軸類零件的毛胚的形狀比較規(guī)則,本仿真系統(tǒng)只提供了五種類型的軸段類型,即圓柱、左圓臺、右圓臺、左圓錐、右圓錐。這樣就可以描述一般的軸類零件的毛胚,因此首先要求用戶輸入毛胚的段數(shù),然后設(shè)置每段毛胚的幾何信息,如圖3所示。
(3)數(shù)控程序的輸入、輸出模塊
該模塊主要是完成用戶的數(shù)控代碼導(dǎo)入、導(dǎo)出、編輯。用戶可以導(dǎo)入文本文件也可以在視圖中進(jìn)行手動編輯,并且可以把滿足仿真要求的代碼導(dǎo)出到文本文件中。
實現(xiàn)該功能可以利用Visial C++6.0 MFC類庫中提供的視圖類CEditView,可以從該類派生出自己的視圖類用來實現(xiàn)數(shù)控程序的輸入、輸出。主要用到了CEditView:: SerializeRaw(CArchive ar),該函數(shù)通過與文本文件關(guān)聯(lián)的CArchive對象方便的實現(xiàn)文本文件的輸入、輸出。
(b)計算仿真顯示鏈表
用毛胚鏈表初始化仿真顯示鏈表,通過Status類實例化的對象可以知道加工方式,包括直線差補(bǔ)、圓弧差補(bǔ)、快速走刀;刀的位置信息,包括起始點、下一點坐標(biāo)信息。這樣我們可以知道將要加工的是在哪個軸段上,然后根據(jù)Status參數(shù)建立新的軸段并且修改原來的軸段,再將新建的軸段插入到顯示鏈表中,然后將加工哪個軸段信息存入到Status中。
(c)開發(fā)和封裝OpenGL與CView的類庫
主要用到了OpenGL的圖形繪制、變換操作(縮放、旋轉(zhuǎn)、平移)、光照與材質(zhì)、動畫技術(shù)。通過GCamara來封裝與OpenGL有關(guān)的取景操作,如視圖變換、投影變換、視口變換,就像一個照相機(jī)的取景過程,需要改變照相機(jī)的位置、角度、伸縮鏡頭。通過COpenGLDC來封裝OpenGL渲染環(huán)境與窗口的關(guān)聯(lián)、繪圖操作、光源的設(shè)計、顏色的設(shè)置,并且把GCamara定義為COpenGLDC的數(shù)據(jù)成員完成取景操作。通過CView派生出COpenGLView,將COpenGLDC實例化的類對象定義為COpenGLView的數(shù)據(jù)成員,并且在COpenGLView的消息函數(shù)中完成COpenGLDC與COpenGLView的連接。這樣我們在使用COpenGLView時功能就很強(qiáng)大了,它封裝了OpenGL的各種功能。使用時只要從COpenGLView派生出自己的視圖,然后在相應(yīng)的消息函數(shù)中調(diào)用基類的相應(yīng)的消息函數(shù),就可以很方便的使用了。
(d)顯示仿真鏈表
顯示仿者鏈表主要就是利用Visual C++6.0提供的SetTimer()函數(shù)設(shè)置幾個定時器,然后再在相應(yīng)的響應(yīng)函數(shù)OnTimer()中修改下一偵的顯示數(shù)據(jù),這樣就可以看到一個連續(xù)的仿真加工過程了。主要是修改加工軸段的信息,其他的軸段直接按照顯示鏈表繪制就行。
(5)系統(tǒng)幫助模塊
主要用于向使用者提供關(guān)于軟件的使用說明及相關(guān)的技術(shù)說明,主要包括仿真的基本步驟、系統(tǒng)說明、設(shè)計毛胚、選擇刀具、要求的數(shù)控代碼的格式。
4.結(jié)論
本文設(shè)計開發(fā)的數(shù)控車削加工仿真系統(tǒng)具有對形狀較復(fù)雜的軸類零件進(jìn)行高效準(zhǔn)確的程序校驗的功能,并且可以動態(tài)地、直觀地顯示零件的加工過程,實現(xiàn)非實際切削過程中的數(shù)控程序檢驗,有效的解決了復(fù)雜軸類零件的數(shù)控加工程序的校驗問題。本系統(tǒng)簡單實用,根據(jù)仿真系統(tǒng)規(guī)??梢詳U(kuò)展功能,對提高生產(chǎn)效率和減少加工成本有著重要意義。該軟件在教學(xué)實踐中受到廣大師生的一致好評,仿真效果真實。
參考文獻(xiàn)
[1]王太勇,等.數(shù)控車床仿真加工系統(tǒng)開發(fā)[J].西南交通大學(xué)學(xué)報,2003(10).
[2]伍鐵軍,等.數(shù)控仿真的時時真實感圖形的顯示[J].計算機(jī)輔助設(shè)計及圖形學(xué)學(xué)報,2000,4.
[3]和平鴿工作室.OpenGL高級編程與可視化系統(tǒng)開發(fā)篇[M].中國水利水電出版社,2003.
[4]和平鴿工作室.OpenGL程序設(shè)計指南[M].中國水利水電出版社,1999.
[5]Microsoft, Microsoft Developer NetWork, Online Help, 2000.
[6]楊彬.如何使用Visual C++ 6.0[M].機(jī)械工業(yè)出版社,1999.
[7]薛萬鵬,等,譯.C++程序設(shè)計教程[M].機(jī)械工業(yè)出版社,2000.
作者簡介:李夢梅(1971—),吉林長春人,長春市機(jī)械工業(yè)學(xué)校講師。