您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于Flash虚拟实验中仪表可视化的一种方法
基于Flash虚拟实验中仪表可视化的一种方法冯绍勇(景德镇高专物理系,江西景德镇333000)摘要:介绍了基于Flash的在可视化上具有逼真效果的虚拟仪表的开发方法,对一般学科教师在开发自己的仿真实验软件时有一定的借鉴作用。关键词:虚拟实验;虚拟仪表;数值仿真;Flsah中图分类号:TP391.9文献标识码:AOnekindofmodelofelectricitysimulationexperimentandhisalgorithmFengShaoyong(JindezhenComprehensiveCollege,JindezhenJiangxi333000)Abstract:Beshortofwellandbefitfortheinventedsimulationexperimentsoftwarethatexperimentonstudent'spreparedusefulnessinaccordancewithpresenttimeintheelectricitycontentcourseteaching.theauthordevelopedsimulationexperimentsoftwarethatcanachievecertainlyinventedeffectandthenatureimmersing.dotheintroductiontodevelopingtrainofthoughtandalgorithm,Themodelofthissimulationexperimentsoftwareandhisdevelopmentmethodarethereferenceeffecttogeneralteacherwhendevelopingsimulationexperimentsoftwareofoneself.Keywords:Virtualexperiment;virtualinstrument;numericalsimulation一、引言在理工科教学中,实验占据着比较重要的地位,随着现代化教学方式的普及和远程教育的发展,虚拟实验在集体教学与个体自学中用得越来越广泛[1]。大型虚拟实验室系统往往基于专有硬件开发,价格高昂,且实验资源的开发需要专门的技术和创作工具,很难在基础教育和中等教育领域推广。而目前广为流行的Flash技术却为我们提供了一个成本低、易学易用、具有推广价值的虚拟实验开发平台[2],事实上,自FlashMX2004以后,Flash已显示了强大的编程功能,完全能够轻松开发出交互性极强的虚拟仿真软件[3]。基于用Flash开发虚拟仿真实验软件门槛低的特性,所以目前很多理工科教师都在用Flash开发自己的仿真实验软件[4-9]。为了给学生好的沉浸效果,仿真实验教学软件应该尽可能做到给学生一个接近真实的虚拟环境,器件和仪器设备不但在理论建模上做到仿真而且在空间形象上、光感和声效上也应做到仿真[1]。然而目前很多基于Flash的仿真实验软件并没有很好地做到这些,在实验设备的可视化上不够理想,比如指针式测量仪表,指针偏转时是跳跃的,从一个值直接跳到另一个,这与实际情况很不相符,有的做得好些的,指针能连续偏转,但是运动方式仍然与实际情况相差较大,让使用者觉得不够逼真。这都说明软件开发者对仪表指针运动规律的研究不够深入,作者开发的仿真实验软件[10],在可视化上有着鲜明的特色,如图3所示,作者对仪表指针的运动规律做了深入的研究,并建立了指针运动的数学模型,致使仿真实验中的仪表指针运动具有逼真的效果,给学生带来一定的视觉冲击,让他们能对仿真实验产生浓厚的兴趣,并沉浸在实验当中。下面就仪表的基于Flash开发软件的可视化方法做深入细致的介绍,以便对开发此类仿真实验的同仁有所启发和借鉴。二、仪表可视化的实现算法1、指针式仪表的数学模型当指针式仪表通入电流时,指针在电磁力的作用下将发生定轴转动,必须搞清楚指针转动时的运动规律,才能在虚拟仿真实验中使虚拟仪表的指针按照这种规律运动,从而使仪表看起来有逼真的效果。下面以图1所示磁电式仪表为例,来建立指针运动的数学模型。图1磁电式仪表的结构(1)仪表结构它的固定部分包括马蹄形永久磁铁、极掌NS及圆柱形铁心等。极掌与圆柱形铁心之间的空气隙的长度是均匀的,其中产生均匀的辐射方向的磁场,如图2所示。仪表的可动部分包括铝框和线圈,转子轴,螺旋弹簧及指针等。图1中所示的线圈是绕在门框形铝框上的,铝框又套在圆柱形铁心上,线圈的两个端头分别与轴上的两个螺旋弹簧的一端相接,弹簧的另一端固定,以便将电流引入线圈,指针也固定在轴上。(2)受力分析仪表在工作过程中,可动部分将受到驱动力矩M、螺旋弹簧的阻力矩CM和阻尼机构产生的阻尼力矩ZM。如图1所示,电流I通过一个螺旋弹簧流入线圈,再从另一个螺旋弹簧流出,此时通电的线圈在磁场中将受到力的作用,如图2所示,此作用力对仪表可动部分产生一个力矩,使它们发生偏转,此力矩即为驱动力矩M,在此例中,驱动力矩与电流成正比,即M=k1I;螺旋弹簧由于轴的旋转被扭紧而给可动部分以阻力矩CM,此阻力矩与指针的偏转角成正比,即2CMk,式中为指针偏转角,当指针及其它可动部分达到平衡位置静止下来时,有12CMkIMkA,式中A为指针最终偏转角;可动部分在摆动过程当中还受到与运动方向相反的阻尼力的作用,这里主要是绕线框—铝框在磁场当中运动而产生感生电流,流通着感生电流的铝框在磁场当中受到阻尼力的作用。此阻尼力矩ZM与运动方向相反,与旋转角速度成正比,即3ZdMkdt,ddt为指针偏转角的导数即角速度。(3)数学模型仪表可动部分在驱动力矩M、两个阻力矩CM、ZM的共同作用下做定轴转动,根据定轴转动定理,有M-2k-3dkdt=22dJdt,式中J为仪表可动部分的转动惯量,22ddt为角加速度。因为驱动力矩2MkA,则转动定理方程可写为2kA-2k-3dkdt=22dJdt,整理得:23222kJddAkdtkdt,此为指针偏转角的二阶常系数非齐次线性方程,解此微分方程即可得指针偏转角随时间变化的关系,也即求解出了指针的运动规律。此非齐次线性方程的一个特解为:A。齐次线性方程232220kJddkdtkdt的特征方程为:232210kJppkk,解此特征方程,得解为23321,222kkkpJJJ。当2322kkJJ时,1,2p为一对共轭复根,设32kJ,2322kkJJ,则1,2pj,那么齐次线性方程的通解为:sin()tBet,非齐次线性方程的通解为:sin()tABet,根据初始条件,0t时,1A,0ddt,可得211()BAA,arctan,自此,非齐次线性方程的解为:211()sin(arctan)tAAAet图2线圈在磁场中,此种情况为指针从偏转角1A开始偏转,在最终偏转角A附近振动几次后静止,即指针做欠阻尼振动,这是比较常见的仪表工作情况,和是与仪表的转动惯量、阻尼系数、螺旋弹簧的弹性系数有关的物理量,作者经过多次试验,得到1.428,3.57,此为经验数值,仅供参考,如此得到指针做欠阻尼振动的运动规律为:1.42811.077()sin(3.5768.2)tAAAet。再一种情况就是2322kkJJ,此时齐次线性方程的特征根为相等的实数根,即3122kppJ,则齐次线性方程的通解为:12()tBBte,非齐次线性方程的通解为:12()tBBteA,根据初始条件,0t时,1A,0ddt,可得11BAA,21()BAA,那么非齐次线性方程的解为:11[()]tAAAAteA,此种情况为指针从偏转角1A开始偏转,在最终偏转角A处静止,即指针做临界阻尼运动,这种仪表指针在平衡位置能很快停止下来,为示数的读取节约时间,有不少仪表指针是做这种临界阻尼运动的,与仪表转动惯量和阻尼系数有关,作者经过多次试验,得到6.5,仅供参考,如此得到指针做临界阻尼的运动规律为:6.511[6.5()]tAAAAteA。这样就得到了两种运动规律的指示仪表的数学模型。本数学模型的建立虽然以磁电式仪表为例,但是电磁式、电动式仪表只是电量与指针转角的关系与本例不一样,而上面数学模型的建立于这一关系无涉,所以其它形式的仪表都与本例有着相同的数学模型。2、指针式仪表的可视化图3所示为作者开发的电学仿真实验软件界面抓图,实验中的导线由软件使用者连接而成,软件可以根据连接好的线路对的电路结构进行识别[1],然后对电路进行计算,指示仪表则根据计算的结果进行显示,这里只就指示仪表的可视化进行讨论。电器设备的外形大都采用轴测图来表现,指针式仪表采用等二侧图来表现,这样,指示面板就正对着我们,便于精确读数,如图4所示,同时仪表设备又具有立体感。仪表创建时应分为三层,低层是刻度指示面板,中间层是指针,最外层是仪表外壳,由于指针在软件的使用过程中会运动,而且指示的位置随不同情况而变化,所以指针应在软件的使用过程中实时画出来,比较好的处理方法是把刻度指示面板和仪表外壳都分别做成影片剪辑,放在库中,在软件运行时用图3仿真实验界面抓图图4仿真实验中仪表的抓图_root.attachMovie(dianliubiaoKD,dianliubiaoKD,8994)和_root.attachMovie(dianliubiaoWK,dianliubiaoWK,8996)命令分别把刻度指示面板和仪表外壳影片剪辑调入场景,并且分别把深度值设为8994和8996,这样,外壳影片剪辑就在刻度指示面板影片剪辑的上面,中间层上的指针是在软件运行时,用_root.createEmptyMovieClip(DIANLIUzhizhen,8995)命令创建一个名为“DIANLIUzhizhen”的深度值为8995的空影片剪辑,然后用这个影片剪辑画出指针,这样,指针影片剪辑就在刻度指示盘影片剪辑的上方,在仪表外壳影片剪辑的下方了。可以创建一个绘出仪表指针的函数:functionPaintHands(DLzhi,DLzhi2){//参数DLzhi2为以前电量,DLzhi为当前电量;A=DLzhi*100/0.5+40;A2=DLzhi2*100/0.5+40;/*根据电量值计算出指针的偏转角,40为指针在0刻度时的偏转角,100为指针在满刻度时的偏转角,0.5为仪表的量程,这里以磁电式仪表为例;*/t=(getTimer()-t1)/1000;/*t1为调用PaintHands(DLzhi,DLzhi2)函数之前所取得时刻,以作为指针运动的起始时刻,t即为指针运动的时间,除以1000,是把毫秒化成秒;*/a=A*Math.PI/180-1.077*(A-A2)*(Math.PI/180)*Math.exp(-1.428*t)*Math.sin(3.57*t+68.2*Math.PI/180);/*此即为求偏角公式:1.42811.077()sin(3.5768.2)tAAAet语句,这里以指针做欠阻尼振动运动规律为例。*/x1=610-50*Math.cos(a);y1=160-50*Math.sin(a);/*610、160为指针旋转中心坐标,50为指针长度,x1、y1即为根据指针偏转角度算出的指针端点坐标*/_root.createEmptyMovieClip(DIANLIUzhizhen,8995);with(DIANLIUzhizhen){lineStyle(0,0x000000,100);moveTo(x1,y1);lineTo(610,160);}/*创建空影片剪辑DIANLIUzhizhen,画出代表指针的直线,此直线为从指针
本文标题:基于Flash虚拟实验中仪表可视化的一种方法
链接地址:https://www.777doc.com/doc-2533849 .html