湖北工业大学,湖北武汉,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.
作者简介:
袁瑾/女/湖北黄石人/ 本科/工程师/研究方向为机械自动化