基于VB语言的发动机特性曲线绘制系统研究

合集下载

实验三 系统频率特性曲线的绘制及系统分析

实验三  系统频率特性曲线的绘制及系统分析

《自动控制原理》实践报告实验三系统频率特性曲线的绘制及系统分析熟悉利用计算机绘制系统伯德图、乃奎斯特曲线的方法,并利用所绘制图形分析系统性能。

一、实验目的1.熟练掌握使用MATLAB软件绘制Bode图及Nyquist曲线的方法;2.进一步加深对Bode图及Nyquist曲线的了解;3.利用所绘制Bode图及Nyquist曲线分析系统性能。

二、主要实验设备及仪器实验设备:每人一台计算机奔腾系列以上计算机,配置硬盘≥2G,内存≥64M。

实验软件:WINDOWS操作系统(WINDOWS XP 或WINDOWS 2000),并安装MATLAB 语言编程环境。

三、实验内容已知系统开环传递函数分别为如下形式, (1))2)(5(50)(++=s s s G (2))15)(5(250)(++=s s s s G(3)210()(21)s G s s s s +=++ (4))12.0)(12(8)(++=s s s s G (5)23221()0.21s s G s s s s ++=+++ (6))]105.0)125.0)[(12()15.0(4)(2++++=s s s s s s G 1.绘制其Nyquist 曲线和Bode 图,记录或拷贝所绘制系统的各种图形; 1、 程序代码: num=[50];den=conv([1 5],[1 2]); bode(num,den)num=[50];den=conv([1 5],[1 2]); nyquist(num,den)-80-60-40-20020M a g n i t u d e (d B)10-210-110101102103-180-135-90-450P h a s e (d e g )Bode DiagramFrequency (rad/sec)-1012345-4-3-2-11234Nyquist DiagramReal AxisI m a g i n a r y A x i s2、 程序代码: num=[250];den=conv(conv([1 0],[1 5]),[1 15]); bode(num,den)num=[250];den=conv(conv([1 0],[1 5]),[1 15]);-150-100-5050M a g n i t u d e (d B )10-110101102103-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)nyquist(num,den)3、 程序代码: num=[1 10];den=conv([1 0],[2 1 1]); bode(num,den)-150-100-50050100M a g n i t u d e (d B)10-210-110101102103-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)-1-0.9-0.8-0.7-0.6-0.5-0.4-0.3-0.2-0.10-15-10-551015System: sys Real: -0.132Imag: -0.0124Frequency (rad/sec): -10.3Nyquist DiagramReal AxisI m a g i n a r y A x i snum=[1 10];den=conv([1 0],[2 1 1]); nyquist(num,den)-25-20-15-10-5-200-150-100-5050100150200Nyquist DiagramReal AxisI m a g i n a r y A x i s-100-5050100M a g n i t u d e (d B )10-210-110101102-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)4、 程序代码: num=[8];den=conv(conv([1 0],[2 1]),[0.2 1]); bode(num,den)-18-16-14-12-10-8-6-4-20-250-200-150-100-50050100150200250Nyquist DiagramReal AxisI m a g i n a r y A x i snum=[8];den=conv(conv([1 0],[2 1]),[0.2 1]); nyquist(num,den)5、 程序代码: num=[1 2 1]; den=[1 0.2 1 1]; bode(num,den)num=[1 2 1];den=[1 0.2 1 1]; nyquist(num,den)-40-30-20-10010M a g n i t u d e (d B )10-210-110101102-360-270-180-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)-2.5-2-1.5-1-0.500.51 1.5-3-2-1123Nyquist DiagramReal AxisI m a g i n a r y A x i s-100-5050100M a g n i t u d e (d B )10-210-110101102-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)6、 num=[2 4];den=conv(conv([1 0],[2 1]),[0.015625 0.05 1]); bode(num,den)num=[2 4];den=conv(conv([1 0],[2 1]),[0.015625 0.05 1]); nyquist(num,den)2.利用所绘制出的Nyquist 曲线及Bode 图对系统的性能进行分析:(1)利用以上任意一种方法绘制的图形判断系统的稳定性; 由Nyquist 曲线判断系统的稳定性,Z=P-2N 。

vb函数曲线动态绘制报告

vb函数曲线动态绘制报告

计算机实习二需求分析:函数曲线动态绘制使用面向对象设计环境,编程实现函数曲线的自动绘制。

程序功能是:根据选择的演示函数,允许用户输入参数,然后动态用不同颜色绘制出相应函数曲线。

在用户没有做出其他选择之前,一直重复动态演示曲线绘制过程。

程序设计:1,对面向对象设计环境的认识:第一次接触面向对象设计环境,觉得和C语言和汇编语言有很大差别,不是给你一个界面一条条代码往下写,而是给出很多的控件备选,在这些控件的代码添写处写该孔件所要执行的功能,很多控件是相互联系的,一个控件会启用其他一个或几个控件的功能。

还要设计一个合理的外观,通过设置相应的属性选项设计界面。

但是编程的思想和以前学习的语言是完全一样的,数据类型,定义,顺序,循环,选择结构的设计都和其他语言没太大分别,所以学习起来并不困难。

2,程序构思;把要绘制的函数放在一个列表框中,用时钟的启用和停止控制图像的都态绘制。

选择列表框中的一个函数,对应的一个时钟启用,其他的时钟禁用,在时钟控件的代码填写处写图像绘制的代码,用RGB 函数产生随机颜色。

直线用两点法绘图,其他的用描点法绘图,用FOR循环产生X值,再根据函数公式计算出Y值。

使用全局变量,因为每次只绘一个函数的图,所以全部函数可以用同样的变量,每次绘图给变量付值即可。

该学生毕业设计中经过老师的指导能及时纠正自己的行为,端正学习态度。

通过指导和自学,对所承担的任务进行了实施,结果较好。

报告中因为没有按指导要求使用画图软件,导致流程图不规范。

语言不规范。

