郭德伟
(1.红河学院工学院,云南蒙自 661100;2.昆明理工大学机电工程学院,昆明 650093)
平面四杆机构运动线的Flash Action Script动态模拟
郭德伟1,2
(1.红河学院工学院,云南蒙自 661100;2.昆明理工大学机电工程学院,昆明 650093)
采用Flash Action script技术对平面四杆机构的运动线做出了动态模拟,并对部分模拟线图进行分析,指出了该模拟方法的优越性.
Action Script;四杆机构运动线;机械教学;动态模拟
Actionscript是Flash软件中的脚本语言,凭借其生成的文件体积小、质量高、易于网络传播等特点,正受到人们更多的关注,而基于Action Script技术的虚拟仿真实验也逐步应用到了各仿真实验[1]及工程教学中[2,3].平面四杆机构是工程中广泛使用的典型运动机构,而对该机构的运动线作出分析研究并进行模拟,对更好地理解和设计平面四杆机构有着重要的意义.本文在利用Flash Actionscript技术建立的平面四杆机构运动模型基础上[4],进一步研究了该机构的运动情况,并对不同运动形式机构的运动线作出动态模拟,即用点的形式描述出了平面四杆机构的位移、速度和加速度随原动件位移的变化关系,为四杆机构原理的验证及设计提供了重要的参考.
由于Flash中坐标的方向,平面四杆机构简图如图1所示,点A、B、C、D分别为机构节点,l1、l2、l3、l4分别为各杆长度,由用户设定,AD设为水平机架,原动件AB以给定的角速度匀速运动.由于本研究建立在运动模型已建立的基础上,运动过程中四个节点的坐标已经可以确定.根据平面四杆机构的运动规律[5],各杆运动关系调整如下:
连杆BC加速度
连架杆CD加速度
图1 平面四杆机构简图
根据以上关系,在Flash软件舞台中建立一个360*360像素的区域,画出纵横栅格,让一个周期的运动线尽量将主要部分显示在该区域中.在该区域的左下角建立三个不同颜色的逐渐消失的轨迹点影片剪辑,分别命名为红色的“ydx1”、绿色的“ydx2”和蓝色的“ydx3”;建立17个动态文本框来标识纵横坐标参数,变量名分别为“hzb1”~“hzb5”和“zzb1”~“zzb9”,及3个图例显示文本“tl”,各文本默认值如图2所示;建立3个按钮分别用来控制“位置线图”、“速度线图”和“加速度线图”的切换.使用一帧动画,主程序采用“set Interval”命令,每隔10毫秒让增加 个角度(其中为输入的转速,度/秒),根据不同杆件长度判定情况,计算B、C、D各点的位置,再利用line画线命令将各点用不同颜色的线连接起来形成各杆件.每10毫秒计算一次并重新划线,实现机构的连续运动,同样每10毫秒计算一次各杆件的位移、速度和加速度,用逐渐消失的轨迹点的坐标变化形成动态的机构运动线图.
图2 运动线显示区域情况
主要Action Script程序如下:
duration = 10;
ydzb = 0;//横坐标为默认值0~360
ydxt1 = 1; //默认位置线图显示
ydxt2 = 0;
ydxt3 = 0;
function xh():Void {
…//机构运动程序略
theta1 = -i;//负号将旋转方向改成传统逆时针方向
if (theta1<0) {
}
if (xc>=xb && yc<=yb)
{theta2 = Math.atan((yb-yc)/(xc-xb))*180/Math.PI;}if (xc {theta2 = 180-Math.atan((yb-yc)/(xb-xc))*180/Math.PI;} if (xc {theta2 = 180+Math.atan((yc-yb)/(xb-xc))*180/Math.PI;} if (xc>=xb && yc>yb){theta2 = 360-Math.atan((yc-yb)/(xc-xb))*180/Math.PI;} if (xc>=xd && yc<=yd) {theta3 = Math.atan((yd-yc)/(xc-xd))*180/Math.PI;} if (xc {theta3 = 180-Math.atan((yd-yc)/(xd-xc))*180/Math.PI;} if (xc {theta3 = 180+Math.atan((yc-yd)/(xd-xc))*180/Math.PI;} if (xc>=xd && yc>yd) {theta3 = 360-Math.atan((yc-yd)/(xc-xd))*180/Math.PI;} if (ydzb == 180) { hzb1 = -180; hzb2 = -90; hzb3 = 0; hzb4 = 90; hzb5 = 180; } else { hzb1 = 0; hzb2 = 90; hzb3 = 180; hzb4 = 270; hzb5 = 360; }// 当机构为双摇杆机构的一种特殊情况(l1+l4>l2+l3)时,横坐标范围-180~180 omega1 = w*Math.PI/180; omega2 = -omega1*l1*Math.sin((theta1-theta3)*Math.PI/180)/(l2*Math.sin((theta2-theta3)*Math.PI/180)); //速度 omega3 = omega1*l1*Math.sin((theta1-theta2)*Math.PI/180)/(l3*Math.sin((theta3-theta2)*Math.PI/180));//速度 alpha2 = (-Math .pow(omega1, 2)*l1*Math.cos((theta1-theta3)*Math.PI/180)-Math.pow(omega2,2)*l2*Math.cos((theta2-theta3)*Math.PI/180)+Math.pow(omega3, 2)*l3)/(l2*Math.sin((theta2-theta3)*Math.PI/180)); alpha3 = (Math.pow(omega1, 2)*l1*Math.cos((theta1-theta2)*Math.PI/180)+Math.pow(omega2,2)*l2-Math.pow(omega3, 2)*l3*Math.cos((theta3-theta2)*Math.PI/180))/(l3*Math.sin((theta3- //位置线图按钮执行 if (ydxt1 == 1) { zzb1 = 0; zzb2 = 60; zzb3 = 120; zzb4 = 180; zzb5 = 240; zzb6 = 300; zzb7 = 360; zzb8 = "(deg)"; zzb9 = " "; tl="θ"; duplicateMovieClip("ydx1", "qx111"+nn, 300+nn); setProperty("qx111"+nn, _x, wzx._x+theta11+ydzb); setProperty("qx111"+nn, _y, wzx._y); duplicateMovieClip("ydx2", "qx222"+nn, 1000+nn); set Property("qx222"+nn, _x, wzx._x+theta11+ydzb); set Property("qx222"+nn, _y, wzx._y-theta22); duplicate Movie Clip("ydx3", "qx333"+nn, 2000+nn); set Property("qx333"+nn, _x, wzx._x+theta11+ydzb); set Property("qx333"+nn, _y, wzx._y-theta33); } //速度线图按钮执行 if (ydxt2 == 1) { sdbl = 60; //放大倍数增强显示 zzb1 = -180/sdbl; zzb2 = -120/sdbl; zzb3 = -60.0/sdbl; zzb4 = 0; zzb5 = 60.0/sdbl; zzb6 = 120.0/sdbl; zzb7 = 180.0/sdbl; zzb8 = "(rad/s)"; zzb9 = " "; tl="ω"; duplicate Movie Clip("ydx1", "qx111"+nn, 300+nn); set Property("qx111"+nn, _x, wzx._x+theta11+ydzb); set Property("qx111"+nn, _y, wzx._y-omega1*sdbl-180); duplicate Movie Clip("ydx2", "qx222"+nn, 1000+nn); set Property("qx222"+nn, _x, wzx._x+theta11+ydzb); set Property("qx222"+nn, _y, wzx._y-omega2*sdbl-180); duplicate Movie Clip("ydx3", "qx333"+nn, 2000+nn); set Property("qx333"+nn, _x, wzx._x+theta11+ydzb); set Property("qx333"+nn, _y, wzx._y-omega3*sdbl-180); } //加速度线图按钮执行 if (ydxt3 == 1) { zzb1 = "-18"; zzb2 = "-12"; zzb3 = "-6"; zzb4 = 0; zzb5 = "6"; zzb6 = "12"; zzb7 = "18"; zzb8 = "(rad/s )"; zzb9 = "2"; tl="α"; duplicateMovieClip("ydx1", "qx111"+nn, 300+nn); set Property("qx111"+nn, _x, wzx._x+theta11); set Property("qx111"+nn, _y, wzx._y-180); duplicate Movie Clip("ydx2", "qx222"+nn, 1000+nn); set Property("qx222"+nn, _x, wzx._x+theta11+ydzb); set Property("qx222"+nn, _y, wzx._y-jsd2*10-180); //*10 放大倍数增强显示 duplicate Movie Clip("ydx3", "qx333"+nn, 2000+nn); set Property("qx333"+nn, _x, wzx._x+theta11+ydzb); set Property("qx333"+nn, _y, wzx._y-jsd3*10-180); } update After Event(); … nn = nn+1; if (nn>=500) { nn = 1; } i = i-v/(1000/duration); if (i<=-360) {i = 0;} } setInterval(this, "xh", duration); “位置线图”按钮上程序 on (release) { ydxt1=1; ydxt2=0; ydxt3=0; } “速度线图”按钮上程序 on (release) { ydxt1=0; ydxt2=1; ydxt3=0; } “加速度线图”按钮上程序 on (release) { ydxt1=0; ydxt2=0; ydxt3=1; } 图3 不同条件下平面四杆机构运动线图 对四杆机构运动线的分析是更好地理解和设计四杆机构的一个重要过程,而采用Flash Actionscript技术模拟得到的动态机构运动线,不但将机构的位移、速度和加速度随原动件位移的变化关系较为真实地反映了出来,而且界面美观,色彩分明,使用操作简便,鉴于Flash技术,生成文件体积小质量高,其应用价值在科研、教学等方面具有较好的潜力. [1] 刘均,冯志林.计算机组成原理仿真实验系统设计与实现[J].浙江工业大学学报,2009,37(5):486-488. [2] Zhenguo Gao,Chunsheng Wang.Constructing virtual hydraulic circuits using Flash[J].Computer Applications in Engineering Education, 2010,18(2): 356-374. [3] 郭德伟,肖天庆.基于Flash Action Script的机械类教学模拟课件研制[J].现代教育技术, 2009,19(8): 93-97. [4] Dewei Guo,Tianqing Xiao.Kinematic Simulation Design of Planar Four-bar Linkage Based on Flash Action Script [A].In: Xueli Zhou.2010 Third International Conference on Education Technology and Training [C].IEEE,Inc.2010.301-304. [5] 孙桓,陈作模.机械原理(第六版)[M].北京:高等教育出版社,2001:61-64. Dynamic Simulation of Planar Four-bar Linkage Mot ion Line Based on Flash Act ion Script GUO De-wei1,2 Dynamic simulation of planar four-bar linkage motion line is realized by using Flash Action script, and some of the simulation charts are analyzed, on the basis of that, the advantages of the simulation method are addressed Action Script; four-bar linkage mot ion line; mechanical teaching; dynamic simulation TP39 A 1008-9128(2012)02-0044-05 2012-01-02 云南省教育厅科研项目(2010C076) 郭德伟(1978-),男,云南通海人,讲师,在读硕士.研究方向:机械数字化设计与制造. [责任编辑 自正发]3 结果分析
4 小结
(1.Engineering College, Honghe University, Mengzi 661100, China;2.Faculty of Mechanical and Electrical Engineering,Kunming University of Science and Technology, Kunming 650093, China)