陜西烽火電子股份有限公司 支朋飛 呂小剛
本文研究應(yīng)用以Vega Prime三維視景仿真平臺(tái)與GL Studio儀表仿真軟件聯(lián)合開發(fā)虛擬數(shù)控機(jī)床仿真系統(tǒng),提供了系統(tǒng)結(jié)構(gòu)框架所涉及的某些關(guān)鍵技術(shù)的解決方法,實(shí)現(xiàn)了GLS儀表模型在VP三維場景中的移植顯示和數(shù)據(jù)的相互通信,構(gòu)造了逼真的虛擬加工操作環(huán)境。
數(shù)控仿真軟件是運(yùn)用虛擬現(xiàn)實(shí)技術(shù)通過二維或三維圖形界面來模擬真實(shí)的數(shù)控加工環(huán)境,要求具有逼真的人機(jī)交互界面,避免人為誤操作而達(dá)到良好的教學(xué)目的。當(dāng)前主流的數(shù)控仿真加工系統(tǒng)均是在PC終端上實(shí)現(xiàn)的,部分是集成在CAM(計(jì)算機(jī)輔助制造)軟件中,比如既有德國SYMPlus CNC、日本FREDAM等國際主流系統(tǒng),也有上海宇龍、南京斯沃等國產(chǎn)系統(tǒng)。
本研究的重點(diǎn)在于結(jié)合Vega Prime(簡稱VP)與GL Studio各自的優(yōu)勢,實(shí)現(xiàn)二者的混合編程,使該系統(tǒng)具備良好的人機(jī)交互界面,將虛擬數(shù)控機(jī)床處于逼真的三維場景中,操作人員可借助一定的人機(jī)交互手段(如數(shù)據(jù)手套、3D眼鏡),使訓(xùn)練者置身于虛擬的三維環(huán)境并沉浸其中,通過操作虛擬機(jī)床面板來模擬控制機(jī)床動(dòng)作,獲得與真實(shí)世界相同的體驗(yàn)感。
該系統(tǒng)在Windows XP Professional操作系統(tǒng)下,所用軟件有:建模工具軟件SolidWorks,模型轉(zhuǎn)化軟件Deep Exploration,模型建立軟件Creator 3.2,儀表仿真軟件GL Studio,仿真平臺(tái)軟件Vega Prime,編譯環(huán)境為VS2008,使用上述工具便可進(jìn)行模型的建立和驅(qū)動(dòng)的開發(fā)。本數(shù)控仿真系統(tǒng)的實(shí)現(xiàn)主要分為兩個(gè)部分:場景建模與場景驅(qū)動(dòng),如圖1所示。
圖1 技術(shù)路線開發(fā)流程
場景建模是運(yùn)用數(shù)學(xué)方法將仿真對象的三維數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)內(nèi),首先使用三維建模軟件對數(shù)控加工中心的裝配體和零部件建立三維實(shí)體模型*.sldprt/*.sldasm,然后通過Deep Exploration軟件將*.sldprt/*sldasm的模型格式轉(zhuǎn)換成*.3ds,最后把*.3ds導(dǎo)入到Creator 3.2中,將*.3ds模型格式轉(zhuǎn)化為Vega Prime可識(shí)別的*.flt文件并對其進(jìn)行顏色渲染。
場景驅(qū)動(dòng)是將仿真對象的實(shí)時(shí)狀態(tài)數(shù)據(jù)以圖像的方式輸出,通過使用API函數(shù)來實(shí)現(xiàn)對仿真對象的驅(qū)動(dòng)控制,實(shí)現(xiàn)對虛擬儀表、虛擬部件等三維模型的實(shí)時(shí)交互操作,將VP嵌入到開發(fā)平臺(tái)VS2008中完成場景配置。
數(shù)控加工仿真面板的主要操作過程是在GL Studio中設(shè)計(jì)完成的,包括面板儀表界面的開發(fā)、各種儀表間的邏輯關(guān)系控制及信息傳遞、儀表與外部Vega Prime的數(shù)據(jù)交互,開發(fā)面板執(zhí)行文件的過程是一個(gè)交互循環(huán)的過程。
(1)操作面板的制作:數(shù)控機(jī)床操作面板是操作人員與數(shù)控機(jī)床系統(tǒng)之間進(jìn)行交互的橋梁,通過面板可以實(shí)現(xiàn)對數(shù)控系統(tǒng)的查詢、編程、調(diào)試、修改等輸入或輸出操作。
(2)儀表間的信息交互:仿真對象的運(yùn)行是通過編寫的代碼實(shí)現(xiàn)驅(qū)動(dòng),比如:NC鍵盤信息的顯示、各儀表間的邏輯控制、旋鈕檔位的數(shù)據(jù)傳遞等。
(3)面板動(dòng)態(tài)鏈接庫的生成:將GL Studio所形成的虛擬仿真界面進(jìn)行保存并自動(dòng)生成2個(gè)源文件和1個(gè)頭文件,其中源文件win_main.cpp是程序的啟動(dòng)入口文件, C++容器類涵蓋了儀表對象的初始化代碼、顯示代碼、驅(qū)動(dòng)代碼及主循環(huán)代碼。然后經(jīng)過VS2008編譯環(huán)境進(jìn)行編譯,在編譯未出現(xiàn)錯(cuò)誤的情況下,在start的下拉菜單中選擇LiveComponent Debug后最終點(diǎn)擊運(yùn)行,便可生成*.gls模型的動(dòng)態(tài)鏈接庫文件*.dll。
在Vega Prime與GL Studio的數(shù)據(jù)交互方面,將GL Studio開發(fā)的虛擬儀表組件在Vega Prime中進(jìn)行動(dòng)態(tài)調(diào)用,在安裝了與GL Studio配套的插件vp GLStudioPlugin后,可將GL Studio開發(fā)的虛擬儀表動(dòng)態(tài)鏈接庫文件(DLL)嵌入到Vega Prime編輯器中,從而實(shí)現(xiàn)虛擬儀表與三維視景仿真的功能相結(jié)合,虛擬三維顯示效果如圖2所示。
圖2 數(shù)控機(jī)床仿真系統(tǒng)三維場景效果
在數(shù)控機(jī)床加工仿真過程中,對機(jī)床面板儀表進(jìn)行操作時(shí),需要將一些按鍵信息和當(dāng)前儀表狀態(tài)的數(shù)據(jù)傳入VP中進(jìn)行處理。如在控制刀具的運(yùn)動(dòng)過程中,需要將NC鍵盤輸入的刀具編號(hào)以及運(yùn)動(dòng)數(shù)據(jù)等信息通知VP程序中的主控單元,來完成刀具運(yùn)動(dòng)的前期準(zhǔn)備。
在開發(fā)過程中,采用在組件生成的DLL中導(dǎo)出全局變量的方法來實(shí)現(xiàn)機(jī)床操作面板GLS組件與VP進(jìn)行數(shù)據(jù)共享,刀具移動(dòng)軌跡如圖5所示,詳細(xì)開發(fā)步驟如下:
(1)在GLS組件的頭文件中聲明:__declspec(dllexport)int GlobalData,使其他組件可以訪問全局變量GlobalData。比如:定義按鍵1的變量為int run1,然后在file的頭文件中聲明__declspec(dllexport)int run1,從而便可以通過變量run1來實(shí)現(xiàn)GLS組件向Vega Prime進(jìn)行數(shù)據(jù)傳遞。
(2)生成*.dll和*.lib文件,并在需要使用全局變量GlobalData的組件程序中完成配置。配置過程如下:在Project屬性Linker中選擇general,然后在Additional Library Directories中添加*.lib的路徑;在input中的Additional Dependencies中添加生成的*.lib。
(3)在VP代碼中聲明:extern__declspec(dllimport)int GlobalData;并將生成的*.dll文件拷貝至該組件文件夾下。這樣GlobalData數(shù)據(jù)就以全局變量的形式導(dǎo)入到了VP中。
通過虛擬數(shù)控機(jī)床仿真系統(tǒng)的開發(fā)實(shí)踐,使用Vega Prime與GL Studio相結(jié)合的方法聯(lián)合開發(fā)數(shù)控仿真系統(tǒng),證明了無論是在三維場景的仿真還是在虛擬儀表的仿真方面都能收到很好的效果,該技術(shù)可廣泛應(yīng)用于三維可視化仿真領(lǐng)域。