结果得分:中 批改老师:章小莉 2006.9.29程序代码和注释Dim a, b, c, d As Single ‘定义单精度的通用变量Private Sub cancel_Click()Unload Me 退出程序End SubPrivate Sub Form_Load() ‘在列表狂中显示函数信息List1.AddItem "y=ax+b" ‘在列表狂中显示函数信息List1.AddItem "y=ax^2+bx+c" ‘在列表狂中显示函数信息List1.AddItem "y=asin(bx+c)+d" ‘在列表狂中显示函数信息List1.AddItem "y=acos(bx+c)+d" ‘在列表狂中显示函数信息List1.AddItem "y=x^a" ‘在列表狂中显示函数信息List1.AddItem "y=a^x" ‘在列表狂中显示函数信息List1.AddItem "y=loga^x" ‘在列表狂中显示函数信息List1.AddItem "y=tan(ax+b)" ‘在列表狂中显示函数信息List1.AddItem "y=cot(ax+b)" ‘在列表狂中显示函数信息End SubPrivate Sub lt1_Click() ‘使所有时钟停止,即停止绘图Timer1.Interval = 0Timer2.Interval = 0Timer3.Interval = 0Timer4.Interval = 0Timer5.Interval = 0Timer6.Interval = 0Timer7.Interval = 0Timer8.Interval = 0Timer9.Interval = 0End SubPrivate Sub lt2_Click()If List1.ListIndex = 0 Thena = InputBox("直线参数输入", "请输入系数a", 0)b = InputBox("直线参数输入", "请输入系数b", 0)Timer1.Interval = 1000 ‘当选择第一个函数时开启时钟一End IfIf List1.ListIndex = 1 Thena = InputBox("抛物线参数输入", "请输入系数a", 0)b = InputBox("抛物线参数输入", "请输入系数b", 0)c = InputBox("抛物线参数输入", "请输入系数c", 0)Timer2.Interval = 1000 ‘当选择第二个函数时开启时钟二End IfIf List1.ListIndex = 2 Thena = InputBox("正弦线参数输入", "请输入系数a", 0)b = InputBox("正弦线参数输入", "请输入系数b", 0)c = InputBox("正弦线参数输入", "请输入系数c", 0)d = InputBox("正弦线参数输入", "请输入系数d", 0)Timer3.Interval = 1000 ‘当选择第三个函数时开启时钟三End IfIf List1.ListIndex = 3 Thena = InputBox("余弦线参数输入", "请输入系数a", 0)b = InputBox("余弦线参数输入", "请输入系数b", 0)c = InputBox("余弦线参数输入", "请输入系数c", 0)d = InputBox("余弦线参数输入", "请输入系数d", 0)Timer4.Interval = 1000 ‘当选择第四个函数时开启时钟四End IfIf List1.ListIndex = 4 Thena = InputBox("幂函数参数输入", "请输入系数a", 0)Timer5.Interval = 1000 ‘当选择第五个函数时开启时钟五End IfIf List1.ListIndex = 5 Thena = InputBox("指数函数参数输入", "请输入系数a", 0)Timer6.Interval = 1000 ‘当选择第六个函数时开启时钟六End IfIf List1.ListIndex = 6 Thena = InputBox("对数函数参数输入", "请输入系数a", 0)Timer7.Interval = 1000 ‘当选择第七个函数时开启时钟七End IfIf List1.ListIndex = 7 Thena = InputBox("正切函数参数输入", "请输入系数a", 0)b = InputBox("正切函数参数输入", "请输入系数b", 0)Timer8.Interval = 1000 ‘当选择第八个函数时开启时钟八End IfIf List1.ListIndex = 8 Thena = InputBox("余切函数参数输入", "请输入系数a", 0)b = InputBox("余切函数参数输入", "请输入系数b", 0)Timer9.Interval = 1000 ‘当选择第九个函数时开启时钟九End IfEnd SubPrivate Sub lt3_Click()Picture1.Cls ‘清屏End SubPrivate Sub Text1_Change()End SubPrivate Sub Timer1_Timer()Picture1.ClsPicture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色X1 = -10X2 = 10Y1 = a * X1 + b ‘用已知的X值计算Y值Y2 = a * X2 + bPicture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.Line (X1, Y1)-(X2, Y2), Intcolor ‘用随机颜色画图End SubPrivate Sub Timer2_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = -10 + iY1 = a * X1 ^ 2 + b * X1 + c ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer3_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = -10 + iY1 = a * Sin(b * X1 + c) + d ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer4_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = -10 + iY1 = a * Cos(b * X1 + c) + d ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer5_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = -10 + iY1 = X1 ^ a ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer6_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = -10 + iY1 = a ^ X1 ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer7_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0.01 To 20 Step 0.01 ‘循环产生等步长的很多X值X1 = 0 + iY1 = Log(X1) / Log(a) ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer8_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.001 ‘循环产生等步长的很多X值X1 = -10 + iY1 = Tan(a * X1 + b) ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd SubPrivate Sub Timer9_Timer()Picture1.Cls ‘清屏Picture1.Scale (-10, 10)-(10, -10) ‘定义坐标red = Rnd * 255green = Rnd * 255blue = Rnd * 255Intcolor = RGB(red, green, blue) ‘产生随机颜色For i = 0 To 20 Step 0.001 ‘循环产生等步长的很多X值X1 = -9.9995 + iY1 = 1 / Tan(a * X1 + b) ‘用已知的X值计算Y值Picture1.Line (-10, 0)-(10, 0)Picture1.Line (0, 10)-(0, -10) ‘画坐标Picture1.PSet (X1, Y1), Intcolor ‘用随机颜色画点Next iEnd Sub使用说明:双击启动程序,在列表中选一个函数,点击开始绘图按钮,根据提示输入参数,就会自动用随机颜色画图,每秒画一次,单击一下“停止绘图”,即可使画图停止,保留最后一次的图型,单击一下“清屏”,就可以把屏幕清理干净。

基于MATLAB的发动机特性实时处理和计算系统

基于MATLAB的发动机特性实时处理和计算系统

即:
K
∑( yt - y′t ) 2
C=
1-
t =1 K
×100 % (2)
∑( yt - y) 2
t =1
其中
,y
=
1 Kt
K
∑yt
=1
为原始试验数据的总体均值 ;
K 为特性曲线的试验数据点数 。
MATLAB中 的 曲 线 拟 合 等 相 应 的 工 具 箱 或
Polyfit,Polyval,Polytool,Polyconf等函数可以非常好地
MATLABReal-TimeWorkshop 和相关的工具箱为平 台的开放软件包 ,各种新的测试和分析技术都能以 功能模块的形式加入到软件包 ,这样可以很方便地 进行软件的维护和二次开发以及应用的升级 ;整个 系统与 Windows有一致的用户界面 ;采用了面向对 象的程序设计方法 ,可以和其它 Windows环境下的 软件交换数据 。软件系统的功能框图见图 2 。
2
ingTherearemanyadvancedandscientificmethodsforprocessingtheengineperformancetestdataandengineperformancesimu
2
lationcomputing,anddatavisualizinginthissystem.ltprovidesareliableandefficienttooltoresearchintoengineperformanceand
式中 , ge 为 n = nj 时发动机万有特性函数 ,当 n 不等于 nj 时 ,利用插值计算 。ge ( nj , TPe ) 是建立的 发动机万有特性的神经网络模型 ,发动机的转速和

