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