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