基于MATLAB基础上的发动机万有特性曲线的建立

基于MATLAB基础上的发动机万有特性曲线的建立

基于MATLAB基础上的发动机万有特性曲线的建立杨丽娟;赵丹平【摘要】发动机性能的好坏直接影响着整车运行的平顺性、安全性、稳定性等,要全面评价发动机性能,万有特性曲线则是一个很好的工具.万有特性曲线是以发动机转速为横坐标,以扭矩或平均有效压力为纵坐标,在坐标系内画出等燃油消耗率曲线和等功率曲线[1].绘制万有特性曲线的方法有很多种,MATLAB语言是其中之一.本文利用强大的MATLAB绘图工具,绘制了发动机的万有特性曲线,经分析,该方法是一个有效的精确度较高的方法.【期刊名称】《交通节能与环保》【年(卷),期】2010(000)001【总页数】3页(P32-33,48)【关键词】MATLAB;发动机;万有特性【作者】杨丽娟;赵丹平【作者单位】内蒙古工业大学,内蒙古,赤峰,010051;内蒙古工业大学,内蒙古,赤峰,010051【正文语种】中文0 引言发动机是汽车的动力源,发动机性能的好坏直接影响着整车的动力性与经济性。

汽车的运行工况是个随机的过程,受到很多因素的影响,如道路条件、交通流量、气候条件以及汽车自身技术性能的变化等等。

在所有的运行工况下,发动机都应能够与传动系实现最佳匹配,以使整车动力性、经济性、排放性和噪声污染等方面均处于最佳状态。

然而,对发动机性能的分析与研究是保证整车性能达到最佳的重要前提。

MATLAB语言是一个功能强大的仿真软件,可以完成复杂的数学运算,实现对动态系统的建模仿真等,在工程计算中应用非常广泛。

本文利用MATLAB的强大的绘图功能,建立了发动机的输出转矩模型、油耗模型及万有特性曲线。

通过输出转矩模型,由当前发动机节气门开度及转速既可得到与之相对应的发动机的转出转矩,从而为分析发动机性能奠定基础;发动机油耗模型反应了其有效燃油消耗率与转速和转矩之间的关系,发动机在不同工况下运行时,由此模型既可得到不同工况下发动机的比油耗,从而为分析整车燃油经济性提供数据支持;万有特性曲线是在由发动机转速和转矩构成的坐标系内,绘制出等油耗曲线、等功率曲线、外特性曲线等,通过万有特性曲线既可较全面地了解发动机在不同工况下的性能指标。

汽车理论曲线绘制VB编程代码

汽车理论曲线绘制VB编程代码

