基于浏览器的锅炉仿真培训系统
  • 2000-01-01 00:00:00
  • 关键字:

    工业锅炉在国民经济中应用十分广泛。工业锅炉的经济、安全运行,意义重大。为了提高工业锅炉的运行水平,对工业锅炉的运行人员进行运行培训是十分必要的。开发“SHL4工业锅炉运行仿真培训系统”,对于提高运行人员的运行水平,保证工业锅炉的安全、经济运行,有重要作用。

    工业锅炉运行仿真培训系统概述 

    工业锅炉仿真培训系统,属于原理性仿真培训系统。它适用于烧煤的过热蒸汽链条炉,用计算机仿真。 
计算机仿真的特点是:采用目前广泛使用的、价格低廉的家用电脑(PC机),配以本仿真软件,就可以实现锅炉的运行仿真过程。主要的锅炉的现场操作,都在计算机上通过鼠标(或键盘)仿真实现,锅炉的运行参数也都通过计算机的显示屏进行仿真显示。运行人员面对计算机就可以学习锅炉的实际运行过程,熟悉锅炉的运行和各项操作,以实现对运行人员进行运行操作培训。

基于浏览器的锅炉仿真系统

    多比图形控件介绍

多比图形控件出现简化了这种开发难度,它是一款基于Web的矢量图形控件,能够检测浏览器类型,自动选择VML或SVG方案进行做图,类似于网页上的Visio控件,是目前国内外基于Web矢量图案解决方案。多比图形编辑器实现了图形、图像、文字的有机统一。它除了支持HTML中常用 的标记,如文本、图像、链接、交互性、CSS的使用、脚本外,还提供了大量针对图形、图像、动画的特定标记。对SVG图形文件进行编辑管理的过程为:SVG图形文件经XML解析器打开,并在内存中生成一个对象树,用鼠标事件来驱动脚本执行,脚本通过DOM接口对象进行相关的操作,来实现图形绘制、编辑等功能。

    仿真动画的实现

     图元动画在实时的显示方面有大量的用处。 例如,工业控制中的人机界面, 网络拓扑图中的设备故障信息等等。

    我们先来看看计算机的动画是如何产生的。计算机通过动画一幕一幕的连贯起来,之后就会产生动作效果,使人有身临其境的感觉与效果。一个简单的动画只有两帧,他们连续的播放,就可以产生动画效果。

    在理解了图元重绘的基础上, 我们不难知道如何绘制动画。 我们先设置一个定时器,让它半秒钟触发一个事件。我们在内部设置一个flag,当它是0 的时候我们绘制一次画面;当他是1的时候,我们绘制另外一个画面。

    我们以锅炉或某个热设备为例,如果有一个设备故障,我们可以闪烁,提示用户,设备出现了故障。

    //设计一个热设备的基类, 所有的网络

    Guolu.MonitorableDevice = StandardShapes.Image.extend({

        //标识开始动画或停止

        animation: false,

        //timer 的id

        animId: null,

        //状态为

        animCnt: 0,

        orgW:-1,

        orgH:-1,

       

        //设置开始动画或停止

        setAnimation: function(a){

            this.animation = a;

            //如果需要显示动画,

            if(a){

                var me = this;

                //保存状态

                me.orgW = me.width;

                me.orgH = me.height;

                //设置定时器

                this.animId = setInterval(function(){

                    me.animCnt = (me.animCnt == 1)? 0 : 1;

                    me.drawAnimation();

                }, 500);

            //不需要显示动画

            }else{

                //清除定时器

                if(this.animId){

                    clearInterval(this.animId);

                }

                //还原宽度和高度

                this.width = this.orgW;

                this.height = this.orgH;

                this.animId = null;

                this.animCnt = 0;

                //重绘静态页面

                this.redraw();

            }

        },

       

        //绘制动画

        drawAnimation: function(){

            //如果是基数帧,缩小20%

            if(this.animCnt===1){

                this.height = this.orgH*0.8;

                this.width = this.orgW*0.8;

            //如果是偶数帧,还原比例

            }else{

                 this.height = this.orgH;

                this.width = this.orgW;

            }

            this.redraw();

        }

    });