湖北工業(yè)大學(xué),湖北武漢,430068
摘 要:基于VegaPrime與VC++MFC虛擬平臺(tái),建立虛擬數(shù)控機(jī)床的模型,并采用Flex軟件編寫控制界面,通過(guò)JavaScript函數(shù)能直接與VRML程序通信,實(shí)現(xiàn)網(wǎng)頁(yè)控制虛擬數(shù)控機(jī)床加工的功能,使得學(xué)生能通過(guò)網(wǎng)絡(luò)訪問(wèn)虛擬機(jī)床加工實(shí)驗(yàn)室。
關(guān)鍵詞:數(shù)控機(jī)床;虛擬平臺(tái);交互;VRML
引言
為了實(shí)現(xiàn)在通過(guò)網(wǎng)頁(yè)控件控制虛擬場(chǎng)景中的對(duì)象,需要flex程序能夠與VRML程序通信,因此要在程序中調(diào)用虛擬模型的VRML文件。但flex程序不能直接調(diào)用VRML文件,需要通過(guò)HTML文件間接調(diào)用。雖然flex過(guò)程創(chuàng)建后能自動(dòng)生成一個(gè)同名HTML網(wǎng)頁(yè)文件,但是每次運(yùn)行mxml文件都會(huì)把該網(wǎng)頁(yè)文件重置,之前編輯的部分都無(wú)法保存下來(lái),因此不能直接修改這個(gè)文件來(lái)調(diào)用。為了讓學(xué)生能通過(guò)網(wǎng)絡(luò)訪問(wèn)虛擬機(jī)床加工實(shí)驗(yàn)室,需要將VRML虛擬場(chǎng)景嵌入到網(wǎng)頁(yè)中去,本文采用Flex軟件來(lái)編寫控制界面。
1虛擬數(shù)控機(jī)床的構(gòu)建平臺(tái)
機(jī)床模型的構(gòu)建環(huán)境為VegaPrime與VC++MFC虛擬平臺(tái)。該平臺(tái)加載模型的特點(diǎn)是:
(1)能夠直接通過(guò)lynxprime界面直接導(dǎo)入openflight模型,該模型以“節(jié)點(diǎn)”的方式儲(chǔ)存模型元素,每個(gè)“節(jié)點(diǎn)”表示一個(gè)完整的模型元素;以樹(shù)狀結(jié)構(gòu)組織模型元素間的關(guān)系,加載時(shí)按照模型節(jié)點(diǎn)的先后順序依次加載;該平臺(tái)同時(shí)支持基于openflight模型的二進(jìn)制格式文件(VSB)的轉(zhuǎn)換和導(dǎo)入;該格式文件僅能被VP平臺(tái)讀取,提高了模型的安全性。
(2)該平臺(tái)有固定的“世界”坐標(biāo)系(指VP構(gòu)建的三維場(chǎng)景總體坐標(biāo)系)中心,調(diào)入的openflight(VSB)模型同樣具有模型坐標(biāo)系數(shù)據(jù),調(diào)入時(shí)通過(guò)調(diào)整兩坐標(biāo)系相對(duì)位置的方式實(shí)現(xiàn)定位,調(diào)整方法可以采用程序控制或者Lynxprime界面控制兩種。
(3)所調(diào)入模型均可以通過(guò)VC++進(jìn)行位置、姿態(tài)、調(diào)入、調(diào)出等操作。具有完善的類接口和相關(guān)函數(shù)對(duì)模型進(jìn)行驅(qū)動(dòng),無(wú)需另外開(kāi)發(fā)驅(qū)動(dòng)接口程序。
(4)VP默認(rèn)最小位移單位為“米”,此單位不利于保證機(jī)床部件裝配,需要尋找辦法保證機(jī)床部件裝配精度。
(5)Openflight模型數(shù)據(jù)量巨大,需要進(jìn)行有效的模型精簡(jiǎn)。
2虛擬數(shù)控機(jī)床建模語(yǔ)言
本文采用VRML(VirtualRealityModelingLanguage)作為三維仿真建模語(yǔ)言。VRML語(yǔ)言具有強(qiáng)大的交互和控制功能。
交互功能方面,VRML提供了多種傳感器節(jié)點(diǎn)用于感知和反應(yīng)瀏覽者對(duì)虛擬場(chǎng)景中的造型的操作。觸摸傳感器(TouchSensor)用于感知用戶用鼠標(biāo)觸摸、單擊、按下、松開(kāi)被感應(yīng)造型等觸發(fā)的動(dòng)作,觸摸傳感器與其他節(jié)點(diǎn)或腳本配合,可以作為虛擬世界中的一個(gè)控制開(kāi)關(guān);平面?zhèn)鞲衅鳎≒laneSensor)節(jié)點(diǎn)用于感知用戶鼠標(biāo)在XY平面內(nèi)對(duì)虛擬對(duì)象進(jìn)行拖拽的動(dòng)作,平面?zhèn)鞲衅魍ㄟ^(guò)事件路由可以改變物體的坐標(biāo),實(shí)現(xiàn)對(duì)虛擬物體的拖動(dòng);圓柱傳感器(CylinderSensor)節(jié)點(diǎn)用于感知用戶鼠標(biāo)對(duì)虛擬造型的拖拽,并將其處理為繞中心軸的旋轉(zhuǎn)運(yùn)動(dòng),圓柱傳感器通過(guò)事件路由可以實(shí)現(xiàn)對(duì)虛擬物體的旋轉(zhuǎn)控制;球體傳感器(SphereSensor)節(jié)點(diǎn)用于感知用戶用戶鼠標(biāo)的拖拽,并將其處理為繞球體中心點(diǎn)的旋轉(zhuǎn)動(dòng)作。除上述傳感器外,還有能感知用戶在虛擬世界中所處位置之處相應(yīng)反應(yīng)的接近傳感器(ProximitySensor)、可視傳感器(VisibilitySensor)、碰撞傳感器CCollisionSensor)等,由于本文中沒(méi)有用到這些,就不在此做詳細(xì)介紹了。
控制功能方面,VRML程序本身主要用于建立虛擬世界模型,其控制功能不強(qiáng),但為了彌補(bǔ)這一缺陷,VRML提供了與其他高級(jí)程序的內(nèi)部和外部接口。VRML中的腳本程序可以用JavaScript或者VRMLScript編寫,可以實(shí)現(xiàn)較復(fù)雜的控制功能,VRML同時(shí)還提供了與JavaScript和Java語(yǔ)言的外部接口,可以通過(guò)外部程序控制虛擬場(chǎng)景中的對(duì)象,這些都使得其對(duì)虛擬世界的控制力大大增強(qiáng)。
3網(wǎng)頁(yè)控件與VRML程序的交互
網(wǎng)頁(yè)中調(diào)用VRML文件后,JavaScript函數(shù)能直接與VRML程序通信,通過(guò)"document.scene.Engine.Nodes('cd').Fields('translation').x”可以直接調(diào)用或賦值VRML節(jié)點(diǎn)中的域。其中,“scene”是網(wǎng)頁(yè)調(diào)用VRML文件的ID,,“cd”是VRML文件中的節(jié)點(diǎn)名,,“translation.x”是該節(jié)點(diǎn)中的域值。
Flex雖然不能與VRML函數(shù)通信,但Flex的ActionScript提供了與JavaScript通訊的外部訪問(wèn)接口-ExternalInterface類,可以通過(guò)ExternalInterface.call
(functionName,Parameter)函數(shù)來(lái)調(diào)用JavaScript函數(shù)中的函數(shù)并賦參數(shù)值。這樣,就間接地調(diào)用或改寫VRML節(jié)點(diǎn)中的域的值,實(shí)現(xiàn)對(duì)虛擬場(chǎng)景中對(duì)象的控制,其交互原理如圖1所示。
4虛擬數(shù)控機(jī)床網(wǎng)頁(yè)控制功能的實(shí)現(xiàn)方法
4.1數(shù)控面板的實(shí)現(xiàn)
作為虛擬現(xiàn)實(shí)系統(tǒng),數(shù)控面板的真實(shí)程度的高低,將直接影響用戶對(duì)系統(tǒng)整體的體驗(yàn)。系統(tǒng)采用GLstudio軟件制作數(shù)控面板,該軟件具有以下特點(diǎn):第一,可以采用照片紋理,真實(shí)度高;第二,具有按鈕、旋鈕、二項(xiàng)開(kāi)關(guān)、文本框等控件定義,能夠方便地構(gòu)建所需功能;第三,軟件采用V C++編制,面板間各模塊和控件間數(shù)據(jù)傳輸采用V C++標(biāo)準(zhǔn),易于操作和學(xué)習(xí);第四,采用圖形化工作界面,條理邏輯性強(qiáng),適合開(kāi)發(fā)大型邏輯面板;第五,具有與VP軟件的數(shù)據(jù)接口GLstudioForVP,能夠在VP中實(shí)時(shí)接收GLstudio數(shù)據(jù)。
4.2旋轉(zhuǎn)開(kāi)關(guān)
銑床的刀具、車床的工件、磨床的工件和砂輪都需要用控件控制其旋轉(zhuǎn)。以車床為例,用button按鈕點(diǎn)擊后,調(diào)用主軸控制函數(shù),虛擬機(jī)床主軸旋轉(zhuǎn)狀態(tài)取反,調(diào)用外部函數(shù),通過(guò)程序接口改變VRML程序中主軸旋轉(zhuǎn)狀態(tài),同時(shí)按鈕標(biāo)簽由“啟動(dòng)主軸”變?yōu)椤爸鬏S停止”。
4.3工件/刀具移動(dòng)
工件/刀具移動(dòng)模仿數(shù)控機(jī)床上的點(diǎn)控操作,每次點(diǎn)擊按鈕,機(jī)床相應(yīng)部件沿某坐標(biāo)軸的正方向或負(fù)方向移動(dòng)一個(gè)單位。由于這些按鈕的功能類似,因此不必把每個(gè)按鈕click都觸發(fā)一個(gè)單獨(dú)的函數(shù),可以觸發(fā)同一個(gè)函數(shù),通過(guò)參數(shù)的不同來(lái)區(qū)分操作。為了實(shí)現(xiàn)增量控制,需要先讀取當(dāng)前坐標(biāo)值,加或減去一個(gè)單位距離,再將新坐標(biāo)賦給VRML節(jié)點(diǎn)域。
4.4工件尺寸選擇
在車床、磨床中可以通過(guò)網(wǎng)頁(yè)控件選擇回轉(zhuǎn)體工件的半徑、長(zhǎng)度組合,并將虛擬機(jī)床中“裝夾”的工件換成所選尺寸。
尺寸的選擇采用了兩個(gè)組合框控件(ComboBox)來(lái)選擇工件的半徑和長(zhǎng)度。點(diǎn)擊事件指向?qū)?yīng)的半徑/長(zhǎng)度選擇函數(shù),DataProvider指向前面定義的半徑/長(zhǎng)度數(shù)組,在函數(shù)中通過(guò)“choose 1.selectedItem.value0f()”語(yǔ)句識(shí)別所選擇的數(shù)據(jù),并將其通過(guò)“External Interface.call()”傳遞給VRML程序。
前面只說(shuō)了flex程序中的工作,其實(shí)在VRML程序中也要做相應(yīng)改動(dòng)來(lái)與之配合。工件的半徑和長(zhǎng)度設(shè)置源于腳本里面的一個(gè)變量,默認(rèn)值為0。但這個(gè)變量是外部無(wú)法訪問(wèn)的,因此,必須定義一個(gè)入事件來(lái)將變量傳進(jìn)腳本。由于該功能需要改變兩個(gè)變量的值,最好的選擇就是入事件有多個(gè)參數(shù)。
4.5刀具查詢
對(duì)話框類交互功能需要事先設(shè)計(jì)和定義不同功能的對(duì)話框。用戶通過(guò)功能菜單調(diào)出這些對(duì)話框,再根據(jù)其中內(nèi)容獲取相關(guān)信息或進(jìn)行相關(guān)操作。如刀具選擇功能菜單,作用是調(diào)出刀具查詢對(duì)話框,或刀具選擇對(duì)話框,前者允許用戶選擇所需刀具的類型、直徑等信息查詢所需刀具在刀盤的具體位置;后者支持用戶分別查看不同刀位上刀具的信息;以方便編程選擇。
4.6手動(dòng)輸入NC代碼換刀
虛擬面板正向傳遞數(shù)據(jù)給VP是實(shí)現(xiàn)虛擬數(shù)控面板控制的基礎(chǔ),主要傳遞的數(shù)據(jù)類型涵蓋表征手動(dòng)操作指令的bool型開(kāi)關(guān)量、整型變量;表征手動(dòng)輸入NC加工的字符串型變量(記錄NC代碼)、開(kāi)始加工開(kāi)關(guān)量;作為邏輯判斷的機(jī)床開(kāi)關(guān)整型變量、急停變量、模式選擇變量等。
4.7機(jī)床重置
在網(wǎng)頁(yè)中,還需要添加一個(gè)可以把機(jī)床部件重置功能。這里的重置除了工件表面重置外,還要把機(jī)床部件回歸原位。重置函數(shù)主要就是將工件、刀具位置置零(工件和刀具位置改變后相關(guān)導(dǎo)軌位置會(huì)自動(dòng)恢復(fù),不需要專門重置),工件表面的重置,如果是車床磨床這類可以設(shè)置尺寸的工件,直接將所有尺寸都設(shè)置為默認(rèn)尺寸0,而銑床刨床這類機(jī)床的工件稍微麻煩一點(diǎn),需要通過(guò)外部事件觸發(fā)VRML腳本程序中的reset函數(shù),具體做法類似于設(shè)置工件尺寸,需要通過(guò)無(wú)造型節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。
4.8機(jī)床運(yùn)行數(shù)據(jù)的面板顯示
VP逆向傳遞數(shù)據(jù)進(jìn)入虛擬面板目前的主要作用是實(shí)現(xiàn)機(jī)床運(yùn)行坐標(biāo)和外部導(dǎo)入NC代碼的顯示。
5結(jié)語(yǔ)
本文基于VegaPrime與VC++MFC虛擬平臺(tái),建立虛擬數(shù)控機(jī)床的模型,并采用Flex軟件編寫控制界面,通過(guò)JavaScript函數(shù)能直接與VRML程序通信,實(shí)現(xiàn)網(wǎng)頁(yè)控制虛擬數(shù)控面板、旋轉(zhuǎn)開(kāi)關(guān)、工件/刀具移動(dòng)、工件尺寸旋轉(zhuǎn)、刀具查詢、手動(dòng)輸入NC代碼換刀、機(jī)床重置以及機(jī)床運(yùn)行數(shù)據(jù)的面板顯示等功能,使得學(xué)生能通過(guò)網(wǎng)絡(luò)訪問(wèn)虛擬機(jī)床加工實(shí)驗(yàn)室。
參考文獻(xiàn):
[1] J. G. Li, H. Zhao, Y. X. Yao, C. Q. Liu .Off-line optimization on NC machining based on virtual machining. The International Journal of Advanced Manufacturing Technology, 2006, 36 (9):908-917.
[2]彭家祥.虛擬數(shù)控機(jī)床的建模與控制[D].西北工業(yè)大學(xué),2003.
作者簡(jiǎn)介:
袁瑾/女/湖北黃石人/ 本科/工程師/研究方向?yàn)闄C(jī)械自動(dòng)化