3.2 实验记录(核心代码及调试过程)1.核心代码:'.............驱动力与行驶阻力平衡图Private Sub Command1_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, j, n As IntegerDim Ft, Ff, Fw, Umax, Uumax As SinglePicture1.Scale (-20, 18000)-(150, -2000)Picture1.Line (0, 0)-(125, 0): Picture1.Line (0, 0)-(0, 16000)Picture1.CurrentX = 125: Picture1.CurrentY = -300: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 125: Picture1.CurrentY = 192: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 16000: Picture1.Print "F/N"Picture1.CurrentX = -2: Picture1.CurrentY = 16000: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 120 Step 20Picture1.Line (i, 0)-(i, 200)Picture1.CurrentX = i - 5: Picture1.CurrentY = -10: Picture1.Print iNext iFor i = 1000 To 15000 Step 1000Picture1.Line (0, i)-(1.5, i)Picture1.CurrentX = -15: Picture1.CurrentY = i + 50: Picture1.Print iNext iPicture1.DrawWidth = 2For n = 600 To 4000Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4For j = 1 To 5Ft = Tq * i0 * ηt * x(j) / rFf = f * 9.8 * mUa = 0.377 * r * n / (i0 * x(j))Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2Picture1.Circle (Ua, Ft), 0.1, vbBluePicture1.Circle (Ua, (Ff + Fw)), 0.1, vbRedUmax = UmaxIf Ua > Umax ThenUmax = UaElseUmax = UmaxEnd IfNext jNext nUumax = CInt(Umax * 100) / 100Picture1.CurrentX = 40: Picture1.CurrentY = 16000: Picture1.Print "最高车速为:"; Uumax; "km/h"End Sub'.............爬坡度图Private Sub Command2_Click()Picture1.ClsPicture1.DrawWidth = 1Dim i, j, n As IntegerDim xx, Ff, Fw, Ft, ii, imax, iimax As SinglePicture1.Scale (-20, 70)-(150, -10)Picture1.Line (0, 0)-(125, 0): Picture1.Line (0, 0)-(0, 60)Picture1.CurrentX = 125: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 125: Picture1.CurrentY = 0.85: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 60: Picture1.Print "i(%)"Picture1.CurrentX = -2: Picture1.CurrentY = 60: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 120 Step 20Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 50 Step 10Picture1.Line (0, i)-(2, i)Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print iNext iPicture1.DrawWidth = 2For n = 600 To 4000Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4For j = 1 To 5Ft = Tq * i0 * ηt * x(j) / rFf = f * 9.8 * mUa = 0.377 * r * n / (i0 * x(j))Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2xx = (Ft - Ff - Fw) / (9.8 * m)α = Atn(xx / Sqr(1 - xx * xx))ii = 100 * Tan(α)If ii > 0 ThenPicture1.Circle (Ua, ii), 0.1, vbBlueEnd Ifimax = imaxIf ii > imax Thenimax = iiElseimax = imaxEnd IfNext jNext niimax = CInt(imax * 100) / 100Picture1.CurrentX = 40: Picture1.CurrentY = 50: Picture1.Print "最大爬坡度为:"; iimax; "%" End Sub'...........动力特性图Private Sub Command3_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, j, n As IntegerDim Ft, Fw, D As SinglePicture1.Scale (-20, 90)-(150, -10)Picture1.Line (0, 0)-(125, 0): Picture1.Line (0, 0)-(0, 85)Picture1.CurrentX = 125: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 125: Picture1.CurrentY = 0.9: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 85: Picture1.Print "D"Picture1.CurrentX = -2: Picture1.CurrentY = 85: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 120 Step 20Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 20 To 80 Step 20Picture1.Line (0, i)-(2, i)Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print "0"; i / 200Next iPicture1.DrawWidth = 2For n = 600 To 4000For j = 1 To 5Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)^ 3 - 3.8445 * (n / 1000) ^ 4Ft = Tq * i0 * ηt * x(j) / rUa = 0.377 * r * n / (i0 * x(j))Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2D = 200 * (Ft - Fw) / (m * 9.8)If D > 0 ThenPicture1.Circle (Ua, D), 0.1, vbBlueEnd IfNext jNext nEnd Sub'.............功率平衡图Private Sub Command4_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, j, n As IntegerDim Pe, Pf, Pw As SinglePicture1.Scale (-20, 80)-(150, -10)Picture1.Line (0, 0)-(125, 0): Picture1.Line (0, 0)-(0, 75)Picture1.CurrentX = 125: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)" Picture1.CurrentX = 125: Picture1.CurrentY = 0.9: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 75: Picture1.Print "Pe/kw"Picture1.CurrentX = -2: Picture1.CurrentY = 75: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 120 Step 20Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 70 Step 10Picture1.Line (0, i)-(2, i)Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print iNext iPicture1.DrawWidth = 2For n = 600 To 4000For j = 1 To 5Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4Pe = Tq * n / 9550Ua = 0.377 * r * n / (i0 * x(j))Pf = (m * f * Ua / 3600) / ηtPw = (ca * Ua ^ 3 / 76140) / ηtPicture1.Circle (Ua, Pe), 0.1, vbBluePicture1.Circle (Ua, (Pf + Pw)), 0.1, vbRedNext jNext nEnd Sub'...........外特性曲线Private Sub Command5_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, n As IntegerDim Pe As SinglePicture1.Scale (-400, 250)-(5000, -20)Picture1.Line (0, 0)-(4500, 0): Picture1.Line (0, 0)-(0, 200)Picture1.CurrentX = 4300: Picture1.CurrentY = -3: Picture1.Print "n(r/min)"Picture1.CurrentX = 4500: Picture1.CurrentY = 3: Picture1.Print "→"Picture1.CurrentX = 100: Picture1.CurrentY = 200: Picture1.Print "Ttq(N*m)"Picture1.CurrentX = 100: Picture1.CurrentY = 80: Picture1.Print "Pe(kw)"Picture1.CurrentX = -60: Picture1.CurrentY = 205: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 500 To 4000 Step 500Picture1.Line (i, 0)-(i, 3)Picture1.CurrentX = i - 200: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 20 To 180 Step 20Picture1.Line (0, i)-(50, i)Picture1.CurrentX = -300: Picture1.CurrentY = i + 3: Picture1.Print iNext iPicture1.DrawWidth = 2For n = 600 To 4000Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4Pe = Tq * n / 9550Picture1.Circle (n, Pe), 2, vbRedPicture1.Circle (n, Tq), 2, vbBlueNext nEnd Sub2.数据图表:驱动力与行驶阻力平衡图:动力特性图:爬坡度图:发动机外特性曲线:发动机功率平衡图:3.2 实验记录(核心代码及调试过程)1.核心代码:'.........加速度的倒数曲线Private Sub Command7_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, j, n As IntegerDim Ff, Ft, Fw, a, δ As SinglePicture1.Scale (-20, 160)-(150, -10)Picture1.Line (0, 0)-(125, 0): Picture1.Line (0, 0)-(0, 150)Picture1.CurrentX = 125: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 125: Picture1.CurrentY = 1.8: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 150: Picture1.Print "1/a"Picture1.CurrentX = -2: Picture1.CurrentY = 150: Picture1.Print "↑"Picture1.CurrentX = -5: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 120 Step 20Picture1.Line (i, 0)-(i, 1.5)Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 140 Step 10Picture1.Line (0, i)-(2, i)Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print i / 10Next iPicture1.DrawWidth = 2For n = 600 To 4000For j = 1 To 5Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4Ft = Tq * i0 * ηt * x(j) / rUa = 0.377 * r * n / (i0 * x(j))Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2Ff = f * 9.8 * mδ = 1 + Iw / (m * r ^ 2) + If1 * x(j) ^ 2 * i0 ^ 2 * ηt / (m * r ^ 2) a = (Ft - Ff - Fw) / (δ * m)If a > 0 ThenPicture1.Circle (Ua, 10 / a), 0.1, vbBlueEnd IfNext jNext nEnd Sub'..............直接挡加速时间曲线Private Sub Command8_Click()Picture1.DrawWidth = 1Picture1.ClsDim i, n As IntegerDim Ff, Ft, Fw, a, δ, t, tt As SinglePicture1.Scale (-10, 90)-(60, -10)Picture1.Line (0, 0)-(55, 0): Picture1.Line (0, 0)-(0, 75)Picture1.CurrentX = 53: Picture1.CurrentY = -3: Picture1.Print "t(s)"Picture1.CurrentX = 55: Picture1.CurrentY = 0.9: Picture1.Print "→"Picture1.CurrentX = 2: Picture1.CurrentY = 75: Picture1.Print "Ua(km/h)"Picture1.CurrentX = -0.7: Picture1.CurrentY = 75: Picture1.Print "↑"Picture1.CurrentX = -3: Picture1.CurrentY = -1: Picture1.Print "0"For i = 10 To 50 Step 10Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 1.5: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 70 Step 10Picture1.Line (0, i)-(1, i)Picture1.CurrentX = -5: Picture1.CurrentY = i + 1: Picture1.Print it = 0For Ua = 0 To 70 Step 0.01n = Ua * i0 * x(4) / 0.377 / rIf n >= 600 ThenTq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3 - 3.8445 * (n / 1000) ^ 4Ft = Tq * i0 * ηt * x(4) / rFw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2Ff = f * 9.8 * mδ = 1 + Iw / (m * r ^ 2) + If1 * x(4) ^ 2 * i0 ^ 2 * ηt / (m * r ^ 2)a = (Ft - Ff - Fw) / (δ * m)t = t + 1 * 0.01 / a / 3.6Picture1.Circle (t, Ua), 0.1, vbBlueEnd IfNext Uatt = CInt(t * 100) / 100Picture1.CurrentX = 15: Picture1.CurrentY = 80: Picture1.Print "0-70(km/h)直接挡加速时间为:"; tt; "s"End Sub加速度曲线图:加速度倒数曲线:直接挡加速时间图:3.2 实验记录(核心代码及调试过程)1.核心代码'.........最高挡百公里耗油量Private Sub Command1_Click()Dim n(1 To 8), B0(1 To 8), B1(1 To 8), B2(1 To 8), B3(1 To 8), B4(1 To 8)n(1) = 815: n(2) = 1207: n(3) = 1614: n(4) = 2012: n(5) = 2603: n(6) = 3006: n(7) = 3403: n(8) = 3804B0(1) = 1326.8: B0(2) = 1354.7: B0(3) = 1284.4: B0(4) = 1122.9: B0(5) = 1141#: B0(6) = 1051.2: B0(7) = 1233.9: B0(8) = 1129.7B1(1) = -416.46: B1(2) = -303.98: B1(3) = -189.75: B1(4) = -121.59: B1(5) = -98.893: B1(6) = -73.714: B1(7) = -84.478: B1(8) = -45.291B2(1) = 72.379: B2(2) = 36.657: B2(3) = 14.524: B2(4) = 7.0035: B2(5) = 4.4763: B2(6) = 2.8593: B2(7) = 2.9788: B2(8) = 0.71113B3(1) = -5.8629: B3(2) = -2.0553: B3(3) = -0.51184: B3(4) = -0.18517: B3(5) = -0.091077: B3(6) = -0.05138: B3(7) = -0.047449: B3(8) = -0.00075215B4(1) = 0.17768: B4(2) = 0.043072: B4(3) = 0.0068164: B4(4) = 0.0018555: B4(5) = 0.00068906: B4(6) = 0.00035032: B4(7) = 0.0002823: B4(8) = -0.000038568Picture1.Scale (-10, 50)-(150, -10)Picture1.Line (0, 0)-(120, 0): Picture1.Line (0, 0)-(0, 45)Picture1.CurrentX = 120: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 120: Picture1.CurrentY = 1: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 45: Picture1.Print "Qs(L/100km)"Picture1.CurrentX = -2.5: Picture1.CurrentY = 46: Picture1.Print "↑"Picture1.CurrentX = -3: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 100 Step 20Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 6: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 40 Step 10Picture1.Line (0, i)-(3, i)Picture1.CurrentX = -12: Picture1.CurrentY = i + 1: Picture1.Print iNext ig = 3880 * 9.8f = 0.013CdA = 2.77ηt = 0.85i0 = 5.83r = 0.367Uamin = 0.377 * r * n(1) / (0.793 * i0)Qmin = 100Picture1.DrawWidth = 2For ua = Uamin To 100 Step 0.01Pe = (g * f * ua / 3600 + CdA * ua ^ 3 / 76140) / ηtnn = 0.793 * i0 * ua / (0.377 * r)For i = 1 To 7If nn >= n(i) And nn <= n(i + 1) ThenB0B0 = B0(i) + (B0(i + 1) - B0(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B1B1 = B1(i) + (B1(i + 1) - B1(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B2B2 = B2(i) + (B2(i + 1) - B2(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B3B3 = B3(i) + (B3(i + 1) - B3(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B4B4 = B4(i) + (B4(i + 1) - B4(i)) * (nn - n(i)) / (n(i + 1) - n(i)) End IfNext iBe = B0B0 + B1B1 * Pe + B2B2 * Pe ^ 2 + B3B3 * Pe ^ 3 + B4B4 * Pe ^ 4Qs = Pe * Be / (1.02 * 7 * ua)Picture1.PSet (ua, Qs), vbBlueIf Qs < Qmin ThenQmin = QsUj = uaEnd IfNext uaText1.Text = CInt(Uj * 100) / 100Text2.Text = CInt(Qmin * 100) / 100End Sub'..............次高挡百公里耗油量Private Sub Command2_Click()Picture1.ClsPicture1.DrawWidth = 1Dim n(1 To 8), B0(1 To 8), B1(1 To 8), B2(1 To 8), B3(1 To 8), B4(1 To 8)n(1) = 815: n(2) = 1207: n(3) = 1614: n(4) = 2012: n(5) = 2603: n(6) = 3006: n(7) = 3403: n(8) = 3804B0(1) = 1326.8: B0(2) = 1354.7: B0(3) = 1284.4: B0(4) = 1122.9: B0(5) = 1141#: B0(6) = 1051.2: B0(7) = 1233.9: B0(8) = 1129.7B1(1) = -416.46: B1(2) = -303.98: B1(3) = -189.75: B1(4) = -121.59: B1(5) = -98.893: B1(6) = -73.714: B1(7) = -84.478: B1(8) = -45.291B2(1) = 72.379: B2(2) = 36.657: B2(3) = 14.524: B2(4) = 7.0035: B2(5) = 4.4763: B2(6) = 2.8593: B2(7) = 2.9788: B2(8) = 0.71113B3(1) = -5.8629: B3(2) = -2.0553: B3(3) = -0.51184: B3(4) = -0.18517: B3(5) = -0.091077: B3(6) = -0.05138: B3(7) = -0.047449: B3(8) = -0.00075215B4(1) = 0.17768: B4(2) = 0.043072: B4(3) = 0.0068164: B4(4) = 0.0018555: B4(5) = 0.00068906: B4(6) = 0.00035032: B4(7) = 0.0002823: B4(8) = -0.000038568Picture1.Scale (-10, 50)-(150, -10)Picture1.Line (0, 0)-(120, 0): Picture1.Line (0, 0)-(0, 45)Picture1.CurrentX = 120: Picture1.CurrentY = -3: Picture1.Print "Ua(km/h)"Picture1.CurrentX = 120: Picture1.CurrentY = 1: Picture1.Print "→"Picture1.CurrentX = 5: Picture1.CurrentY = 45: Picture1.Print "Qs(L/100km)"Picture1.CurrentX = -2.5: Picture1.CurrentY = 46: Picture1.Print "↑"Picture1.CurrentX = -3: Picture1.CurrentY = -1: Picture1.Print "0"For i = 20 To 100 Step 20Picture1.Line (i, 0)-(i, 1)Picture1.CurrentX = i - 6: Picture1.CurrentY = -1: Picture1.Print iNext iFor i = 10 To 40 Step 10Picture1.Line (0, i)-(3, i)Picture1.CurrentX = -12: Picture1.CurrentY = i + 1: Picture1.Print iNext iPicture1.DrawWidth = 2m = 3880g = 3880 * 9.8f = 0.013CdA = 2.77ηt = 0.85i0 = 5.83r = 0.367Qmin = 100For ua = 25 To 100 Step 0.01Pe = (g * f * ua / 3600 + CdA * ua ^ 3 / 76140) / ηtnn = 0.793 * i0 * ua / (0.377 * r)For i = 1 To 7If nn >= n(i) And nn <= n(i + 1) ThenB0B0 = B0(i) + (B0(i + 1) - B0(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B1B1 = B1(i) + (B1(i + 1) - B1(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B2B2 = B2(i) + (B2(i + 1) - B2(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B3B3 = B3(i) + (B3(i + 1) - B3(i)) * (nn - n(i)) / (n(i + 1) - n(i)) B4B4 = B4(i) + (B4(i + 1) - B4(i)) * (nn - n(i)) / (n(i + 1) - n(i)) End IfNext iBe = B0B0 + B1B1 * Pe + B2B2 * Pe ^ 2 + B3B3 * Pe ^ 3 + B4B4 * Pe ^ 4Qs = Pe * Be / (1.02 * 7 * ua)Picture1.PSet (ua, Qs), vbRed If Qs < Qmin ThenQmin = QsUj = uaEnd IfNext uaText1.Text = CInt(Uj * 100) / 100Text2.Text = CInt(Qmin * 100) / 100 End Sub2.数据图表:最高档等速百公里燃油消耗量曲线图:西华大学实验报告 第 页 次高档等速百公里燃油消耗量曲线图:。

