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