• net程序设计工具 > 基于Java语言的虚拟实验表显示程序设计
  • 基于Java语言的虚拟实验表显示程序设计

    免费下载 下载该文档 文档格式:DOC   更新时间:2014-07-08   下载次数:0   点击次数:1
    基于Java语言的虚拟实验表显示程序设计 The Design of Display Program of Virtual Experiment Table Based on the Java 张彦军 马法平 (青岛科技大学自动化与电子工程学院,山东 青岛 266042) 摘要:采用虚拟图表来显示自控实验的各种数据,能够直观地反映出实验过程中各种参数的变化对整个实验过程的影响.倒立摆系统作为控制理论研究中的一种比较理想的实验手段,为自动控制理论的教学、实验和科研构建了一个良好的实验平台.本文以倒立摆系统作为研究对象,就自动控制实验的虚拟图表的绘制进行程序设计,论述如何使用java语言结合第三方类库Jfreechart来设计程序使其自动绘制自动控制虚拟实验表. 关键词:虚拟实验;虚拟实验表;倒立摆系统;Java. Ma Fa-ping (School of Automation and Electronic Engineering, Qingdao University of Science & Technology,Qingdao 266042 China) Abstract: It can intuitively reflect on the influence of the variation of various parameters in the process of the experiment to use virtual chart to display the control experiment of various data .The Inverted pendulum system, as a kind of ideal control theory in the study of experimental means, build a good experiment platform for the teaching, experiment and research of the automatic control theory. This article based on the inverted pendulum system mainly to design drawing program of virtual chart of automatic control experiment ,and discusses how to use the Java language combined with a third party library Jfreechart to design the program to make it automatic drawing automatic control virtual experiment table. Key Words: Virtual experiment; Virtual experiment table; Inverted pendulum system; Java. 引言 随着计算机技术的飞速发展,人们越来越多地采用计算机对倒立摆实验进行虚拟仿真研究.虚拟实验是指借助于多媒体、仿真和虚拟现实等技术在计算机上营造可辅助、部分替代甚至全部替代传统实验各操作环节的相关软硬件操作环境,实验者可以像在真实的环境中一样完成各种实验项目,所取得的实验效果等价于甚至优于在真实环境中所取得的效果. 虚拟实验建立在一个虚拟的实验环境(平台仿真)之上,而注重的是实验操作的交互性和实验结果的仿真性.虚拟实验的实现将有效缓解很多高校在经费、场地、器材等方面普遍面临的困难和压力,而且开展网上虚拟实验教学能够突破传统实验对"时、空"的限制,无论是学生还是教师,都可以自由、无顾虑地随时随地上网进入虚拟实验室,操作仪器,进行各种实验,有助于提高实验教学质量. 倒立摆系统简介及其研究的理论意义 倒立摆系统是一个典型的快速、多变量、带有非线性和强耦合特性的机械系统,是进行控制理论教学及开展各种控制实验的理想实验平台.在实际中有很多这样的系统,像卫星发射架系统和海上钻井平台系统等都与之相似.对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等.同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等.因此,对它的研究在理论上和方法论上均有深远的意义 倒立摆的分类 倒立摆系统按摆杆数量的不同,可分为一级,二级,三级倒立摆等,多级摆的摆杆之间属于自有连接(即无电动机或其他驱动设备).现在由中国的北京师范大学李洪兴教授领导的"模糊系统与模糊信息研究中心"暨复杂系统智能控制实验室采用变论域自适应模糊控制成功地实现了四级倒立摆.是世界上第一个成功完成四级倒立摆实验的国家. 2.倒立摆的控制目标 倒立摆的控制问题就是使摆杆尽快地达到一个平衡位置,并且使之没有大的振荡和过大的角度和速度.当摆杆到达期望的位置后,系统能克服随机扰动而保持稳定的位置. 3.倒立摆的控制方法 倒立摆系统的输入为小车的位移(即位置)和摆杆的倾斜角度期望值,计算机在每一个采样周期中采集来自传感器的小车与摆杆的实际位置信号,与期望值进行比较后,通过控制算法得到控制量,再经数模转换驱动直流电机实现倒立摆的实时控制.直流电机通过皮带带动小车在固定的轨道上运动,摆杆的一端安装在小车上,能以此点为轴心使摆杆能在垂直的平面上自由地摆动.作用力u平行于铁轨的方向作用于小车,使杆绕小车上的轴在竖直平面内旋转,小车沿着水平铁轨运动.当没有作用力时,摆杆处于垂直的稳定的平衡位置(竖直向下).为了使杆子摆动或者达到竖直向上的稳定,需要给小车一个控制力,使其在轨道上被往前或朝后拉动. 图1 倒立摆实物图 二.单级倒立摆的数学建模 在忽略了空气阻力,各种摩擦之后,可将直线一级倒立摆系统抽象成小车和均质杆组成的系统,如下图所示: 其中, : 为小车的质量 : 为摆杆和球的质量 :小车摩擦系数 : 为摆杆转动轴心到杆质心的长度 :为加在小车上的力 :为小车的位置 :摆杆与垂直向上方向的夹角 (1)在作用下,小车加速运动,根据牛顿第二定律得: (1) (2)设 ,进行近似处理: 则有:2) 系统的状态方程为: (其中:3) 二.图表绘制工具简介 1.Applet类简介 Applet(小应用程序)采用Java创建的基于HTML的程序.浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行.一般的Applet只能通过appletviewer或者浏览器来运行,一般的Java程序通过继承Applet类也可以嵌入网页运行. 2.Applet的工作原理 含有Applet的网页的HTML文件代码中部带有 和这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet.Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或Netscape)解释执行能够产生特殊效果的程序.它可以大大提高Web页面的交互能力和动态执行能力.包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页. 当Applet用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器.由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果. 在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能. Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具. AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等.目前,在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果. Applet 小应用程序的实现主要依靠java. Applet 包中的Applet类.与一般的应用程序不同,Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互. Applet是一种Java的小程序,它通过使用该Applet的HTML文件,由支持Java的网页浏览器下载运行.也可以通过java开发工具的appletviewer来运行.Applet 程序离不开使用它的HTML文件.这个HTML文件中关于Applet的信息至少应包含以下三点: 字节码文件名(编译后的Java文件,以.class为后缀) 字节码文件的地址 在网页上显示Applet的方式. 3.Jfreechart简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等.这些不同式样的图表基本上可以满足目前的要求.当在项目中客户需要图标分析时,JFreeChart便是最好的选择,JFreeChart是开源项目,可以方便的从其官方网站上获得其源代码,可以方便的与Swing相结合使用,还可以导入到Web页面中,更是可以方便的利用其工厂方法将图表写入jpeg或者png格式的图片中. JFreeChart是一个免费的Java图表库,让开发人员开发出专业的图表显示在他们的应用程序. JFreeChart's extensive feature set includJFreeChart的广泛的功能包括: a consistent and well-documented API, supporting a wide range of chart types;详实的API,支持各种各样的图表类型; a flexible design that is easy to extend, and targets both server-side and client-side applications;一种灵活的设计,易于扩展,和指标均服务器端和客户端的应用; 支持多种类型的输出,包括Swing界面,图像文件(包括PNG和JPEG格式) ,和矢量图形文件格式; JFreeChart是"开源" ,或更具体的免费软件 . 4. Jfreechart图表绘制 与画曲线图密切相关的几个类: TimeSeriesCollection曲线数据的集合. TimeSeries曲线信息序列. ChartFactory可以利用该类的createTimeSeriesChart方法来创建曲线的JFreeChart对象. 为了观察图表显示效果,编写了一个利用Jfreechart绘制折线图的程序,利用Eclipse运行程序,结果如下图所示: 图2折线图绘制 由上图可以看出,我们运用Jfreechart绘制,能够得到比较美观的图表显示界面. 图表能使数据形象直观的表现,给数据统计也提供了方便,JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求. 四.倒立摆控制虚拟仿真的实时图表显示 1.主类InvertedPendulum.class的构成思路 1.1 程序的显示目标 我们编程所显示的图表应该是这样的: (1)下方是虚拟实验部分,即对小车进行的仿真部分和一些控制按钮; (2)上方是图表显示部分,实时显示的倒立摆仿真实验中的小车的位置和摆杆角度. 1.2 程序的构成思路 对小车仿真部分运用applet中的动画实现,小车各个部分的运动轨迹为所建立的系统模型中传递的参数控制; 获得倒立摆模型中小车的角度和位置实时变化的数据,并利用Jfreechart实现图表显示出来. 2 编写Java程序并结合Jfreechart 显示图表 2.1 运用applet动画模拟小车的运动 (1)画出小车运动时的背景部分程序如下: Public void Clear Plot (Graphics g) { offScrGC = offScrImage.getGraphics();//获得画布 offScrGC.clipRect(0, 0, size().width, size().height - controlPanel.size().height);//画布的尺寸,它定义为控制 面板以上的区域 g = offScrGC; xSize = size().width; YSize = size ().height; PlotX = plotY = border; plotW = xSize - 2 * border; plotH = (ySize - 2 * border - 3)/2; PicX = border; picY = border +plotH; picW = xSize - 2 * border;//球杆框的宽度 picH = (ySize - 2 * border - 3)/2;//球杆框的高度 } (2)绘制小车的部分程序如下: g.clipRect(picX, picY, picW, picH);//做球杆所在的框 g.setColor(Color.white); g.fillRect(oldrect[0] - 30, oldrect[1] - 30, oldrect[2] + 50, oldrect[3] + 50 + 200);//框变大 y = picX + (int) (((-yMinScale + data [0]) * (double) plotW) / (yMaxScale - yMinScale)) +80; g.setColor(Color.blue); //画轮子 g.fillOval(y-12, (picY + (3*picH)/4) +45, 8, 8); g.setColor(Color.blue);//画轮子 g.fillOval(y+4, (picY + (3*picH)/4)+45, 8, 8); g.setColor(Color.darkGray);//画轨道 g.drawLine(plotX, (picY + (3*picH)/4)+58-5, plotX+plotW, (picY+(3*picH)/4)+53); g.drawLine(plotX, (picY + (3*picH)/4)+58-5, plotX+plotW, (picY+(3*picH)/4)+59-5); g.setColor(Color.gray); //画出小车 g.fillRect(y - 15, (picY + (3 * picH) / 4)+32, 30, 15); 2.2 小车运动轨迹的控制 根据所建立的系统模型来仿真小车运动,可见小车各个部分的运动轨迹为所建立的系统模型传递的参数控制. 小车框的坐标和大小与oldrect[]有关: oldrect[0] y或y+车面杆投影长,取其小者 oldrect[1] 一横值或横值加杆到杆低的垂直位移,取其小者 oldrect[2] 杆投影长 oldrect[3] 杆到杆底的垂直距离 if(Math.abs(40D * Math.sin(data[1])) <= 40D) { g.drawLine(y, (5 + picY + (3 * picH) / 4) +33, y + (int) (scale * Math. Sin (data[1])), (5 + picY + (3 * picH) / 4) - (int)(scale * Math.cos(data [1])) - 10); g.setColor (Color. Red); g.fillOval ((y + (int) (scale * Math.sin (data [1]))) - 5, (5 + picY + (3 * picH) / 4) - (int) (scale * Math.cos (data [1])) - 15, 10, 10); Oldrect [0] = Math.min(y, y + (int) (scale * Math.sin (data [1]))); Oldrect [1] = Math.min ((5 + picY + (3 * picH) / 4) - 10, (5 + picY + (3 * picH) / 4) - (int) (scale * Math.cos (data [1])) - 10); Oldrect [2] = Math.abs ((int) (scale * Math.sin (data [1]))); Oldrect [3] = Math.abs ((int) (scale * Math.cos (data [1]))); } else { Oldrect [0] = y; Oldrect [1] = (5 + picY + (3 * picH) / 4) - 10; Oldrect [2] = 0; Oldrect [3] = 0; } 2.3 用Jfreechart显示图表 仔细观察我们在上面贴出来的那个图表就会发现,它的横轴是时间系列,用来表示时间的进度,而不是表示固定不变的几个坐标,它不是静止的,是动态的.这里的两条曲线的任意点的取值是符合某种运动控制规律的,需要配合倒立摆模型的数据来完成. 设计思路:在applet中绘制实时曲线图比较复杂,由于applet的坐标系定义是左上角为零,顺屏幕向右、向下建立坐标轴,这与我们一般坐标建立相悖.利用jfreechart的time series chart可以建立时序图,利用后台线程产生需要的曲线数据,这里可采用timer类实现.利用timeseries类可以产生chart需要的数据形式. 由于使用jfreechart的自带类库,chart还可动态完成图表形式的改变给图表增加了实用的附加功能:利用功能菜单可以对坐标轴、背景色、字体等进行动态改变,还可利用鼠标关联,显示任意时刻的图表数据.程序仿真结果如图3所示: 图3 倒立摆仿真实验表 从上面结果我们可以看到,并不是所有的数据都是我们需要的.我们可以这样进行改进,当鼠标放置在折线上时才显示我们想要的数据.改进后的显示图表如图4所示: 图4 改进后仿真实验表 五.总结 本文以单级倒立摆为对象研究采用虚拟图表来显示自控实验的各种数据,目的是通过虚拟实验表能够直观地反映出实验过程中各种参数的变化对整个实验过程的影响.通过仿真实验可以观察到随着小车来回的运动,运动参数可以自动显示在生成的虚拟图表上,以便于对实验结果的分析研究. 参考文献 [1] Graham C. Goodwin, Stefan F.Graebe, Mario E. Salgado. Control system design. [2] 文福安 王昀 基于JAVA技术的虚拟仪器元件库设计与实现,计算机应用技术,2010,26-30. [3] 马幼捷 安小东 虚拟实验技术的应用研究 天津理工大学电力系统及其自动化,2008,40-46. [4] 吕正 虚拟仿真实验在实验室中的应用 华北电力大学 大学物理实验 [5] 杨世勇 徐莉苹 王培进 单级倒立摆的PID控制 控制工程 2007 [6] 邵丽萍 邵光亚 张后杨.Java语言程序设计 清华大学出版社 2004 附注: 作者简介:张彦军:(1960-),男,教授,硕士研究生导师,研究方向:过程控制和自动化装置的研究. 马法平,男,(1988-),研究生,过程控制和自动化装置的研究,青岛科技大学 通讯地址:山东青岛四方区郑州路53号青岛科技大学自动化与电子工程学院,邮编:266042 联系电话: mfp_1988@163.com
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • net框架程序设计  net程序脱壳工具  java画图工具程序设计  数学计算工具程序设计  程序界面设计工具  程序设计语言只是工具  net程序是什么  net程序可以禁止吗  net程序破解  net程序