基于VB与MATLAB的水轮机运转特性曲线绘制的研究

基于VB与MATLAB的水轮机运转特性曲线绘制的研究
44 Water Power Vol.33. No.9
化的点位时,按动按钮,数字化仪就将此时对应的命令符号 和该点的位置坐标值排列成有序的一组信息,然后通过接口 (多用串行接口)传送到计算机。使用数字化仪输入模型综合 特性曲线避免了手工输入的诸多麻烦,效率比手工输入要高 很多。但由于数字化仪器比较昂贵,使它的应用受到了一定 的限制。
绘制等吸出高度线的过程类似于绘制等效率线的过程, 只是采用插值来求出每一个插值点的空化系数 σ,再利用公 式 HS=10- kσH- D1/4,其中,HS 是吸出高度;k 是空化修正系 数;σ是空化系数;D1 是转轮直径。求相应的吸出高度,再找 出各相应点的出方值,然后由 contour(P,H,σ)绘制在 P~H 坐 标系即可。
(3)在所采集的离散点中的单位流量最大值和最小值之 间选取若干值 Q1′。Q1′为单位流量,为 m 维矢量,记为 Q1′= (Q11′,Q12′,…,Q1m′)。
(4)求由矢量 n1′=(n11′,n12′,…,n1k′)和 Q1′=(Q11′,Q12′,…, Q1m′)决定的各相交点的模型效率。通过采集到的离散点的单 位流量,单位转速和效率值再插值得到这些相交点的模型效 率。[QQ1,nn1]=meshgrid(Q1′,n1′),η=griddata(Q1,n1,η1,nn1,′cu- bic′)。其中,Q1,n1,η为采集到的离散点的单位流量、单位转 速和效率值;meshgrid 为 MATLAB 中用来产生“格点”矩阵的 函数;cubic 为指定的内插值算法三次立方插值。
图 1 图片容量坐标系与 BAC 模型特性曲线坐标系关系示意
图 1 中最外面的坐标系是图片容器的坐标系,BAC 坐标
系是模型特性曲线的坐标系,鼠标所能跟踪的坐标是图片容

