为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

用VB绘制发动机实时数据动态曲线图

2012-07-02 3页 pdf 112KB 46阅读

用户头像

is_198363

暂无简介

举报
用VB绘制发动机实时数据动态曲线图 2004年 12月 第 16卷第6期 石家庄职业技术学院学报 Journal of Shijiazhuang Vocational Technology Institute Dec.2004 Vo1.16 No.6 文章编号:1009.4873(2004)06.0023.03 用VB绘制发动机实时数据动态曲线图 苏海峰, 冯国胜 (石 家庄铁道学院 机械分院,河北 石家庄 050043) 摘 要:为使发动机监控系统中数据的显示和分析更直观,使用 PictureBox控件和 Timer控件,可...
用VB绘制发动机实时数据动态曲线图
2004年 12月 第 16卷第6期 石家庄职业技术学院学报 Journal of Shijiazhuang Vocational Technology Institute Dec.2004 Vo1.16 No.6 文章编号:1009.4873(2004)06.0023.03 用VB绘制发动机实时数据动态曲线图 苏海峰, 冯国胜 (石 家庄铁道学院 机械分院,河北 石家庄 050043) 摘 要:为使发动机监控系统中数据的显示和分析更直观,使用 PictureBox控件和 Timer控件,可以解决实时 曲线显示问题,具体介绍 了绘制实时监测 曲线的程序设计方法. 关键词:控件;实时数据;动态曲线;发动机监控系统 中图分类号:TP399 文献标识码 :A 发动机实时数据的动态曲线显示是发动机监控 系统实现友好人机界面的重要组成部分,可帮助开 发人员了解发动机ECU内部工作情况,便于观察发 动机的运转参数,利于对程序进行实时在线修改,使 发动机性能匹配最佳.在本监控软件中,利用 Visual Basic 6.0语言编程,实时数据在屏幕上以数字和图 形方式实时显示. 1 发动机实时曲线的显示要求 发动机实时曲线要依据研究需要实时反映发动 机参数的变化.以速度控制研究为例,进行加速研究 时显示 7 000转/分的发动机速度变化范围,进行目 标转速研究时显示 1转/分的差别.因此,画图程序 需满足如下要求:坐标轴纵轴示的范围可调,最大 7 000转/分,最小 10转/分;坐标轴横轴表示的时间 范围可调(与绘图点数和刷新间隔有关),并且时间 刻度随横轴区分线在曲线绘满时一起自右向左移 动;实时曲线刷新间隔可调整,最小间隔不大于 20 ms;曲线点数可实时调整,最大点数应等于屏幕分 辨率. 2 发动机实时曲线图的控件选用 MsChart控件功能强大,图形美观,使用简 单,并可以与数据库相结合⋯.在本监控软件中, 使用 Access数据库存储从开发装置传来的发动机 参数信息,在需要时从中检索出需要的数据,通过 MsChart控件简单高效地进行静态曲线 自动绘制. 但 MsChart控件执行连续绘图时会产生屏幕抖动, 在用剪切板方式消除了屏幕抖动后,CPU占用过 大影响到了其他程序如串口通信等的执行,因此, 改用PictureBox和Timer控件编写了实时动态曲线 的绘图程序,解决了内存占用问题,满足了系统要 求. 3 发动机实时曲线图具体绘制过程 在发动机实时数据曲线图中将控件 Picture13ox 作为容器,实现曲线图的动态显示要涉及曲线、坐标 轴网格线和坐标刻度的消隐和重绘.消隐的实现主 要用背景色重绘曲线和网格线,并覆盖坐标刻度数 字;重绘实时曲线和坐标轴网格线通过 Line方法来 实现,坐标轴刻度、标签、图标示例的标注使用 Print 方法实现.另外,图形在横轴的放大通过改变曲线显 示的时间长度实现;纵轴方向的放大可通过调整数 据中的极值范围在最大画线区域中的比例决定.以 一 条实时速度曲线图为例介绍具体步骤. 3.1 定 义绘 图全局 变量 啊,cy为矩形绘图区坐标原点;k,Is为矩形 绘图区宽、高;kx,ky为坐标系网格线数量;Np曲 线为屏欲显示的总点数;Vn为实时数据变量,本例 中为实时速度值;Timer1.Interval为图形刷新间隔. 本例中CX=62,cy=260;k=400,Is=200(坐标单 位为像素);kx=5,ky=5;Timer1.Interval=50ms; Np=400.每次绘图前只需给以上变量赋值便可更 改图形模 样,也 可在绘 图过程 中随时通 过 Com— boBox和 CommandButton控件实时改变. 收稿 日期:2004—09一l3 基金项目:河北省自然科学基金项目(F2004000428) 作者简介:苏海峰(197l~),男,河北石家庄人,石家庄职业技术学院教师,工程师.石家庄铁道学院载运工具应用工程专业在读硕士研 究生 维普资讯 http://www.cqvip.com 24 石家庄职业技术学院学报 第 l6卷 3.2 进入 Timer事件循环执行绘图程序 Private Sub Timerl_Timer() Statie num As Long 定义当前点的编号,在此例 中同Timer中断次数 Static Np0 As Integer 定义实时曲线点数的记录 值 Static V(1 To 2000)As Currency 绘图数据数组, 大小及维数根据需要调整 Static sig As Boolean 实时曲线数据范围变化标 志 Static z As Integer 实时曲线数据变化范围 10^ z Static ymax As Currency 纵坐标刻度极大值 Static ymin As Currency 纵坐标刻度极小值 Dim X1 As Integer 定义每段线段左端点坐标 Dim yl As Integer Dim x2 As Integer 定义每段线段右端点坐标 Dim y2 As Integer 3.2.1 图形初始化程序 初始化程序包括:绘制实时曲线背景矩形框,依 据具体参数确定数据极值范围、坐标轴刻度范围,绘 制坐标网格线、刻度、标签、图例,绘制实时曲线已有 部分.(具体程序略) 3.2.2 给绘图数据数组赋值 依次将实时数据赋给数组,当前点数超出数组 范围时,数组中的值前移一列,实时值赋给数组最后 一 个数. 3.2.3 曲线未满画图框时绘制当前线段 Picture1.DrawStyle=0 选择输 出的线型的样式 , 以下程序略 Picture1.DrawWidth=1 选择输出的线型的宽度, 以下程序略 If num< =Np And num>1 Then z1=CX+(num一1)*(Ix/Np) x2=CX+num*(IX/Np) yl=cy-Iy (V(num一1)一ymin)/(ymax—ymin) 3'2=cy-Iy (V(num—ymin)/(ymax—ymin) Picture1.Line(X1,y1)一(x2,y2),QBColor(1) 绘 制当前实时线段 End If 3.2.4 曲线已满画图框后,曲线、坐标网格线和坐 标刻度实时调整 、绘制 3.2.4.1 消隐 、绘制实时横坐标刻度及区分线 If num>Np Then Picture1.Line(CX一35,cy+20)一(f +35+b , +21),QBColor(8) 消隐上一次横坐标数值 For i=1 To kx Picture1.CurrentX=CX+fi*Ix/kx一 (num Mod(Np/kx))/Np Ix) Picture1.Current Y:cy+18 Picture1.Print Format(f i*Np/kx+ num一 (num Mod(Np/kx))一Np))*Timer1.Interval/ 1000, ##,##0.00 绘制当前横坐标刻度值 Next i For i=1 To kx Picture1.Line(CX+(i*Ix/kx一((num一1) Mod( /kx))/Np Ix),cy)一(CX+(i*IxIkx 一 ((hum一1)Mod(Np/kx))/Np b ),cy一/y), QBColor(15) 消隐上一次横坐标网格线 Next For =1 To kx Picture1.Line(CX+(i*Ix/kx一(num M0d(Np/ kx))/Np Ix),cy)一(CX+(i*IxIkx一(num Mod( /kx))/Np Ix),cy—Iy),QBColor(0) 绘制当前横坐标网格线 Next i For i=0 To ky Picture1.Line(CX,cy—i*( /ky))一(CX+Ix,cy — i*(1y/ky)),QBColor(0) 绘制纵坐标网格线 Next i 3.2.4.2 实时曲线的消隐 If num>2000Then X =2000 Else X=num 确定数组中当前实时数据的位置 End If For i=2 To Np z1=CX+(i一1)*(b/Np) x2=CX+(i)*(b/Np) yl=cy—Iy ( (X—Np+i一2)一ymin)/ (ymax—ymin) y2=cy一/y ( (X—Np+i一1)一ymin)/ (ymax—ymin) Picture1.Line(X1,y1)一(x2,y2),QBColor(15) 消隐上一条实时曲线 Next i 3.2.4.3 定期调整当前数据与坐标的极值 如果极值范围发生变化,标志值置 1,即:sig= True.实时确定极值,确保当前值不超过纵坐标范 维普资讯 http://www.cqvip.com 第6期 苏海峰等:用 VB绘制发动机实时数据动态曲线图 25 围,如果实时数据超出极值范围,标志值置 1. 3.2.4.4 如果极值范围发生改变,消隐、重绘纵坐 标刻度值 If sig:True Then Picture1.Line(啊 一35,cy+10)一(啊 ~35,cy— Iy),QBColor(8) 消隐纵坐标刻度值 z=Log(Vmax—Vmin)/Log(10#) 计算极值范 围指数 ymax=(CLog((Vmax)/(10A z)+0.5))*(10A z) 计算纵轴坐标极大值 ymin=(CLog((Vmin)/(10 A z)一0.5))*(10 A z) 计算纵轴坐标极小值 For i=0 To ky Picture1.CurrentX 一60 Picture1.CourrentY=cy— i*I /k —s Picture1.Print Format((i*(ymax—ymin)/ky+ ymln), ##,##0.00 ) 重绘纵坐标刻度值 Next End If sig=False ’标志位置 0’ 3.2.4.5 重绘实时曲线 For i=2 To Np xl= +(i一1)*(Ix/Np) x2= +i*(b/Np) yl=cy—ty ( (X—Np+i一1)一ymin)/ (ymax—ymin) y2=cy— *( (X—Np+i)一ymin)/ (ymax—ymln) Picture1.Line( l, 1)一(x2,y2),QBColor(1) Next i End If End Sub 4 结束语 本程序较好地解决了实时曲线显示过程中动态 平移、图形放大、坐标轴刻度实时变换,横轴网格线 及时间刻度的实时显示与移动.不仅运行平稳,界面 美观、友好,而且降低了CPU占用(在实时曲线点数 为400点,刷新间隔为 50毫秒时,此绘图程序在 Windows XP下单独运行时,CPU使用仅为 l7%). 可将其扩展为多条实时曲线 同步实时对 比显示(图 1所示),在使用过程中,有时需要更换或添加观测 数据,试验人员只须通过鼠标按钮就可进行变量选 取、图形变换等操作,使用非常方便;另外实现了数 据库查询画图功能,以便于实验数据的反复研究,在 发动机电控系统开发中起到了重要作用. : .= 量 一 嘲 鬈 l转速 2进气量 图 l 发动机实时数据的动态曲线 参考文献: [1] 李兰友,刘炜,江中.Visual Basic高级图形应用程序设计 [M].北京:清华大学出版杜.2003 蹑} 责任编辑 :金 欣 Plotting real—time dynamic engine data curve with VB SU Hai—feng, FENG GUO—sheng (Department of Mechanical Engineering,Shijiazhuang Railway Institute,Shijiazhuang 050043.China) Abstract:In order to display and analyse real—time data clearly in engine monitoring system,a method of plotting real—time dynamic data curve,based on controls of PictureBox and Timer with VB is introduced,which is very effective. Key words:controls;real·time data;dynamic curve;engine monitoring system 维普资讯 http://www.cqvip.com
/
本文档为【用VB绘制发动机实时数据动态曲线图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索