汽车理论曲线绘制VB编程代码
西华大学实验报告
3.2 实验记录(核心代码及调试过程)
1.核心代码:
'.............驱动力与行驶阻力平衡图
Private Sub Command1_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, j, n As Integer
Dim Ft, Ff, Fw, Umax, Uumax As Single
Picture1.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 20
Picture1.Line (i, 0)-(i, 200)
Picture1.CurrentX = i - 5: Picture1.CurrentY = -10: Picture1.Print i
Next i
For i = 1000 To 15000 Step 1000
Picture1.Line (0, i)-(1.5, i)
Picture1.CurrentX = -15: Picture1.CurrentY = i + 50: Picture1.Print i
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3
- 3.8445 * (n / 1000) ^ 4
For j = 1 To 5
Ft = Tq * i0 * ηt * x(j) / r
Ff = f * 9.8 * m
第 页
西华大学实验报告
Ua = 0.377 * r * n / (i0 * x(j))
Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2
Picture1.Circle (Ua, Ft), 0.1, vbBlue
Picture1.Circle (Ua, (Ff + Fw)), 0.1, vbRed
Umax = Umax
If Ua > Umax Then
Umax = Ua
Else
Umax = Umax
End If
Next j
Next n
Uumax = CInt(Umax * 100) / 100
Picture1.CurrentX = 40: Picture1.CurrentY = 16000: Picture1.Print "最高车速为:"; Uumax; "km/h"
End Sub
'.............爬坡度图
Private Sub Command2_Click()
Picture1.Cls
Picture1.DrawWidth = 1
Dim i, j, n As Integer
Dim xx, Ff, Fw, Ft, ii, imax, iimax As Single
Picture1.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 20
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 50 Step 10
Picture1.Line (0, i)-(2, i)
Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print i
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000) ^ 3
- 3.8445 * (n / 1000) ^ 4
For j = 1 To 5
Ft = Tq * i0 * ηt * x(j) / r
Ff = f * 9.8 * m
Ua = 0.377 * r * n / (i0 * x(j))
Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2
xx = (Ft - Ff - Fw) / (9.8 * m)
α = Atn(xx / Sqr(1 - xx * xx))
ii = 100 * Tan(α)
If ii > 0 Then
Picture1.Circle (Ua, ii), 0.1, vbBlue
End If
imax = imax
If ii > imax Then
imax = ii
Else
imax = imax
End If
Next j
第 页
西华大学实验报告
Next n
iimax = CInt(imax * 100) / 100
Picture1.CurrentX = 40: Picture1.CurrentY = 50: Picture1.Print "最大爬坡度为:"; iimax; "%"
End Sub
'...........动力特性图
Private Sub Command3_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, j, n As Integer
Dim Ft, Fw, D As Single
Picture1.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 20
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 20 To 80 Step 20
Picture1.Line (0, i)-(2, i)
Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print "0"; i / 200
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
For j = 1 To 5
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)
第 页
西华大学实验报告
^ 3 - 3.8445 * (n / 1000) ^ 4
Ft = Tq * i0 * ηt * x(j) / r
Ua = 0.377 * r * n / (i0 * x(j))
Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2
D = 200 * (Ft - Fw) / (m * 9.8)
If D > 0 Then
Picture1.Circle (Ua, D), 0.1, vbBlue
End If
Next j
Next n
End Sub
'.............功率平衡图
Private Sub Command4_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, j, n As Integer
Dim Pe, Pf, Pw As Single
Picture1.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 20
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 70 Step 10
第 页
西华大学实验报告
Picture1.Line (0, i)-(2, i)
Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print i
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
For j = 1 To 5
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)
^ 3 - 3.8445 * (n / 1000) ^ 4
Pe = Tq * n / 9550
Ua = 0.377 * r * n / (i0 * x(j))
Pf = (m * f * Ua / 3600) / ηt
Pw = (ca * Ua ^ 3 / 76140) / ηt
Picture1.Circle (Ua, Pe), 0.1, vbBlue
Picture1.Circle (Ua, (Pf + Pw)), 0.1, vbRed
Next j
Next n
End Sub
'...........外特性曲线
Private Sub Command5_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, n As Integer
Dim Pe As Single
Picture1.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 500
Picture1.Line (i, 0)-(i, 3)
Picture1.CurrentX = i - 200: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 20 To 180 Step 20
Picture1.Line (0, i)-(50, i)
Picture1.CurrentX = -300: Picture1.CurrentY = i + 3: Picture1.Print i
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)
^ 3 - 3.8445 * (n / 1000) ^ 4
Pe = Tq * n / 9550
Picture1.Circle (n, Pe), 2, vbRed
Picture1.Circle (n, Tq), 2, vbBlue
Next n
End Sub
第 页
西华大学实验报告 2.数据图
:
驱动力与行驶阻力平衡图:
动力特性图:
第 页
西华大学实验报告 爬坡度图:
发动机外特性曲线:
第 页
西华大学实验报告
发动机功率平衡图:
第 页
西华大学实验报告
3.2 实验记录(核心代码及调试过程)
1.核心代码:
'.........加速度的倒数曲线
Private Sub Command7_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, j, n As Integer
Dim Ff, Ft, Fw, a, δ As Single
Picture1.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 20
Picture1.Line (i, 0)-(i, 1.5)
Picture1.CurrentX = i - 5: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 140 Step 10
Picture1.Line (0, i)-(2, i)
Picture1.CurrentX = -10: Picture1.CurrentY = i + 1: Picture1.Print i / 10
Next i
Picture1.DrawWidth = 2
For n = 600 To 4000
For j = 1 To 5
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)
^ 3 - 3.8445 * (n / 1000) ^ 4
Ft = Tq * i0 * ηt * x(j) / r
Ua = 0.377 * r * n / (i0 * x(j))
第 页
西华大学实验报告
Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2
Ff = 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 Then
Picture1.Circle (Ua, 10 / a), 0.1, vbBlue
End If
Next j
Next n
End Sub
'..............直接挡加速时间曲线
Private Sub Command8_Click()
Picture1.DrawWidth = 1
Picture1.Cls
Dim i, n As Integer
Dim Ff, Ft, Fw, a, δ, t, tt As Single
Picture1.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 10
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 1.5: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 70 Step 10
Picture1.Line (0, i)-(1, i)
Picture1.CurrentX = -5: Picture1.CurrentY = i + 1: Picture1.Print i
第 页
西华大学实验报告
Next i
t = 0
For Ua = 0 To 70 Step 0.01
n = Ua * i0 * x(4) / 0.377 / r
If n >= 600 Then
Tq = -19.313 + 295.27 * (n / 1000) - 165.44 * (n / 1000) ^ 2 + 40.874 * (n / 1000)
^ 3 - 3.8445 * (n / 1000) ^ 4
Ft = Tq * i0 * ηt * x(4) / r
Fw = 0.5 * 1.2258 * ca * (Ua / 3.6) ^ 2
Ff = 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.6
Picture1.Circle (t, Ua), 0.1, vbBlue
End If
Next Ua
tt = CInt(t * 100) / 100
Picture1.CurrentX = 15: Picture1.CurrentY = 80: Picture1.Print "0-70(km/h)直接挡加速时间为:"; tt; "s"
End Sub
第 页
西华大学实验报告 2.数据图表:
加速度曲线图:
加速度倒数曲线:
第 页
西华大学实验报告
直接挡加速时间图:
第 页
西华大学实验报告
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) = 3804
B0(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.7
B1(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.291
B2(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.71113
B3(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.00075215
B4(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.000038568
Picture1.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 20
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 6: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 40 Step 10
第 页
西华大学实验报告
Picture1.Line (0, i)-(3, i)
Picture1.CurrentX = -12: Picture1.CurrentY = i + 1: Picture1.Print i
Next i
g = 3880 * 9.8
f = 0.013
CdA = 2.77
ηt = 0.85
i0 = 5.83
r = 0.367
Uamin = 0.377 * r * n(1) / (0.793 * i0)
Qmin = 100
Picture1.DrawWidth = 2
For ua = Uamin To 100 Step 0.01
Pe = (g * f * ua / 3600 + CdA * ua ^ 3 / 76140) / ηt
nn = 0.793 * i0 * ua / (0.377 * r)
For i = 1 To 7
If nn >= n(i) And nn <= n(i + 1) Then
B0B0 = 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 If
Next i
Be = B0B0 + B1B1 * Pe + B2B2 * Pe ^ 2 + B3B3 * Pe ^ 3 + B4B4 * Pe ^ 4
Qs = Pe * Be / (1.02 * 7 * ua)
Picture1.PSet (ua, Qs), vbBlue
If Qs < Qmin Then
Qmin = Qs
Uj = ua
第 页
西华大学实验报告
End If
Next ua
Text1.Text = CInt(Uj * 100) / 100
Text2.Text = CInt(Qmin * 100) / 100
End Sub
'..............次高挡百公里耗油量
Private Sub Command2_Click()
Picture1.Cls
Picture1.DrawWidth = 1
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) = 3804
B0(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.7
B1(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.291
B2(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.71113
B3(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.00075215
B4(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.000038568
Picture1.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 20
第 页
西华大学实验报告
Picture1.Line (i, 0)-(i, 1)
Picture1.CurrentX = i - 6: Picture1.CurrentY = -1: Picture1.Print i
Next i
For i = 10 To 40 Step 10
Picture1.Line (0, i)-(3, i)
Picture1.CurrentX = -12: Picture1.CurrentY = i + 1: Picture1.Print i
Next i
Picture1.DrawWidth = 2
m = 3880
g = 3880 * 9.8
f = 0.013
CdA = 2.77
ηt = 0.85
i0 = 5.83
r = 0.367
Qmin = 100
For ua = 25 To 100 Step 0.01
Pe = (g * f * ua / 3600 + CdA * ua ^ 3 / 76140) / ηt
nn = 0.793 * i0 * ua / (0.377 * r)
For i = 1 To 7
If nn >= n(i) And nn <= n(i + 1) Then
B0B0 = 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 If
Next i
Be = B0B0 + B1B1 * Pe + B2B2 * Pe ^ 2 + B3B3 * Pe ^ 3 + B4B4 * Pe ^ 4
Qs = Pe * Be / (1.02 * 7 * ua)
第 页
西华大学实验报告
Picture1.PSet (ua, Qs), vbRed
If Qs < Qmin Then
Qmin = Qs
Uj = ua
End If
Next ua
Text1.Text = CInt(Uj * 100) / 100
Text2.Text = CInt(Qmin * 100) / 100
End Sub
2.数据图表:
最高档等速百公里燃油消耗量曲线图:
第 页
西华大学实验报告
次高档等速百公里燃油消耗量曲线图:
第 页