VB语言和发动机特性曲线外文文献翻译、中英文翻译、外文翻译

VB语言和发动机特性曲线外文文献翻译、中英文翻译、外文翻译

门开度的大小,调节进入气缸的混合气的量来控制负荷的大小。

柴油机的负荷调节方式为“质调节”,在一定转速下通过调节向气缸内的喷射的燃油量来控制负荷的大小。

由于负荷调节方式以及燃烧方式不同,汽油机和柴油机的负荷特性也有所不同。

汽油机的指示热效率和柴油机指示热效率随负荷的变化规律相反。

汽油机燃油消耗率随负荷变化曲线比柴油机要陡,汽油机经济性指标比柴油机差,柴油机的燃油消耗率随负荷变化又缓慢又低,所以柴油机的经济性比汽油机的经济性强。

通过将发动机的各个参数绘制在一张图上形成发动机的万有特性曲线图,通过发动机万有特性曲线图可以看出在不同油耗下发动机运行的情况。

绘制万有特性曲线的方法有负荷特性法和速度特性法。

在绘制时,首先绘制不同转速下的负荷特性曲线组或者不同负荷下的速度特性曲线组,然后通过坐标转换,将负荷特性曲线组或者速度特性曲线组转换成等油耗的万有特性。

在等油耗万有曲线图上等油耗线越向外,燃油消耗率越高,经济性越差。

在水平方向上等间隔的油耗线稀疏,说明转速的变化对经济性影响较小,反之影响较大。

同理垂直方向上转速的等油耗线的疏密程度表明了发动机的经济性对负荷变化的适应性。

如果垂直方向上曲线分布密集,表明经济性对负荷变化较为敏感。

Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。

它源自于BASIC编程语言。

VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。

程序员可以轻松使用VB提供的组件快速建立一个应用序。

Visual Basic是一种可视化的编程语言,利用这种可视化技术进行编程,能使编程工作变得轻松快捷,摆脱了面向过程语言的许多细节,而是将主要精力集中在解决实际问题和设计友好界面上。

因此Visual Basic在国内外各个领域的应用非常广泛,许多计算机专业和非计算机专业的人员常用它来编制开发应用程序和软件。

用VB画曲线图

用VB画曲线图

