罗新文,李贵荣,杨丽祥,吕朋翔(云南农业大学 机电工程学院,云南 昆明 650201)
基于ActionScript的虚拟数控车床开发
罗新文,李贵荣,杨丽祥,吕朋翔
(云南农业大学 机电工程学院,云南 昆明650201)
虚拟设备软件技术在工业培训中应用越来越广泛。随着数控机床应用的扩展,在数控机床应用培训中,虚拟机床软件的应用也得到了长足发展,出现了功能较完善的商业软件。但在数控机床应用培训实践中,使用者希望对虚拟机床的实现方法有深入的了解,而如何实现机床的工作过程是这类商业软件的核心技术。因此本文选择ActionScript3.0脚本语言作为开发工具,对虚拟数控车床的基本功能虚拟实现进行探讨,满足数控车床高级应用培训中,受训者希望了解虚拟机床功能实现原理的需要。
虚拟设备;ActionScript;虚拟数控车床;开发
虚拟设备软件技术就是利用软件模拟实现工业设备的外部功能和内部功能,为设备的开发和使用提供帮助。不同行业有不同的虚拟设备内部功能的软件,在此不再赘述。虚拟设备外部功能的软件主要用于设备应用培训,如数控机床应用培训的虚拟软件,但这类软件属于商业化软件,其实现的功能外部和内部都有,实现的方法和手段均被视为商业机密,不对外公开。在数控机床培训实践中,受训者往往不满足于对虚拟机床操作的培训,他们希望了解虚拟机床的实现方法和过程,充分了解数控机床的工作特点,以便在遇到故障和问题时,能打开解决问题的思路。有鉴于此,本文基于Action-Script3.0脚本语言作为开发工具,对虚拟数控车床进行原型开发。通过较详细的介绍,使受训者可以自行实践。基于ActionScript3.0的零件、加工环境建模及数控加工刀路动态仿真[1]已有一些探索,但用ActionScript3.0实现刀具对工件加工模拟的技术仍不成熟,本文提出了一种可行的解决方案。
为了使受训者能自己动手实现有关功能,虚拟数控车床开发中,制定的几条选择开发工具的原则是:
(1)该开发工具适合于实现系统的基本功能。数控车床的工作模拟可简化为平面动画问题,因此选择Flash作为开发工具可以满足其动作实现的要求。
(2)开发语言要容易入门。ActionScript(简称AS)是由Macromedia(现已被Adobe收购)为其Flash产品开发的,最初是一种简单的脚本语言,现在最新版本ActionScript3.0是一种完全的面向对象的编程语言,功能强大,类库丰富,语法类似JavaScript,多用于Flash互动性、实用性开发,网页制作和RIA(因特网应用程序)开发。与使用C++ 和VB语言相比[2,3],该脚本语言入门较容易,而且适于开发模拟数控车床这种互动性强的虚拟系统。
(3)开发工具开发的系统可以独立运行,对计算机硬件配置要求低。Flash产品的基本目标之一是开发网络动画和动态网页 ,它们的基本要求就是实时传输,响应速度快,因此在开发工具设计时,就按体积小、质量高、成本低廉、操作简便、应用效率高的特点设计[3]。
综上所述,选择Flash产品作为开发平台,配以ActionScript3.0作为编程语言完全能满足开发虚拟数控车床的需要。
图1 虚拟数控车床功能组成Fig.1 Function of virtual NC lathe
在完成了开发平台和编程语言的选择后,需要分析虚拟数控车床要实现的功能。实现数控车床的全部功能不是本文的目标,因此需要选择受训者感兴趣但实现起来又不过于复杂的功能。数控车加工工艺系统包括车床、刀具和工件。虚拟仿真中车床由卡盘来体现;刀具可以按平面图形处理,更换刀具后,刀具形状不变;工件的大小需要可以选择,因此需要处理好工件于卡盘之间的关系。工件在切削过程中形状要发生改变,它的改变随刀具形状和运动轨迹而改变,因此处理工件在切削过程中变化的功能就是本虚拟数控车床的关键功能。如上所述,可以将本虚拟数控车床的功能用图1来表示。
根据图1,卡盘要完成的功能有带动工件旋转、卡盘打开和闭合,在卡盘闭合时不能和工件产生碰撞,因此需要进行碰撞检测。同时在改变工件参数时,也不能超过卡盘的开度,否则会产生碰撞。刀具在碰到卡盘时也需要发出报警;与刀具对应的基本功能是更换刀具、刀具运动轨迹显示、刀具运动的插补功能、刀具运动速度等。与工件对应的功能是尺寸改变、切削模拟、碰撞检测等。下面按照卡盘工件系统、工件刀具系统和刀具轨迹控制的顺序叙述软件实现方法。
卡盘旋转在三维系统中实现较简单,但在二维系统中,虚拟旋转效果通常通过参照物来表示。由于该功能在虚拟系统中不是重点实现的功能。系统中通过符号改变来表示。分为正转、反转和停止三种符号。另外在虚拟系统中,用图2中标注的1作为夹紧按钮,2作为主轴启动按钮。卡盘夹持工件是卡盘的重要功能,卡盘夹持时不能碰到工件,但要和工件接触,由于工件的大小不是固定的,因此卡爪的移动位置是不固定的。另外在卡爪打开的情况下,不能使卡盘和工件旋转,如图2(a)不能直接转换到图2(c),同样在卡盘和工件旋转的情况下,不能打开卡爪,如图2(c)不同直接转换到图2(a)。
图2 卡盘与工件系统Fig.2 Chuck and workpiece system
在该部分功能实现中,活动部分依靠定义影片剪辑来实现,通过影片剪辑的位置、大小属性来实现其最终的位置和形状。交互功能用按钮来实现,通过按钮代码控制卡爪和卡盘的动作。定义变量zhua_enable来识别卡盘是否旋转,定义zhuzhou_enable来识别卡盘是否夹紧,定义zhua_zht代表卡转停止转动,定义zhuzhou_zht表示主轴停止转动。限于篇幅,本文列举卡爪的夹紧和松开代码如下。代码中按钮kzhi1_btn见图2(a)中序号1所示。
刀具的移动一般分两个阶段,一个阶段是空行程,刀具不和工件接触,另一个阶段是刀具切削工件的阶段,此时要解决刀具与工件之间的关系问题。在本系统中,由于选用Flash作为开发平台,不能进行两个图形元素间的布尔运算,因此必须采用该平台具有的功能来实现刀具对工件的加工效果。对于两个刀具移动阶段的转换问题,可以使用碰撞检测函数hitTest实现。定义刀具影片剪辑为tools_mc,定义工件影片剪辑为part_mc,则刀具与工件碰撞的检测代码格式如下:
在Flash开发平台上要实现刀具切削工件的效果,可以用重叠覆盖的办法来实现。具体方法是:首先分别创建影片剪辑 part_mc、tool_mc、toolc_mc分别代表工件、刀具和影子刀具。在当前位置影子刀具和刀具重叠,当刀具移动时,创建新的影子刀具与刀具一起移动,原影子刀具留在原位置覆盖工件,随着刀具的移动,不断留下影子刀具,由于影子刀具与工件重叠,因此得到刀具切削工件的效果。用这种方式实现刀具切削工件,要用到duplicateMovieClip方法,该方法的格式为:
参数为:name:String-已重制的影片剪辑的唯一标识符。
depth:Number-所复制的影片剪辑的唯一深度级别。
initObject:Object[可选]-(Flash Player 6和更高版本支持。)包含用于填充复制影片剪辑的属性的对象。
本系统中的使用格式为:
用此代码实现对影子刀具的复制。在实践中,新的影子刀具影片剪辑创建后会覆盖刀具影片剪辑,造成看不见刀具的问题。为了解决这一问题,系统开发时采用了swapDepths方法,该方法可以使一个影片剪辑移到另一个影片剪辑的前面或后面,因此该方法可以有效解决看不见刀具的问题。此方法的格式为:public swapDepths(target:Object),其中参数为:target:Object,此参数可以采用两种格式之一:①一个数字,指定要将影片剪辑放置到的深度级别;②一个字符串,指定一个影片剪辑实例。本系统中的代码为:
第1行交换新影子刀具影片剪辑与刀具影片剪辑的前后顺序,第2行交换新影子刀具与旧影子刀具的前后顺序,保持刀具影片剪辑在前、后分别跟旧影子刀具影片剪辑和新影子刀具影片剪辑的顺序,有效解决了覆盖问题。需要注意影片剪辑的深度从-16383开始创建,因此新影子刀具创建数量受到一定限制,但对于本系统而言已经足够了。刀具切削工件的实际效果见图3。
图3 虚拟切削效果图Fig.3 Effect of virtual cutting
刀具要切出工件离不开刀具轨迹控制,因此刀轨控制的虚拟是实现虚拟数控车床的核心内容。但要完成完整的刀轨控制,需要从CNC程序开始,经过数控加工程序译码,插补运算等步骤,实现起来较困难。鉴于本系统的开发目标,本系统主要实现刀具的手动操作、直线和圆弧轨迹控制。
首先介绍刀具的手动控制。手动控制包括回机械零点、各轴正反两个方向的控制,同时要考虑刀具移动的速度问题。刀具机械回零操作就是刀具从当前位置移动到机床参考点,需注意当刀具切削完工件后退到起刀点再回零,否则会出现刀具与工件的干涉,刀具回机械零点实现较容易,此处不再赘述。手动操作的另一方面是沿坐标轴移动。沿坐标轴移动又分正向移动和负向移动,正向移动只需控制移动的极限位置即可,负向移动则可能切到工件,因此移动时要检测刀具是否和工件产生重叠,产生重叠就要启动切削过程。判断刀具和工件产生重叠可以使用碰撞检测方法,前已详细介绍。切削过程的实现前节已详细说明,此不赘述。速度控制可通过改变刀具每次移动的步长来改变。刀轨控制可通过控制轨迹的可见性属性实现。
刀具的轨迹控制可使用Line_mc影片剪辑实现。通过影片剪辑的LineTo方法,可以容易地实现刀具的直线轨迹和圆弧轨迹。此种情况相当于只有直线插补的系统,圆弧轨迹通过直线轨迹实现。实现的刀具移动的典型代码如:
本系统采用定义函数的方法定义G代码。现以G03逆时针圆弧插补为例加以说明。定义函数:function g03 (xo:Number,yo:Number,zhongx:Number,zhongy:Number)
所在的点,可根据插补步长计算始点和终点间的插补点,然后绘制刀具轨迹的绘制和控制刀具的移动及切削动作。分别定义了G01、G02和G03等几个函数。在输入几行G代码后,通过逐行匹配的方法选择需要执行的函数,逐行执行,可得数控程序对应的加工轨迹。如输入以下程序:
系统执行上述程序后,加工出的工件形状可参看图3所示。
为满足数控机床受训者希望了解虚拟数控机床的软件实现方法的要求,本文选择较容易入门的Flash作为开发平台,使用ActionScript3.0为编程语言,对数控车床的一些基本功能的实现方法进行了较全面的阐述。其中结合Flash的编程特点,实现刀具对工件的加工模拟方法,可供有类似需要的项目参考。通过实践,受训者在三周左右就可按本文所述方法,开发一套虚拟数控车床原型软件,而且对数控车床的工作特点了解更加深入,解决相关问题的能力有显著提高。
[1]庄颖,徐晓慧.基于ActionScript的数控加工仿真[J].机电产品开发与创新,2012,2.
[2]熊家伟,黄明吉,贾志新.虚拟数控车床仿真系统的研究与开发[J].机械制造与自动化,2006,3.
[3]杨丽娟.基于VB的数控车削虚拟教学系统开发[J].徐州工程学院学报(自然科学版),2009,2.
[4]郭德伟,柯建宏.基于Flash ActionScript的机构运动简图测绘实验设计与开发[J].计算机与数字工程,2012,2.
The Development of Virtual NC Lathe Based on ActionScript 3.0
LUO Xin-Wen,LI Gui-Rong,YANG Li-Xiang,LV Peng-Xiang
(Department of Mechanical and Electrical Engineering,Yunnan Agriculture University,Kunming Yunnan 650201,China)
Virtual appliance software technology in industrial training more widely.With the expansion of the application of CNC machine tools,CNC machine tool applications in training,virtual machine software application has also been considerable development,the emergence of function better business software.But in practice the training of CNC machine tool applications,a user wants to have a better understanding of the virtual machine implementations,and how to work the machine process is the core technology of this type of commercial software.Therefore,this paper choose ActionScript3.0 scripting language as a development tool for the basic functions of the virtual CNC lathe explore virtual realization,CNC lathes and advanced applications to meet the training,trainees want to know the virtual machine functions to achieve the principle of need.
virtual devices;ActionScript;virtual NC Lathe;software development
TP319
Adoi:10.3969/j.issn.1002-6673.2015.05.047
1002-6673(2015)05-127-04
2015-06-06
项目来源:云南省教改项目(云教高〔2012〕95号)
罗新文(1963-),男,云南新平人,实验师。主要从事机械设计制造及其自动化研究;通信作者:李贵荣(1971-),男,云南嵩明人,讲师。主要从事机械设计制造数字化和自动化工程研究。