'添加个picture1和command1Option ExplicitDim lngCenter As LongDim lngMax As LongDim lngPad&Dim PCurrent As POINT, PLast As POINTPrivate Type POINTx As Longy As LongEnd TypePrivate Sub Form_Load()lngCenter = (Picture1.Top + Picture1.Height) / 2lngMax = Picture1.HeightPLast.x = 0PLast.y = lngCenterDim i&For i = 0 To Picture1.Width Step 100Picture1.Line (i, 0)-(i, Picture1.Height), &HFFC0C0NextFor i = 0 To Picture1.Height Step 100Picture1.Line (0, i)-(Picture1.Width, i), &HFFC0C0NextPicture1.DrawWidth = 1.5Picture1.Line (0, lngCenter)-(Picture1.Width, lngCenter), vbBlue Picture1.DrawWidth = 1End SubPrivate Sub Timer1_Timer()PCurrent.x = PCurrent.x + 50RandomizePCurrent.y = Rnd * lngMaxPicture1.Line (PCurrent.x, PCurrent.y)-(PLast.x, PLast.y), vbRed PLast.x = PCurrent.xPLast.y = PCurrent.yEnd SubPrivate Sub Command1_Click()Timer1.Enabled = Not Timer1.EnabledEnd Sub效果图:如果需要带有点规律性可以将获得y的坐标稍加处理下:Private Function getRndY() As IntegerDim lngTmp%If intRnd = 0 ThenRandomizeintRnd = Rnd * 3 + 1End IfRandomizelngTmp = Rnd * lngCenterIf PLast.y > lngCenter ThengetRndY = lngCenter + lngTmpElsegetRndY = lngTmpEnd IfintCurRnd = intCurRnd + 1If intCurRnd > intRnd ThenRandomizeintRnd = Rnd * 3 + 1&nb ......Public Sub Draw_Sin _( _pic1 As PictureBox, _sngXFrom As Single, _sngXTo As Single, _)Dim x1 As Single, y1 As SingleDim x2 As Single, y2 As Singlex1 = sngXFromy1 = Sin(x1)For x2 = (sngXFrom + sngStep) To sngXTo Step 0.1y2 = Sin(x2)pic1.Line (ScaleX_MathToScreen(x1),ScaleY_MathToScreen(y1)) _-(ScaleX_MathToScreen(x2),ScaleY_MathToScreen(y2))x1 = x2y1 = y2NextEnd SubPrivate Function ScaleX_MathToScreen(sngX As Single) ScaleX_MathToScreen = 500+ sngX * 500End FunctionPrivate Function ScaleY_MathToScreen(sngY As Single)ScaleY_MathToScreen = 500- sngY * 500End FunctionOption ExplicitPrivate Sub Form_click()ClsDim i, j As SingleMe.Scale (-1, 10)-(25, -1) '定义坐标系,原点靠近左下角Line (-1, 0)-(25, 0) '画x轴Line (0, -1)-(0, 10) '画Y轴For i = -1 To 25 Step 1 '画X轴刻度If i <> 0 ThenLine (i, 0)-(i, 0.2)CurrentX = i - 0.3: CurrentY = -0.2Print iEnd IfNextFor j = -1 To 10 '画Y轴刻度If j <> 0 ThenLine (0, j)-(0.3, j)CurrentX = -0.7: CurrentY = j + 0.1Print jEnd IfNextCurrentX = -0.4: CurrentY = -0.2Print "0" '画原点CurrentX = 0.5: CurrentY = 9.5Print "Y"CurrentX = 24: CurrentY = 0.5Print "X"RandomizeCurrentX = 1: CurrentY = Format(Rnd * 10, "0.00")For i = 2 To 24Line -(i, Format(Rnd * 10, "0.00")) '这里是随机生成的数据!NextEnd Sub在Form1中加Picture1控件Option ExplicitPrivate Sub Form1.Picture1_click()ClsDim i, j As SingleMe.Scale (-1, 10)-(25, -1) '定义坐标系,原点靠近左下角with Form1.Picture1Line (-1, 0)-(25, 0) '画x轴Line (0, -1)-(0, 10) '画Y轴For i = -1 To 25 Step 1 '画X轴刻度If i <> 0 ThenLine (i, 0)-(i, 0.2)CurrentX = i - 0.3: CurrentY = -0.2Print iEnd IfNextFor j = -1 To 10 '画Y轴刻度If j <> 0 ThenLine (0, j)-(0.3, j)CurrentX = -0.7: CurrentY = j + 0.1Print jEnd IfNextCurrentX = -0.4: CurrentY = -0.2Print "0" '画原点CurrentX = 0.5: CurrentY = 9.5Print "Y"CurrentX = 24: CurrentY = 0.5Print "X"RandomizeCurrentX = 1: CurrentY = Format(Rnd * 10, "0.00")For i = 2 To 24Line -(i, Format(Rnd * 10, "0.00")) '这里是随机生成的数据!Nextend withEnd Sub还可以更完善.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要对车辆在运动的过程中进行分析要涉及到大量的编程,所以需要对车辆在运行过程中的各个参数进行计算和性能曲线的绘制,发动机的特性曲线就是研究对象之一。

发动机的特性曲线包括速度特性曲线、负荷特性曲线以及万有特性曲线。

对汽车在运动过程中的参数变化用Visual Basic来进行分析编程。

Visual Basic是一种面向对象的可视化的编程语言,通过这种可视化技术进行编程,可以让编程工作变得轻松方便,在编程的过程中不必面向对象进行繁琐的编程,而是将精力放在怎样优化设计方案上和对每个控件进行编程和设置属性,通过对控件编程来完成整个程序的有效运行,因此国内外Visual Basic在各个领域内广泛使用,编程人员通过操作Visual Basic来完成相应的开发任务,Visual Basic通过面向对象的基础来开发软件,并通过驱动事件的机制来完成对微软系统程序操作的响应。

Visual Basic内拥有大量的控件,可以用来设计界面和实现各种功能,用户可以通过拖拽工具栏里的控件来设计所需的界面,通过对各个控件进行编程来完成相应的功能,这么做不但在很大程度上减轻了工作量,使设计界面得到简化以及省略了面向对象的复杂程序,而且很大程度上提升了应用程序的运行效率和实现各个控件功能的可靠程度。

关键词:发动机外特性曲线Visual Basic 可视化AbstractIn the analysis of the process of vehicle operation will involve a lot of programming, so it need parameter calculation and drawing of performance curve, outside the engine characteristic curve is one of the research object. The characteristic curve of engine, including speed characteristic curve, the load characteristic curve and the universal characteristic curve.The car in motion parameters in the process of change to analysis programming with Visual Basic.Visual Basic is a Visual programming language, the use of this kind of visualization technology for programming, makes programming easy and quick, get rid of many of the details of the process oriented language, but will mainly focus on the solution actual problem and design a friendly interface. So the Visual Basic application in various fields at home and abroad is very broad, many computer professional and non-computer professional researchers often use it to prepare applications and software development. Its application development based on the object, and using event-driven mechanism realization of incident response for the Windows operating system. Visual Basic provides a large number of controls that can be used for interface design and implementation of various functions, users can be done through the drag and drop interface design, not only greatly reduce the workload and simplify the interface design process, and effectively improve the operation efficiency and reliability of the application.Keywords: The engine speed characteristic curve Visual Basic Visualization目录摘要 (I)Abstract ................................................................................................................. I I 第1章绪论. (1)1.1课题背景 (1)1.2课题应用情况 (2)1.3课题的目的和意义 (2)1.4本文的研究内容 (3)第2章发动机特性曲线图 (4)2.1 发动机特性曲线简介 (4)2.2 如何看懂发动机特性曲线 (4)2.2.1 看懂发动机速度特性曲线 (4)2.2.2 看懂发动机负荷特性曲线图 (6)2.2.3 看懂发动机万有特性曲线图 (7)2.3 Visual Basic 6.0的特点 (8)第3章运用Visual Basic 6.0绘制发动机特性曲线图 (9)3.1 发动机速度特性曲线绘制 (9)3.1.1 发动机速度曲线绘制原理 (9)3.1.2 发动机速度曲线绘制过程及程序 (9)3.2 发动机负荷特性曲线绘制 (17)3.3发动机万有特性曲线拟合 (22)总结 (24)致谢 (25)参考文献 (26)第1章绪论1.1 课题背景在车辆的运行过程中对车辆进行分析要涉及到大量的编程,并且需要对车辆在运行过程中的各个参数进行计算和性能曲线的绘制,发动机的特性曲线就是研究对象之一。

发动机的特性曲线包括发动机的速度曲线、发动机的负荷曲线和发动机的万有特性曲线。

发动机的速度特性曲线表示有效功率N(千瓦)、扭矩M(牛顿米)、比燃料消耗量g(克/千瓦小时)随发动机转速n而连续变化的表现[1]。

发动机的在节气门全开的情况下得到的曲线称为外特性曲线,在节气门只开一定程度下得到的曲线称为发动机的速度特性曲线[1]。

由于发动机的节气门可以开不同的程度,但是节气门全部开启只有一种情况,所以发动机可以有无数条速度特性曲线,但是只能有一条外特性曲线[1]。

发动机的负荷特性曲线是发动机在某一转速保持不变的情况下,使节气门在不同的开度,由此测出发动机在特定时间内油耗率和油耗量随负荷的变化而变化的动态,并由此画出发动机负荷特性曲线图[5]。

发动机万有特性曲线是表达多个参数的曲线图,通过在不同转速和负荷下的重要曲线画在万有特性曲线图上,从而可以看出在不同转速和负荷下发动机的比油耗率和燃油消耗量,从而发现汽车在某一转速和负荷下最经济的情况。

1.2课题应用情况在实际的生产生活中发动机运转时的数据较为复杂,可以通过图形将发动机的数据直观的反应到界面上,技术人员通过界面上的图像直观观察发动机的运转情况以及确定发动机的性能,找出发动机在某一速度和负荷下具有最佳的经济性和最低的燃油消耗率。

发动机的特性曲线图是表示的是汽车发动机在多个不同的运转速度下输出的功率和扭矩的数值,所以从中可以看出发动机的参数表现如何。

发动机的负荷特性曲线表明了在同一转速下发动机节气门在不同开度下的负荷变化,通过Visual Basic绘制图形可以更加直观的表明负荷随着节气门开度的变化而变化的状态,从而在某一转速下找到最佳的经济性及最低的燃油消耗。

通过Visual Basic绘制发动机的万有特性曲线图可以直观的看到发动机各个参数的之间的相互联系,综合各方面考虑得到汽车行驶的最好的状态。

1.3课题的目的和意义探寻发动机特性曲线的主要目的是找到发动机在转速相同的情况下,它的经济性指标和动力性指标的变化状况,即燃油消耗量和燃油消耗率等指标在发动机某一时间内的随发动机负荷的变化发生变化。

从发动机特性曲线图中可以判断出在不同转速下运转时发动机的功率也随之发生变化。

另外,在汽车使用的过程中速度特性的应用最广泛,因此在发动机实验过程中,经常使用速度特性当做性能指标评价的标准。

同时负荷特性有助于发现发动机在同一转速下负荷的变化,从而找出在同一转速下节气门开度在某个范围时负荷最低,汽车的经济性最好。

发动机的万有特性曲线则可以帮助使用者找出发动机在某一转速和负荷下燃油经济性为最佳的情况[2]。

所以研究发动机特性曲线的目的在于能够正确的评价发动机的特性,为其他工作机械和汽车正确选用动力提供依据。

同时,通过对发动机特性的评价与分析,为进一步改善发动机的性能使之与整车性能良好匹配提供有效的途径。

将研究的结果通过Visual Basic更加直观的表现出来,实现发动机特性曲线图的可视化表示,便于技术人员更加深入的了解发动机性能。

Visual Basic采用事件驱动的方式编写程序。

在编写程序的过程当中,编写者不需要给出按顺序的很精确的步骤,只需要编写相应的控件所要完成一定功能的程序。

通过各个控件的程序组合成整体的程序,而项目所要完成的功能由每个控件内编写好的程序来完成,从而降低了编程的工作量和难度,提高了程序开发的效率,节省了程序开发的时间。

1.4本文的研究内容为了评价发动机在不同情况下动力性参数和经济性参数还有工作过程中所能进行的完整程度,就一定要研究发动机随工况变化动力性、经济性指标随之发生变化的关系,并且用曲线的形式表达这种关系,这就是发动机特性曲线。

通过发动机速度特性曲线可以找出发动机在不同转速下工作时,其动力性能指标和经济性能指标的变化规律,从而能够找出特性曲线图上所对应的最大功率、最大扭矩和最低燃油消耗率时的转速,就可以确定发动机在最有利的转速范围内工作[7]。

发动机动态曲线所显示的即时数据是发动机的监视系统是完成人机界面友好的重要组成部分,可帮助技术人员了解发动机ECU内部工作情况,以方便观察发动机的运转情况,这样有利于对程序进行即时在线修改,从而能够使发动机性能匹配达到最佳[10]。

相关文档
最新文档