Dim Umax As Double, Nmax As Double, V10 As Double, Vminrear As Double

'Umax以最高当速比时最高转速时设定为最高车速度

'V10 为最小稳定车速, Vminrear 为最小倒车速度

Dim Tqudongqiao As Double, Tqufa As Double '驱动桥最大输出扭矩,最大滑动阻力矩

Dim Vmax As Double, Nvmax As Double, Fmxqu As Double, Amxjia As Double, POmx As Double   'POmx最大爬坡度

'Vmax 最高车速  Nvmax 最高车速时对应转速

Dim T60 As Double '60公里加速时间

Dim kai As Integer '用于记录是否为第一次使用。

Dim REV() As Double     '对应转速

Dim Torque() As Double  '对应扭矩,发动机

Dim Power() As Double   '对应功率

Dim Tormax As Double, ntormax As Double   '最大扭矩,最大扭矩时对应转速

Dim Pemax As Double, npemax  As Double    '最大功率,最大功率时对应转速

''**************以上定义类变量********************

Public Function Getnum(strall As String) As String  '分解参数字符串,“:”后面的参数是数字返回值

Dim txtA As String

txtA = Trim(strall)

mytxt = Split(txtA, ":")

Getnum = Trim(mytxt(1))

End Function

Public Function T(Ni As Double)

'    Pemax = Text2.Text                  '额定功率       283

'    Np = Text3.Text                     '额定功率时转速 1900

'    Te = 9550 * Text2.Text / Text3.Text '额定功率时扭矩 1422.44

'    Ntq = Text5.Text                    '最大扭矩时转速 1200

'    Ttqmax = Text4.Text                 '最大扭矩       1800

'    ''以上初始化变量值

'    T = (Te - Ttqmax) * (Ni - Ntq) * (Ni - Ntq) / ((Np - Ntq) * (Np - Ntq)) + Ttqmax

'    '扭矩函数,二次抛物线拟合得到

Dim Cout

Dim i As Integer, j As Integer

Cout = List1.ListCount - 1

If Ni = REV(Cout) Then

i = Cout

Else

For i = 0 To Cout

If REV(i) > Ni Then Exit For

Next

End If

If i > Cout Then

MsgBox "输入参数有误,请重新输入。"

Else

'根据线性关系来求转速与扭矩有关系,

' Y=(Y2-Y1)(X-X1)/(X2-X1)+Y1 已知(x1,y1),(x2,y2)两个点时,求中间线性点公式

T = (Torque(i) - Torque(i - 1)) * (Ni - REV(i - 1)) / (REV(i) - REV(i - 1)) + Torque(i - 1)

End If

End Function

Public Function P(n)

'    Dim a, Np, Pmax, Pt, Nt As Double

'    Pt = Text5.Text * Text4.Text / 9550 '最大扭矩时的功率

'    Pmax = Text2.Text                   '额定功率       283

'    Np = Text3.Text                     '额定功率时转速 1900

'    Nt = Text5.Text                     '最大扭矩时转速

'    a = (Pt - Pmax) / ((Nt - Np) * (Nt - Np))

'    ''以上初始化变量值

'    P = a * (n - Np) * (n - Np) + Pmax

'功率函数,二次抛物线顶点法拟合得到,低速时值相对偏大

End Function

Public Function UtoN(U As Double, igi As Double)    '已知速度求发动机转速

'2013.9.11 增加

'公式N=2.65258*Un*ig*i0/r

Dim Unow As Double, I0 As Double, r As Double

I0 = Text21.Text: r = Text19.Text

UtoN = 2.65258 * U * igi * I0 / r

End Function

Public Function Fe(Ni As Double, igi As Double)       '汽车驱动力函数

'公式 F=Ttq*ig*i0*Nt/r

'Ttq为发动机扭矩 ig变速器传动比 i0主减速比 Nt传动效率 r车轮滚动半径

'text10.text 辅件消耗

Dim Nt As Double

Dim I0 As Double, r As Double

I0 = Text21.Text: r = Text19.Text

If igi = 1 Then

Nt = Text9.Text

Else

Nt = Text8.Text

End If

'单位 为KN

Fe = (1 - 0.01 * Text10.Text) * 0.001 * T(Ni) * igi * I0 * Nt / r

End Function

Public Function Fw(ByVal Ua As Double)                   '汽车行驶风阻

'公式 Fw=Cd*A*Ua*Ua/21.15  其中A为迎风面积

Fw = (Text20.Text * Text18.Text * Ua * Ua / 21.15) / 1000

'单位KN

End Function

Public Function Fz(Ua As Double)                   '汽车行驶阻力滚动+风阻

'滚动阻力=Wf

Dim Wg As Double

Wg = Text22.Text * 9.8

f = 0.0076 + 0.000056 * Ua

Fz = (Wg * f + Text20.Text * Text18.Text * Ua * Ua / 21.15) / 1000

'单位KN

End Function

Public Function Un(Ni2, igi) As Double  '汽车速度

'Ni2 为转速   igi为对应档位速比

Un = (0.377 * Text19.Text * Ni2) / (Text21.Text * igi)

End Function

Private Sub IniData()       '初始化转速,扭矩 及 功率 放到数组中

'扭矩公式Ttq=9550*Pe/n

'转速数组REV()  扭矩数组Torque()  功率Power()   每组对应

Dim MyS() As String

Pemax = 0

Tormax = 0

npemax = 0

ntormax = 0

Dim Cout As Integer, i As Integer

Dim ZB As Integer

Cout = List1.ListCount

If List1.ListCount > 0 Then

ReDim REV(Cout)

ReDim Torque(Cout)

ReDim Power(Cout)

For i = 0 To Cout - 1

'            ZB = InStr(List1.List(i), "-")

MyS = Split(List1.List(i), ",")

REV(i) = MyS(0): Power(i) = MyS(1): Torque(i) = MyS(2)

'            REV(i) = Left(List1.List(i), ZB - 1)

'            Power(i) = Right(List1.List(i), Len(List1.List(i)) - ZB)

'            Torque(i) = 9550 * Power(i) / REV(i)

If Power(i) > Pemax Then

Pemax = Power(i)

npemax = REV(i)

End If

If Torque(i) > Tormax Then

Tormax = Torque(i)

ntormax = REV(i)

End If

'Debug.Print "P=" & Power(i) & "  T=" & Torque(i) & "  n=" & REV(i) & "  i=" & i

Next i

Nmax = REV(Cout - 1) + 200

End If

'Debug.Print Pemax & "  tmax=" & Tormax

End Sub

Private Sub Command_backword_Click()

frmAbout.Show

'    Form1.Hide

form3.Hide

End Sub

Private Sub Command清空_Click()

List1.Clear

End Sub

Private Sub List1_Click()   '在列表框中单击一行,可以自动读取到文本框text2中

If List1.ListIndex <> -1 Then

Text2.Text = List1.List(List1.ListIndex)

End If

End Sub

'**************************************************************************

'  以上为公共程序部分 -----------------

'**************************************************************************

Private Sub Text6_Change()

If Text6.Text <> "" Then

If Text6.Text < 16 Then

For i = 1 To Text6.Text - 1

Label7(i).Visible = True

Text7(i).Visible = True

Next

For i = Text6.Text To 14

Label7(i).Visible = False

Text7(i).Visible = False

Next

ElseIf Text6.Text > "15" Then

MsgBox "变速器档位数只支持1-15,其他不支持。"

End If

End If

End Sub

Private Sub CommandExample_Click()

Dim aa As String

Dim bb() As String

Text1.Text = "DCiII385"

Text4.Text = 26000

Text6.Text = 6

Text3.Text = 6.4

Text7(0).Text = 7.04

Text7(1).Text = 4.1

Text7(2).Text = 2.48

Text7(3).Text = 1.56

Text7(4).Text = 1

Text7(5).Text = 0.74

Text8.Text = 0.84

Text9.Text = 0.95

Text18.Text = 6.34

Text19.Text = 0.526

Text20.Text = 0.62

Text21.Text = 4.875

Text22.Text = 32000

aa = "700,95,1250 |800,110,1300|900,130,1360|1000,155,1500|1100,190,1650|1200,212,1700|1300,230,1700|1400,250,1700|1500,268,1680|1600,270,1630|1700,274,1550|1800,273,1510|1900,275,1400|2000,265,1275|2100,250,1150"

bb = Split(aa, "|")

cc = UBound(bb)

List1.Clear

For i = 0 To cc

List1.AddItem bb(i)

Next

Picture1.Cls

End Sub

Private Sub Command_End_Click()

End

End Sub

Private Sub CommandCal_Click()

''  计算并预览的方法,先把每次计算的结果保存到文件  App.Path & "\" & Text1.Text & "计算结果.txt" 中,

''  全部计算完成之后,再把文件中的内容逐行读取保存到字符串变量St_b中,输入参数部分按这个方法来做,

''  计算部分采用计算一次先保存到Form2.Text1.Text 中,然后再分别追加到文件与St_b变量中,最后显示到Form2.Text2.Text

''  TXT文件内容要显示到文件窗口中,需要先读取到字符变量中,再一次性传给文本窗口

Dim AutoSaveExact As String

Dim Str_a As String, St_B As String

AutoSaveExact = App.Path & "\Autoexact.txt"     '用于存放每次计算之后的数据输入

'    MsgBox AutoSaveExact

form3.Caption = "汽车动力性计算绘图结果"

Dim IGmax As Double, n1 As Double

Dim Cout As Integer

Dim Fpowe As Double, Fallzu As Double

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1 '以0为起始,最高档位车速

Cout = List1.ListCount - 1

'以下求最高车速================从扭矩最大时的转速开始递增计算=================================

'Debug.Print "最高转速ntormax=" & ntormax

Nvmax = 0

For i = ntormax To REV(Cout)

n1 = i

Fpowe = Fe(n1, Text7(IGmax).Text)

Fallzu = Fz(Un(n1, Text7(IGmax).Text))

'Debug.Print "i=" & i & "  Fe=" & Fpowe & "  Fz=" & Fallzu

Vmax = Un(n1, Text7(IGmax).Text)

Nvmax = n1

If Fpowe < Fallzu Then

Vmax = Un(n1 - 1, Text7(IGmax).Text)

Nvmax = n1 - 1

'Debug.Print "i=" & i & "  Fe=" & Fe(n1, Text7(IGmax).Text) & "  Fz=" & Fz(Un(n1, Text7(IGmax).Text))

Exit For

End If

Next

'Debug.Print "最高转速max=" & Nvmax & "   最高车速=" & Vmax

'=====================================================================================

If Text1.Text = "" Then

Paths = App.Path & "\计算结果.txt"

Else

Paths = App.Path & "\" & Text1.Text & "计算结果.txt"

End If

'MsgBox paths

Call Option5_Click

Picture1.Cls

'''''''''''''''''''''''''以上计算一次''''''''''''''''''''''''''''''''

'    If Amxjia = 0 Then Call Option5_Click

'    If P0mx = 0 Then Call Option6_Click

'    If Fmxqu = 0 Then Call Option3_Click

Open Paths For Output As #1

Print #1, "┌──────────────────┐"

Print #1, "│  ***  以下是计算输入参数内容  ***  │"

Print #1, "├─────────┬────────┤"

Print #1, "│发动机或车辆型号:│" & Text1.Text & Space(16 - Len(Text1.Text)) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│迎风面积B*H(M^2):│" & N2Str(Text18.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│空气阻力系数:    │" & N2Str(Text20.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│车轮滚动半径(M): │" & N2Str(Text19.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│主减传动比I0:    │" & N2Str(Text21.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│满载总质量(kg):│" & N2Str(Text22.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│直接档传动效率:  │" & N2Str(Text9.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│其他档传动效率:  │" & N2Str(Text8.Text, 16) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│辅件消耗(%):   │ " & N2Str(Text10.Text, 15) & "│"

Print #1, "├─────────┼────────┤"

Print #1, "│驱动桥负荷(kg):│ " & N2Str(Text4.Text, 15) & "│"

Print #1, "└─────────┴────────┘"

Print #1, vbCrLf & "┌──────────────────┐" & vbCrLf & "│ -------以下为变速器各档参数------- │"

Print #1, "├─────────┬────────┤"

Print #1, "│" & Space(4) & "R档:" & Space(9) & "│" & Space(5) & N2Str(Text3.Text, 11) & "│"

Print #1, "├─────────┼────────┤"

For i = 0 To Text6.Text - 1

Print #1, "│" & Space(5 - Len(i + 1)) & i + 1 & "档:" & Space(9) & "│" & Space(5) & N2Str(Text7(i).Text, 11) & "│"

If i = Text6.Text - 1 Then

Print #1, "└─────────┴────────┘"

Else

Print #1, "├─────────┼────────┤"

End If

Next

''''''''''''''''''''''以下输出发动机参数''''''''''''''''''''''''''''''''''''''''''''''''

Print #1, vbCrLf & "┌──────────────────────┐"

Print #1, "│       ***  以下为发动机参数内容  ***       │"

Print #1, "├──────┬───────┬───────┤"

Print #1, "│ 转速(r/min)│   功率(kw/h) │  扭矩(N.m)   │ "

Print #1, "├──────┼───────┼───────┤"

For i = 0 To Cout

Print #1, "│    " & REV(i) & Space(8 - Len(Trim(REV(i)))) & "│      " & N2Str(Power(i), 8) & "│   " & N2Str(Torque(i), 10) & " │"

Next

Print #1, "└──────┴───────┴───────┘"

Close #1

'    Form2.Show==========================显示预览信息=================================

St_B = ""

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Call Option2_Click      '追加速度信息参数

Open Paths For Append As #1

Print #1, "****************以下为各档位 转速-速度 信息*******************"

Print #1, Form2.Text1.Text

Close #1

Call Option3_Click      '驱动力信息参数

Open Paths For Append As #1

Print #1, "****************以下为各档位 转速-驱动力 信息*******************"

Print #1, Form2.Text1.Text

Close #1

Call Option6_Click      '汽车爬坡度信息参数

Open Paths For Append As #1

Print #1, "****************以下为 各档转速-爬坡度 信息参数*******************"

Print #1, Form2.Text1.Text

Close #1

Call Option4_Click      '行驶阻力信息参数

Open Paths For Append As #1

Print #1, "*****以下为 速度km/h-行驶阻力kN(滚动阻力+风阻) 信息*****"

Print #1, Form2.Text1.Text

Close #1

Call Option7_Click      '行驶阻功率信息参数

Open Paths For Append As #1

Print #1, "*****以下为 速度km/h-行驶阻功率kW/h 信息*****"

Print #1, Form2.Text1.Text

Close #1

Call Option_AccT_Click      '加速时间速度信息参数

Open Paths For Append As #1

Print #1, "****************以下为 加速时间-速度 信息参数*******************"

Print #1, Form2.Text1.Text

Close #1

Call Option8_Click      '变速箱输出扭矩信息

Open Paths For Append As #1

Print #1, "*******以下为 发动机转速-变速箱输出扭矩 计算结果*******"

Print #1, Form2.Text1.Text

Close #1

Call Option9_Click      '驱动桥输出扭矩信息

Open Paths For Append As #1

Print #1, "*******以下为 发动机转速-驱动桥输出扭矩 计算结果*******"

Print #1, Form2.Text1.Text

Close #1

Open Paths For Append As #1    '计算传动轴转速

Print #1, "*******以下为 速度-传动轴转速关系 计算结果*******"

Print #1, "   车速(km/h) | 传动轴转速(rpm)    "

Print #1, String(30, "─")

For j = 1 To 30

S_n = Shaft_n(j * 5)

Print #1, Space(5) & N2Str(j * 5, 8) & "│   " & N2Str(Int(S_n), 8)

If 5 * j > Vmax Then Exit For

Next

Close #1

Open Paths For Append As #1

Print #1, "-------------以下为计算结果信息------------------------------------"

Print #1, "计算所得最高车  速:  " & Int(Vmax) & " km/h"

Print #1, "计算所得最大爬坡度:  " & Int(POmx) & " %"

Print #1, "计算所得最大驱动力:  " & Int(Fmxqu * 100) / 100 & " kN"

Print #1, "1档最小稳定车速:  " & N2Str(V10, 6) & " km/h"

Print #1, "倒车时最小稳定速度:  " & N2Str(Vminrear, 6) & " km/h"

Print #1, "计算所得最大加速度:  " & Int(Amxjia * 100) / 100 & " m/s^2"

Print #1, "驱动桥总输出扭矩可达:  " & Int(Tqudongqiao) & " N.m"

If Text4.Text > 0 Then

Print #1, "驱动桥最大滑动阻力矩:  " & N2Str(Tqufa, 6) & " N.m"

End If

Print #1, "最小稳定车速加速至60km/h时间:" & Int(T60 * 1000) / 1000 & " s" & vbCrLf

Close #1

Open Paths For Input As #1

Do While Not EOF(1)

Line Input #1, Str_a                    '-----读取一行-----

St_B = St_B & Space(8) & Chr(13) & Chr(10) & Str_a   '把之前保存到文件中的文本全部读入St_B变量中

Loop

Close #1

''''''''''''''''''''''以下读取文件到form2.text2.text中显示'''''''''''''''''''''''''''''''''

Form2.Height = 9090

Form2.Width = 12090

Form2.Text2.Height = 7890: Form2.Text2.Width = 12000

Form2.Command1.Left = 4500: Form2.Command1.Top = 8010

Form2.Show

Form2.Text2.Text = St_B

'''''''''''''''''''''''''''''''''''''''以下部分为自动保存数据用'''''''''''''''''''''''''''''''''''''''''''''''''''''

Open AutoSaveExact For Output As #2

Print #2, "******************以下是计算输入参数内容******************"

Print #2, "发动机或车辆型号:  " & Text1.Text

Print #2, "迎风面积B*H(M^2): " & Text18.Text

Print #2, "空气阻力系数:     " & Text20.Text

Print #2, "车轮滚动半径(M):  " & Text19.Text

Print #2, "主减传动比I0:     " & Text21.Text

Print #2, "满载总质量(kg):  " & Text22.Text

Print #2, "直接档传动效率:    " & Text9.Text

Print #2, "其他档传动效率:    " & Text8.Text

Print #2, "辅件消耗(%):    " & Text10.Text

Print #2, "驱动桥负荷(kg):    " & Text4.Text

Print #2, Chr(13) & Chr(10) & "******************以下为变速器各档参数******************"

For i = 0 To Text6.Text - 1

Print #2, i + 1 & "档:" & Text7(i).Text

Next

Print #2, "R档:" & Text3.Text

'''''''''''''''发动机数据''''''''''''''''''''''''''''

Print #2, Chr(13) & Chr(10) & "发动机转速(r/min) 对应功率(kW/h)"

Print #2, "每组数据中转速与功率之间以中横杠隔开"

Print #2, "******************以下开始为发动机数据********************"

For i = 0 To List1.ListCount - 1

Print #2, List1.List(i)

Next

Close #2

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

If Option1.Value = True Then

Call Option1_Click

ElseIf Option2.Value = True Then

Call Option2_Click

ElseIf Option3.Value = True Then

Call Option3_Click

ElseIf Option4.Value = True Then

Call Option4_Click

ElseIf Option5.Value = True Then

Call Option5_Click

ElseIf Option6.Value = True Then

Call Option6_Click

ElseIf Option7.Value = True Then

Call Option7_Click

ElseIf Option8.Value = True Then

Call Option8_Click

ElseIf Option9.Value = True Then

Call Option9_Click

ElseIf Option_AccT.Value = True Then

Call Option_AccT_Click

Else

MsgBox "请选择要计算的项目。"

End If

kai = 0

'    frmAbout.Hide

End Sub

Private Sub Command保存_Click()     '保存所有输入的参数-------------

Dim Paths As String

Dim i As Integer

'    Dim TextLine As String

' 设置“CancelError”为 True

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

' 设置标志

CommonDialog1.Filter = "Text Files" & "(*.txt)|*.txt|All Files (*.*)|*.*"

CommonDialog1.FilterIndex = 1

' 显示“保存”对话框

CommonDialog1.ShowSave

Paths = CommonDialog1.FileName

'    Open Paths For Output As #1

'        Print #1, "发动机转速(r/min) 对应功率(kW/r/min)"

'        Print #1, "每组数据中转速与功率之间以中横杠隔开"

'        Print #1, "******************以下开始为数据********************"

'        For i = 0 To List1.ListCount - 1

'            Print #1, List1.List(i)

'        Next

'    Close

Open Paths For Output As #2

Print #2, "******************以下是计算输入参数内容******************"

Print #2, "发动机或车辆型号:  " & Text1.Text

Print #2, "迎风面积B*H(M^2): " & Text18.Text

Print #2, "空气阻力系数:     " & Text20.Text

Print #2, "车轮滚动半径(M):  " & Text19.Text

Print #2, "主减传动比I0:     " & Text21.Text

Print #2, "满载总质量(kg):  " & Text22.Text

Print #2, "直接档传动效率:    " & Text9.Text

Print #2, "其他档传动效率:    " & Text8.Text

Print #2, "辅件消耗(%):    " & Text10.Text

Print #2, "驱动桥负荷(kg)选填:    " & Text4.Text

Print #2, Chr(13) & Chr(10) & "******************以下为变速器各档参数******************"

For i = 0 To Text6.Text - 1

Print #2, i + 1 & "档:" & Text7(i).Text

Next

Print #2, "R档:" & Text3.Text

'''''''''''''''发动机数据''''''''''''''''''''''''''''

Print #2, Chr(13) & Chr(10) & "发动机转速(r/min) 对应功率(kW/r/min)"

Print #2, "每组数据中转速与功率之间以中横杠隔开"

Print #2, "******************以下开始为发动机数据********************"

For i = 0 To List1.ListCount - 1

Print #2, List1.List(i)

Next

Close #2

ErrHandler:

' 用户按了“取消”按钮

Exit Sub

End Sub

Private Sub Command导入_Click()

Dim Paths As String

Dim TextLine As String

Dim ZB As Integer, i As Integer

Dim ROT As Single, POW As Single, Rota As Single, Tor As Single

' 设置“CancelError”为 True

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

' 设置标志

CommonDialog1.Filter = "Text Files" & "(*.txt)|*.txt|All Files (*.*)|*.*"

CommonDialog1.FilterIndex = 1

' 显示“打开”对话框

CommonDialog1.ShowOpen

Paths = CommonDialog1.FileName

List1.Clear         '先清空列表项

'===================以下打开文件导入参数=======================================

Open Paths For Input As #2

Debug.Print "open seek=" & Seek(2)

Do While Not EOF(2)

'        Line Input #2, textA   '-------------------------以下是计算输入参数内容--------------------------

Line Input #2, textA   '发动机型号:  DCiII385

'    Debug.Print textA

If InStr(textA, "发动机或车辆型号:") > 0 Then

Text1.Text = Getnum((textA))

Exit Do

End If

Loop

Seek #2, 1

Do While Not EOF(2)

Line Input #2, textA                           '迎风面积:B*H(M^2):6.34

'Debug.Print "dmtk=" & textA

If InStr(textA, "迎风面积") > 0 Then

Text18.Text = Getnum((textA))

Exit Do

End If

Loop

Line Input #2, textA                                '空气阻力系数:     .62

Text20.Text = Getnum((textA))

Line Input #2, textA                                '车轮滚动半径(M):  .546

Text19.Text = Getnum((textA))

Line Input #2, textA                                '主减传动比I0:     4.44

Text21.Text = Getnum((textA))

Line Input #2, textA                                '满载总质量(kg):  46000

Text22.Text = Getnum((textA))

Line Input #2, textA                                '直接档传动效率:    .95

Text9.Text = Getnum((textA))

Line Input #2, textA                                '间接档传动效率:    .85

Text8.Text = Getnum((textA))

Line Input #2, textA                                '辅件消耗(%):    5

Text10.Text = Getnum((textA))

Line Input #2, TextLine                                '驱动桥负荷(kg):    5

If InStr(TextLine, "驱动桥负荷") > 0 Then

Text4.Text = Getnum((TextLine))

End If

Seek #2, 1

i = 0

Do While Not EOF(2)

Line Input #2, textA

If InStr(textA, "档:") > 0 And InStr(textA, "R档:") = 0 Then

Text7(i).Text = Getnum((textA))

i = i + 1

ElseIf InStr(textA, "R档:") > 0 Then

Text3.Text = Getnum((textA))

End If

Loop

Text6.Text = i

Seek #2, 1  ''''''''''''''读取发动机参数

Do While Not EOF(2)

Line Input #2, TextLine

If InStr(TextLine, "以下开始为发动机数据") > 0 Then Exit Do

Loop

'        Debug.Print "文件号位置:" & Seek(2)

Dim MyS() As String

Do While Not EOF(2)   ' 循环至文件尾。

Line Input #2, TextLine   ' 读入一行数据并将其赋予某变量。

If InStr(TextLine, ",") > 0 Then

MyS = Split(TextLine, ",")

ROT = CSng(Trim(MyS(0)))    '取出转速

POW = CSng(Trim(MyS(1)))    '取出功率

Tor = CSng(Trim(MyS(2)))    '取出扭矩

TextLine = ROT & "," & POW & "," & Tor

'========去除项目中的空格,按转速从小到大排序============

If List1.ListCount > 0 Then

For i = List1.ListCount - 1 To 0 Step -1

MyS = Split(List1.List(i), ",")

Rota = CSng(MyS(0))

If Rota < ROT Then

List1.AddItem TextLine, i + 1

Exit For

End If

Next i

If i = -1 Then  '条件不满足时插入到第一条上

List1.AddItem TextLine, 0

End If

Else

List1.AddItem TextLine

End If

End If

'Text1.Text = Text1.Text & TextLine  ' 在立即窗口中显示数据。

Loop

Close #2

ErrHandler:

' 用户按了“取消”按钮

Close

Exit Sub

End Sub

Private Sub Command删除_Click()

Dim i As Integer

i = List1.ListIndex

On Error Resume Next

List1.RemoveItem List1.ListIndex

If i <> 0 Then

List1.ListIndex = i - 1

End If

End Sub

Private Sub Command添加_Click() '增加一行发动机参数

Dim TextLine As String

Dim ZB As Integer, i As Integer

Dim ROT As Single, POW As Single, Rota As Single, Tor As Single

Dim MyS() As String

TextLine = Text2.Text

If Text2.Text <> "" And InStr(Text2.Text, ",") > 1 And InStr(Text2.Text, "转速,功率") = 0 Then

MyS = Split(TextLine, ",")

ROT = CSng(Trim(MyS(0)))

POW = CSng(Trim(MyS(1)))

Tor = CSng(Trim(MyS(2)))

On Error Resume Next

TextLine = ROT & "," & POW & "," & Tor

'========去除项目中的空格,按转速从小到大排序============

If List1.ListCount > 0 Then

For i = List1.ListCount - 1 To 0 Step -1

MyS = Split(List1.List(i), ",")

Rota = CSng(MyS(0))

If Rota < ROT Then  '当输入行转速大于逐行搜索的转速时插入行

List1.AddItem TextLine, i + 1

Exit For

End If

Next i

If i = -1 Then  '条件不满足时插入到第一条上

List1.AddItem TextLine, 0

End If

Else

List1.AddItem TextLine

End If

ElseIf Text2.Text = "" Then

Text2.Text = ""

Else

Text2.Text = "转速,功率,扭矩之间以“,”隔开"

End If

End Sub

Private Sub Option_AccT_Click()

'2013-9-10 10:59 改进,增加速度-加速时间曲线功能,来求加速时间

'根据F=ma 来求得加速度 a ,转动惯量加速采用系数量来简化,delta为系数,低速时,系数大,速度高时系数相对小

'从一档换至六档总加速时间,一档时以最低稳定车速行驶

Dim k As Integer, i As Integer, j As Integer

Dim delta As Double

Dim IGmax As Double, Iginow As Double

Dim Acc0 As Double, Acc1 As Double, Accn As Double '存放加速度倒数用

Dim Vnow As Double, V0 As Double, V1 As Double, V2 As Double  '加速度倒数最大值设值,V0 V1 V2为速度

Dim Cout, Cout1, mall, X0, Y0, Nmid As Double

Dim Time_all As Double, T00 As Double, T01 As Double '使用时间

Dim Nroll As Double                     '换档时 次档位转速

Dim T59 As Double, T61 As Double, V59 As Double, V61 As Double

Dim Vmin As Double, Nvmin As Double, n1 As Double     '最低车速以及对应转速

k = 0

IGmax = Text6.Text - 1

Cout = List1.ListCount - 1

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 100

Picture1.CurrentY = 200

Picture1.Print "T(s)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "V(km/h)"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

V0 = Un(REV(0), Text7(0).Text)  '最低车速

Picture1.Print Text1.Text & "汽车加速时间-速度曲线" & "  最小稳定车速:" & N2Str(V0, 5) & " km/h"

Picture1.CurrentX = 1000

Picture1.CurrentY = 570

V0 = Un(REV(0), 1)

Picture1.ForeColor = RGB(0, 0, 255)       '设置蓝色

Picture1.Print "蓝线为直接档加速时间曲线,初始车速:" & N2Str(V0, 5) & " km/h"

Picture1.ForeColor = RGB(0, 0, 0)       '设置黑色

'===以转速为基本变量,求得对应速度,驱动力,根据速度可以求得行驶阻力

'    Nmax = Int((Text3.Text - 500) / 100)  '转速最大分度,每100转为一分度

'REV() 转速存放数据

'---------以下计算1档时最低车速======================================================================

For i = REV(0) To REV(Cout)

n1 = i

If Fe(n1, Text7(0).Text) > Fz(Un(n1, Text7(0).Text)) Then   '当驱动力>行驶阻力时,就有车速

Vmin = Un(n1, Text7(0).Text)

V10 = Vmin

Nvmin = n1

'            MsgBox "速度max=" & Vmax & " | 转速=" & Nvmax

'Debug.Print "1档最小车速Vmin=" & Vmin & "  Nvmin=" & Nvmin

Exit For

End If

Next    '=====================================================================================

Umax = Un(REV(Cout), Text7(IGmax).Text)

femax = Fe(ntormax, Text7(0).Text)      '最大扭矩时驱动力最大

kdx = (6915 - 600) / Umax

mall = Text22.Text                      '总质量

'    amax = Femax / mall * 1000              '最大加速度

kdy = (4755 - 300) / 150                '缇与Y坐标之比,每刻度对应多少缇,时间最大值设置为150秒

Time_all = 0                            '总用时置0

'    V0 = Un(REV(0), Text7(0).Text)          '最低车速,以输入最小转速为最小车速

V0 = Vmin

Form2.Text1.Text = "I档起步加速到最高档-速度时间参数:" & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & Space(2) & "I档最小稳定车速:" & N2Str(V0, 8) & "km/h" & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & Space(5) & "时间(s)    速度(km/h)" & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & String(15, "─") & vbCrLf     '│

For i = 0 To IGmax      '每档位计算开始循环,

Iginow = Text7(i).Text

If i = 0 Then

delta = 1.4

ElseIf i = 1 Then

delta = 1.3

ElseIf i = 2 Then

delta = 1.2

Else

delta = 1.1

End If

If i = 0 Then

V0 = Un(REV(0), Iginow)                  '当前档位初始车速

Nmid = (REV(0) + REV(1)) / 2

V1 = Un((REV(0) + REV(1)) / 2, Iginow)   '中间转速速度

X0 = V0 * kdx + 510

Acc0 = 1 / (1000 * (Fe(REV(0), Iginow) - Fz(V0)) / mall / delta) '加速度倒数

Acc1 = 1 / (1000 * (Fe(Nmid, Iginow) - Fz(V1)) / mall / delta)

If Acc0 < 0 Then Acc0 = Acc1        '启动力不足时

T00 = 5 * (Acc0 + Acc1) * (V1 - V0) / 36   '计算单位要统一,速度需要换算为m/s计算才行

Time_all = Time_all + T00           '累积时间一次,

Form2.Text1.Text = Form2.Text1.Text & Space(5) & N2Str(Time_all, 8) & "│   " & N2Str(V1, 8) & vbCrLf

Y0 = kdy * Time_all

End If

'Debug.Print "加速度倒数Acc0=" & Acc0 & "   acc1=" & Acc1 & "   时间T00=" & T00 & "   V1=" & V1 & "  V0=" & V0

'Debug.Print "y0=" & Y0

'********************************************************************************************************************

'        If Y0 > 100 Then Y0 = 100

If i > 0 Then  '进行换档位速度判断,确定新进档位转速所处位置

For j = 1 To Cout

Nroll = UtoN(V1, Iginow)

If Nroll < REV(j) Then

Cout1 = j: Exit For

End If

Next

Else

Cout1 = 1

End If

'Debug.Print "nroll=" & Nroll & "   cout1=" & Cout1

''''''''''''''''''''''''''''''以上确定次档位转速及起始速度----------------

For j = Cout1 To Cout  '二层循环,计算各输入点位情况

V2 = Un(REV(j), Iginow)

X1 = V2 * kdx + 510

Acc0 = Acc1

Acc1 = 1 / (1000 * (Fe(REV(j), Iginow) - Fz(V2)) / mall / delta) '第一点加速度倒数

If Acc1 < 0 Then Exit For

T01 = 5 * (Acc0 + Acc1) * (V2 - V1) / 36

If Acc0 < 0 Or Acc1 < 0 Or (Time_all + T01) > 150 Or Acc0 > 40 Or Acc1 > 40 Then Exit For '没有加速能力时退出循环

If i < IGmax Then '判断换档加速度相等时间情况,换档时机,次档位加速度>当前档位加速度时,换进下一档

Nroll = UtoN(V2, Text7(i + 1).Text)

If Nroll > REV(0) And Nroll < REV(Cout) Then

Accn = 1 / (1000 * (Fe(Nroll, Text7(i + 1).Text) - Fz(V2)) / mall / delta)

If Acc1 > Accn Then Exit For

End If

End If

Time_all = Time_all + T01               '累计时间2次

Form2.Text1.Text = Form2.Text1.Text & Space(5) & N2Str(Time_all, 8) & "│   " & N2Str(V2, 8) & vbCrLf

Y1 = kdy * Time_all

'''''''''''''''''''''''''''求60公里加速时间'''''''''''''''''''''''''''''''''''''''''''''''''

If k = 0 And V2 > 60 Then

V59 = V1: V61 = V2

T59 = Time_all - T01

T61 = Time_all

k = 1

T60 = Y_Line(60, V59, T59, V61, T61)

'                Debug.Print "T60=" & T60

End If

'           If i = 0 And Y1 > Y0 And k = 0 Then

'                k = 1: Amxjia = Y0 / kdy

'           ''''''''''''画最大加速度横线''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'                Picture1.DrawStyle = 2

'                Picture1.CurrentX = 810

'                Picture1.CurrentY = 5265 - Y0 - 210

'                Picture1.Print "Min:" & Int(Amxjia * 100) / 100

'                Picture1.Line (X1, 5265 - Y0)-Step(-X1 + 510, 0), RGB(255, 100, 0)

'                Picture1.DrawStyle = 0

'           ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'           End If

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0) '画速度-加速时间曲线(后半周期)

'           If j = 1 Then

'                Picture1.CurrentX = X1 - 150 - i * 15

'                Picture1.CurrentY = 5235 - Y1 - i * 15

'                Picture1.Print "I" & i + 1

'           End If

X0 = X1: Y0 = Y1     '记录后点位置到前点,

'====================以下开始前半周期================================

If j < Cout Then

V0 = V2

Nmid = (REV(j) + REV(j + 1)) / 2

V1 = Un(Nmid, Iginow)

Acc0 = 1 / (1000 * (Fe(REV(j), Iginow) - Fz(V0)) / mall / delta)

Acc1 = 1 / (1000 * (Fe(Nmid, Iginow) - Fz(V1)) / mall / delta)

'    Debug.Print "j=" & N2Str(j) & "  v1=" & N2Str(V1, 8) & "  v0=" & N2Str(V0, 8) & "  t00=" & N2Str(T00) & "  Time=" & Time_all & " acc0=" & N2Str(Acc0)

T00 = 5 * (Acc0 + Acc1) * (V1 - V0) / 36

If Acc0 < 0 Or Acc1 < 0 Or (Time_all + T00) > 150 Or Acc0 > 40 Or Acc1 > 40 Then Exit For '没有加速能力时退出循环

Time_all = Time_all + T00

'               Form2.Text1.Text = Form2.Text1.Text & Space(5) & N2Str(Time_all, 18) & N2Str(V1, 8) & vbCrLf

X1 = V1 * kdx + 510

Y1 = kdy * Time_all

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0)    '画速度-加速时间曲线(前半周期)

X0 = X1: Y0 = Y1

Else

V0 = V1: V1 = V2

End If

Next

Next

'''''''''''''''''''''''''''直接档加速时间曲线'''''''''''''''''''''''''''''''''''

V0 = Un(REV(0), 1)  '直接档初始速度

delta = 1.1

Time_all = 0

T00 = 0

X0 = V0 * kdx + 510

Y0 = kdy * Time_all

Form2.Text1.Text = Form2.Text1.Text & vbCrLf & Space(2) & "直接档初始速度:" & N2Str(V0, 8) & "km/h" & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & Space(5) & "时间(s)     速度(km/h)" & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & String(15, "─") & vbCrLf     '│

Form2.Text1.Text = Form2.Text1.Text & Space(5) & N2Str(Time_all, 8) & "│   " & N2Str(V0, 8) & vbCrLf

For j = 0 To Cout - 1

V0 = Un(REV(j), 1)

V1 = Un(REV(j + 1), 1)

Acc0 = 1 / (1000 * (Fe(REV(j), 1) - Fz(V0)) / mall / delta)

Acc1 = 1 / (1000 * (Fe(REV(j + 1), 1) - Fz(V1)) / mall / delta)

If Acc0 > 0 And Acc1 > 0 Then

T00 = 5 * (Acc0 + Acc1) * (V1 - V0) / 36

Time_all = Time_all + T00

X1 = V1 * kdx + 510

Y1 = Time_all * kdy

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(0, 0, 255)    '画直接档,速度-加速时间曲线

X0 = X1: Y0 = Y1

Form2.Text1.Text = Form2.Text1.Text & Space(5) & N2Str(Time_all, 8) & "│   " & N2Str(V1, 8) & vbCrLf

End If

'Debug.Print "加速度倒数Acc0=" & Acc0 & "   acc1=" & Acc1 & "   时间T00=" & T00 & "   V1=" & V1 & "  V0=" & V0

Next

'    Form2.Show

'    Form2.Text1.Width = 12000: Form2.Text1.Height = 7500: Form2.Text2.Visible = False

'========以上画各档位的加速度曲线图===========================

Xfen = Int((Umax / 8) / 5) * 5

Yfen = 10

If Xfen = 0 Then Xfen = 5

'MsgBox "Yfen=" & yfen & "|  Femax=" & Femax & "| amax=" & amax

For i = 0 To 16

If 510 + Xfen * i * kdx > 7425 Then Exit For

Picture1.CurrentY = 5295

Picture1.CurrentX = 300 + kdx * i * Xfen

Picture1.Print Xfen * i

Picture1.Line (510 + kdx * i * Xfen, 5265)-(510 + kdx * i * Xfen, 5190)

Picture1.DrawStyle = 2      '画点线

Picture1.Line (510 + kdx * i * Xfen, 5265)-Step(0, -4500)

Picture1.DrawStyle = 0      '画实线

Next

''====================以上画速度V刻度线==============================

For i = 1 To 15

Picture1.CurrentX = 100

Picture1.CurrentY = 5190 - kdy * Yfen * i

If 5265 - kdy * Yfen * i < 510 Then Exit For

Picture1.Print Yfen * i

'MsgBox yfen * i

Picture1.Line (510, 5265 - kdy * Yfen * i)-(610, 5265 - kdy * Yfen * i), RGB(255, 0, 0)

Picture1.DrawStyle = 2      '画点线

Picture1.Line (610, 5265 - kdy * Yfen * i)-Step(6800, 0), RGB(0, 0, 0)

Picture1.DrawStyle = 0

Next

''====================以上画加速度 Y 刻度线 时间====================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车加速度时间与速度曲线.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Form_Load()

Dim Autopath As String, SavePath As String

Dim TextLine As String

Dim ROT As Single, POW As String, Tor As Single, Rota As Single

Autopath = App.Path & "\Autoexact.txt"

SavePath = App.Path & "\Save"

'Debug.Print "dir=" & Dir(SavePath, vbDirectory)

For i = 0 To 14

Text7(i).Text = ""

Next

Text3.Text = "" '倒档置空参数

Text2.Text = "" '发动机参数输入置空

If Dir(Autopath) <> "" Then

Open Autopath For Input As #2

'Debug.Print "open seek=" & Seek(2)

Do While Not EOF(2)

'        Line Input #2, TextLine   '-------------------------以下是计算输入参数内容--------------------------

Line Input #2, TextLine   '发动机型号:  DCiII385

'    Debug.Print TextLine

If InStr(TextLine, "发动机或车辆型号:") > 0 Then

Text1.Text = Getnum((TextLine))

Exit Do

End If

Loop

Seek #2, 1

Do While Not EOF(2)

Line Input #2, TextLine                           '迎风面积:B*H(M^2):6.34

'Debug.Print "dmtk=" & TextLine

If InStr(TextLine, "迎风面积") > 0 Then

Text18.Text = Getnum((TextLine))

Exit Do

End If

Loop

Line Input #2, TextLine                                '空气阻力系数:     .62

Text20.Text = Getnum((TextLine))

Line Input #2, TextLine                                '车轮滚动半径(M):  .546

Text19.Text = Getnum((TextLine))

Line Input #2, TextLine                                '主减传动比I0:     4.44

Text21.Text = Getnum((TextLine))

Line Input #2, TextLine                                '满载总质量(kg):  46000

Text22.Text = Getnum((TextLine))

Line Input #2, TextLine                                '直接档传动效率:    .95

Text9.Text = Getnum((TextLine))

Line Input #2, TextLine                                '间接档传动效率:    .85

Text8.Text = Getnum((TextLine))

Line Input #2, TextLine                                '辅件消耗(%):    5

Text10.Text = Getnum((TextLine))

Line Input #2, TextLine                                '驱动桥负荷(kg):    5

If InStr(TextLine, "驱动桥负荷") > 0 Then

Text4.Text = Getnum((TextLine))

End If

Seek #2, 1

i = 0

Do While Not EOF(2)

Line Input #2, TextLine

If InStr(TextLine, "档:") > 0 And InStr(TextLine, "R档:") = 0 Then

Text7(i).Text = Getnum((TextLine))

i = i + 1

ElseIf InStr(TextLine, "R档:") > 0 Then

Text3.Text = Getnum((TextLine))

End If

'            Debug.Print "当前text :" & TextLine

Loop

Text6.Text = i

Seek #2, 1  ''''''''''''''读取发动机参数

Do While Not EOF(2)

Line Input #2, TextLine

If InStr(TextLine, "以下开始为发动机数据") > 0 Then Exit Do

Loop

'        Debug.Print "文件号位置:" & Seek(2)

Do While Not EOF(2)   ' 循环至文件尾。

Line Input #2, TextLine   ' 读入一行数据并将其赋予某变量。

If InStr(TextLine, ",") > 0 Then

MyS = Split(TextLine, ",")

ROT = CSng(Trim(MyS(0)))

POW = CSng(Trim(MyS(1)))

Tor = CSng(Trim(MyS(2)))

TextLine = ROT & "," & POW & "," & Tor

'========去除项目中的空格,按转速从小到大排序============

If List1.ListCount > 0 Then

For i = List1.ListCount - 1 To 0 Step -1

MyS = Split(List1.List(i), ",")

Rota = CSng(MyS(0))

If Rota < ROT Then

List1.AddItem TextLine, i + 1

Exit For

End If

Next i

If i = -1 Then  '条件不满足时插入到第一条上

List1.AddItem TextLine, 0

End If

Else

List1.AddItem TextLine

End If

End If

'Text1.Text = Text1.Text & TextLine  ' 在立即窗口中显示数据。

Loop

Close #2

Else

'    Form3.Hide

'    frmAbout.Show

Text1.Text = ""

Text2.Text = ""

'    Text3.Text = ""

Text4.Text = ""

'    Text5.Text = ""

Text6.Text = ""

For i = 0 To 14

Text7(i).Text = ""

Next

Text8.Text = 0.84

Text9.Text = 0.95

Text10.Text = 5

Text18.Text = 6.34

Text19.Text = 0.526

Text20.Text = 0.62

Text21.Text = ""

Text22.Text = ""

kai = 0

End If

Fmxqu = 0: Amxjia = 0: POmx = 0

If Dir(SavePath, vbDirectory) = "" Then

MkDir (SavePath)

End If

'Fmxqu 最大驱动力   Amxjia最大加速度   POmx最大功率

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Call Command添加_Click

Text2.Text = ""

End If

End Sub

'******************************************************************************************************'

'‘’‘’‘’‘’‘’以下为计算程序

'

'******************************************************************************************************

Private Sub Option1_Click()     '发动机特性曲线

Dim kdx As Double, kdy As Double

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 180

Picture1.CurrentY = 270

Picture1.Print "T(N.M)"

Picture1.CurrentX = 30

Picture1.CurrentY = 5265

'Picture1.Print "原点O"

Picture1.CurrentX = 7125

Picture1.CurrentY = 270

Picture1.Print "Pe";

Picture1.Print "(kW)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "N(rpm )"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "发动机功率-扭矩曲线图"

'==================================================================================

'VB中画图原点在左上角,原点要移到左下角,Y坐标要根据总高度来取负值。

'画两框留510*2缇,上下也各510缇

''转速数组REV()  扭矩数组Torque()  功率Power()   每组对应

'==================================================================================

Nmax = REV(List1.ListCount - 1)         '额定转速减500转,每100转为单位刻度

kdx = 6915 / REV(List1.ListCount - 1)   '单位转速对应缇值

kdy = (4755 - 900) / Tormax                   '单位扭矩对应缇值,预留600缇为上当空隙  4155

X0 = 300 + 510: Y0 = 5265 - Torque(0) * kdy  '设定rev(0)转为最低转速,X坐标从300+510转开始

Picture1.ForeColor = RGB(255, 0, 0)     '设置红色

Picture1.CurrentX = X0 - 120

Picture1.CurrentY = Y0 - 180

Picture1.Print "T"

Picture1.ForeColor = RGB(0, 0, 0)       '设置黑色

'=========画“T”字=============================

For i = 1 To List1.ListCount - 1

X1 = 300 + 510 + (REV(i) - REV(0)) * kdx

Y1 = 5265 - Torque(i) * kdy

Picture1.Line (X0, Y0)-(X1, Y1), RGB(255, 0, 0)

X0 = X1: Y0 = Y1

Next

'Tormax 最大扭矩,ntormax最大扭矩时转速====以上画扭矩曲线====================================

X1 = (ntormax - REV(0)) * kdx                                       '转速对应缇值

Y1 = Tormax * kdy                                                   '扭矩对应缇值

Picture1.DrawStyle = 2                                              '画点线

Picture1.Line (810 + X1, 4755 + 510)-Step(0, -Y1), RGB(255, 0, 0)   '画Y竖虚线,STEP表示相对坐标

Picture1.Line (510, 5265 - Y1)-Step(X1, 0), RGB(255, 0, 0)          '画X横虚线

Picture1.CurrentX = 810 + X1 - 500

Picture1.CurrentY = 5265 - Y1 - 200

Picture1.Print "(" & ntormax & "," & Int(Tormax + 0.5) & ")"            '写坐标值

Picture1.DrawStyle = 0

'以上画扭矩曲线最大值====起至坐标 ==================================================

Nkd = Int((REV(List1.ListCount - 1)) / 10 / 50) * 50  '最大转速,转速分度,50的倍数

For i = 0 To 30

Picture1.CurrentY = 5265 + 30

Picture1.CurrentX = 610 + kdx * i * Nkd                  '设置写转速值字的起点

If 810 + Nkd * i * kdx > 7425 Then Exit For

Picture1.Print REV(0) + Nkd * i                          '写转速值

Picture1.Line (810 + Nkd * i * kdx, 5265)-Step(0, -100)  '画刻度

Next

'以上循环画X坐标刻度及写转速值====800转为起始点,右平移300缇=============================================

Tfen = Int((Tormax / 10) / 50) * 50

For i = 1 To 30

Picture1.CurrentX = 45

Picture1.CurrentY = 5175 - kdy * i * Tfen

If 5265 - kdy * Tfen * i < 510 Then Exit For

Picture1.Print Tfen * i

Picture1.Line (510, 5265 - kdy * Tfen * i)-Step(100, 0), RGB(255, 0, 0)

Next

'以上画左侧Y坐标刻度,扭矩刻度==========================================================

kdy = (4755 - 300) / Pemax                      'pemax 最功率,单位功率对应缇值 区间以 4755-300 来计算

X0 = 300 + 510: Y0 = 5265 - Power(0) * kdy      '计算起点坐标

For i = 0 To List1.ListCount - 1

X1 = 810 + (REV(i) - REV(0)) * kdx

Y1 = 5265 - Power(i) * kdy

Picture1.Line (X0, Y0)-(X1, Y1)

X0 = X1: Y0 = Y1

Next

Picture1.CurrentX = X0 + 45

Picture1.CurrentY = Y0 - 180

Picture1.Print "Pe"

'==========以上画功率曲线图==============================================

X1 = (npemax - REV(0)) * kdx          '转速对应缇值

Y1 = Pemax * kdy                      '扭矩对应缇值

Picture1.DrawStyle = 2

Picture1.Line (810 + X1, 5265)-Step(0, -Y1)                         '画Y虚线

Picture1.Line (810 + X1, 5265 - Y1)-Step(6915 - 300 - X1, 0)        '画X横虚线

Picture1.CurrentX = 510 + X1

Picture1.CurrentY = 5265 - Y1 - 200

Picture1.Print "(" & npemax & "," & Pemax & ")"  '写坐标值

Picture1.DrawStyle = 0

'================以上画功率最大值坐标对应线===============================================

Yfen = Int(Pemax / 10 / 20) * 20

If Yfen = 0 Then Yfen = 20

For i = 1 To 20

Picture1.CurrentX = 7390

Picture1.CurrentY = 5175 - kdy * i * Yfen

If 5265 - kdy * Yfen * i < 510 Then Exit For

Picture1.Print Yfen * i

Picture1.Line (7325, 5265 - kdy * Yfen * i)-Step(100, 0)

Next

' 以上画功率刻度线=================================================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "发动机特性曲线.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Option2_Click()     '汽车速度-转速曲线

'2013.12.16 修正转速与车速度图表显示问题,原来当转速相隔不是100时可能会不正常显示,现采用输入点直接计算缇值方法,精确计算。

'2015.12.02 修正最高车速计算,当驱动力一直大于阻力时,最高车速不正确问题,转速刻度与车速对应出错问题

Dim IGmax As Double, n1 As Double, Vt As Double, Nstr As String, S_v As String, S_i As String, Lens As Integer

Dim Cout

Dim Xmax As Double, Ymax As Double  '最高车速时 X Y 缇值

Dim VmaxL As Boolean '设置画最高车速开关

VmaxL = False

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1 '以0为起始

Cout = List1.ListCount - 1

'---------以下计算1档时最低车速=============================================================================

For i = REV(0) To REV(Cout)

n1 = i

If Fe(n1, Text7(0).Text) > Fz(Un(n1, Text7(0).Text)) Then

V10 = Un(n1, Text7(0).Text)

'Debug.Print "最好小车速:" & V10

Exit For

End If

Next

'---------以下计算1档时最小倒车稳定车速======================================================================

For i = REV(0) To REV(Cout)

n1 = i

If Fe(n1, Text3.Text) > Fz(Un(n1, Text3.Text)) Then

Vminrear = Un(n1, Text3.Text)

'Debug.Print "最小倒车车速:" & Vminrear

Exit For

End If

Next

'---------以下求最高车速=============最高档位置时的最大速===从扭矩最大时的转速开始计算=======================

For i = ntormax To REV(Cout)

n1 = i

Vmax = Un(n1, Text7(IGmax).Text)    '如果转速到达 最高设定还没有出现驱动力小于行驶阻力的情况,则最高设定转速时就是最大车速

Nvmax = n1

If Fe(n1, Text7(IGmax).Text) < Fz(Un(n1, Text7(IGmax).Text)) Then       '当驱动力小于行驶阻力时得到最高车速

Vmax = Un(n1 - 1, Text7(IGmax).Text)

Nvmax = n1 - 1

Exit For

End If

Next

'=============================================================================================================

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B '画方框,起点510,510 左上角为0点,长6915,高4755

Picture1.CurrentX = 180

Picture1.CurrentY = 200

Picture1.Print "V(km/h)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "N(rpm )"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车各档速度-转速曲线图"

'    Nmax = Int((Text3.Text - 500) / 100)                   '以比怠速小两个刻度为最大值 转速刻度最大格数,每100转取一个画点

Umax = Un(REV(Cout), Text7(IGmax).Text)                 '最高车速,以最高档,最高转速运行时产生最高车速(虚)

kdx = 6915 / REV(Cout)                                  '单位转速对应缇值,text3.text 额定功率转速

'Debug.Print " 转速值=" & REV(Cout) & "   kdx=" & kdx

kdy = (4755 - 600) / Umax                               '单位速度对应多少缇值

'Debug.Print "cout=" & Cout & "  igmax=" & IGmax & " umax=" & Umax & " kdx=" & kdx & "  rev(cout)=" & REV(Cout)

Nkd = Int((REV(Cout)) / 10 / 50) * 50   'text3 额定功率时转速,转速分度,50的倍数

If Nkd = 0 Then Nkd = 50

'为了显示需要,将转速左移一单元刻度

'''----------以下为转速每一转为基数求得各参数的方法,-----------------------------------------

For i = 0 To IGmax

X0 = 510 + (REV(0) - Nkd) * kdx: Y0 = 5265 - Un(REV(0), Text7(i).Text) * kdy

For j = REV(0) To REV(Cout) Step 10

X1 = 510 + kdx * (j - Nkd)

Y1 = 5265 - kdy * Un(j, Text7(i).Text)

If Un(j, Text7(i).Text) < Vmax Then

Picture1.Line (X0, Y0)-(X1, Y1)

Else

'''''''''''''''''''''''''画最高车速度对应值'''''''''''''''''''''''''''''''''''''''''''

If VmaxL = False Then

Xmax = 510 + (Nvmax - Nkd) * kdx

Ymax = 5265 - Vmax * kdy

Picture1.DrawStyle = 2

Picture1.CurrentX = 810

Picture1.CurrentY = Ymax - 210

Picture1.Print "最高车速:"; Int(Vmax) & " km/h" & "    对应转速:" & Nvmax & " rpm"

Picture1.Line (Xmax, Ymax)-Step(-Xmax + 510, 0), RGB(255, 100, 0)

Picture1.DrawStyle = 0

VmaxL = True

End If

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Picture1.Line (X0, Y0)-(X1, Y1), RGB(255, 0, 0)

End If

If j = REV(Cout) Then

If (i Mod 2 = 0) Then Picture1.CurrentX = X1 + 100

If (i Mod 2 = 1) Then Picture1.CurrentX = X1 - 100

Picture1.CurrentY = Y1 - 120

Picture1.Print "i" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

'==============================================================================================

Nkd = Int((REV(Cout)) / 10 / 50) * 50   'text3 额定功率时转速,转速分度,50的倍数

If Nkd = 0 Then Nkd = 50

For i = 1 To 30

Picture1.CurrentY = 5265 + 30

Picture1.CurrentX = 210 + kdx * i * Nkd                  '设置写转速值字的起点

If Nkd * i * kdx > 6915 Then Exit For

'       Picture1.Print REV(0) + nkd * i                          '写转速值

Picture1.Print Nkd * (i + 1)                         '写转速值

Picture1.Line (510 + Nkd * i * kdx, 5265)-Step(0, -100)  '画刻度

Next

'以上循环画X坐标刻度及写值============================================================

Tfen = Int((Un(REV(Cout), Text7(IGmax).Text) * 1.2 / 6) / 5) * 5

For i = 1 To 10

Picture1.CurrentX = 60

Picture1.CurrentY = 5165 - kdy * i * Tfen

If 5265 - kdy * Tfen * i < 510 Then Exit For

Picture1.Print Tfen * i

Picture1.Line (510, 5265 - kdy * Tfen * i)-(610, 5265 - kdy * Tfen * i), RGB(255, 0, 0)

Next

' MsgBox i

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车速度曲线.bmp"

'    If kai = 0 Then Picture1.Cls

'''''''''''''''以下输出显示各档位,转速与速度关系参数,显示在form2.text1.text中'''''''''''''''''''''''''''''''''

Nstr = "": S_i = ""

Form2.Text1.Text = ""   'form2的文本框text1,设置表头

Form2.Text1.Text = " 各档位的转速(r/min)以及车速(km/h)关系如下:  " & vbCrLf

For j = 0 To Cout

S_v = Space(2)

For i = 0 To IGmax

If j = 0 Then S_i = S_i & N2Str(i + 1, 2) & "档" & Space(6)             '档位行

Vt = Un(REV(j), Text7(i).Text)

S_v = S_v & N2Str(Vt, 10)

Next

S_v = Space(2) & N2Str(REV(j), 6) & " |  " & S_v                            '合拼行

If j = 0 Then

Form2.Text1.Text = Form2.Text1.Text & " 转速\档位    " & S_i & vbCrLf

Lens = Int((Len(S_i) + 24) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(Lens, "─") & vbCrLf

End If

Form2.Text1.Text = Form2.Text1.Text & S_v & "(km/h)" & vbCrLf

Next

'    Form2.Show

'    Form2.Text1.Width = 12000: Form2.Text1.Height = 7500: Form2.Text2.Visible = False

End Sub

Private Sub Option3_Click()     '汽车驱动力曲线

Dim Xfen, Yfen As Integer

Dim IGmax As Double

Dim Vfmax As Double

Dim Cout

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1 '以0为起始

Cout = List1.ListCount - 1

'==============================以上初始化数据====================================

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 180

Picture1.CurrentY = 200

Picture1.Print "Fe(kN)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "V(km/h)"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车驱动力曲线"

'==============================以上画图框====================================

'    Nmax = Int((Text3.Text - 500) / 100)  '转速最大分度,每100转为一分度

Umax = Un(REV(Cout), Text7(IGmax).Text)

femax = Fe(ntormax, Text7(0).Text)  '最大扭矩时驱动力最大

kdx = (6915 - 900) / Umax

kdy = (4755 - 600) / femax '缇与坐标之比,每刻度对应多少缇

k = 0

For i = 0 To IGmax

X0 = Un(REV(0), Text7(i).Text) * kdx + 510: Y0 = Fe(REV(0), Text7(i).Text) * kdy

For j = 1 To Cout

X1 = Un(REV(j), Text7(i).Text) * kdx + 510

Y1 = Fe(REV(j), Text7(i).Text) * kdy

''''''''''''''求最大驱动力'''''''''''''''''''''''''''Tormax = Torque(j)''''''''''''''''''

If i = 0 And Tormax = Torque(j) And k = 0 Then

k = 1: Fmxqu = Int(Fe(REV(j), Text7(i).Text) * 100) / 100

Vfmax = Int(Un(REV(j), Text7(i).Text) * 100) / 100 '驱动力最大时对应速度

Picture1.DrawStyle = 2                           '画点线

Picture1.Line (X1, 5265)-(X1, 5265 - Y1)         '画Y竖虚线,STEP表示相对坐标

Picture1.Line (510, 5265 - Y1)-(X1 + 1210, 5265 - Y1) '画X横虚线

Picture1.CurrentX = X1 + 210                     '设置文字的X

Picture1.CurrentY = 5265 - Y1 - 210                  '设置文字的Y

Picture1.Print "最大输出驱动力:"; Fmxqu & " kN,对应速度:" & Vfmax & "km/h"

Picture1.DrawStyle = 0      '画实线

End If

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0)

'红色线画曲线=========================================================

If j = 1 Then

Picture1.CurrentX = X1 - 200

Picture1.CurrentY = 5175 - Y1

Picture1.Print "I" & i + 1

End If

'写每档位=============================================================

X0 = X1: Y0 = Y1

Next

Next

''=================以上画驱动力曲线=========================================

Xfen = Int((Umax / 8) / 5) * 5

Yfen = Int((femax / 6) / 5) * 5

If Xfen = 0 Then Xfen = 5

If Yfen = 0 Then Yfen = 5

For i = 0 To 20

If 510 + Xfen * i * kdx > 7425 Then Exit For

Picture1.CurrentY = 5295

Picture1.CurrentX = 300 + kdx * i * Xfen

Picture1.Print Xfen * i

Picture1.Line (510 + kdx * i * Xfen, 5265)-(510 + kdx * i * Xfen, 5165)

Next

''====================以上画速度V刻度线====================================

For i = 1 To 20

Picture1.CurrentX = 100

Picture1.CurrentY = 5190 - kdy * Yfen * i

If 5265 - kdy * Yfen * i < 510 Then Exit For

Picture1.Print Yfen * i

Picture1.Line (510, 5265 - kdy * Yfen * i)-Step(100, 0), RGB(255, 0, 0)

Next

''====================以上画驱动力Fe刻度线====================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车驱动力曲线.bmp"

'    If kai = 0 Then Picture1.Cls

'''''''''''''''以下输出显示各档位,转速与驱动力关系参数,显示在form2.text1.text中'''''''''''''''''''''''''''''''''

Dim Nstr As String, S_i As String, S_F As String

Dim Fnt As Double

Nstr = "": S_i = ""

Form2.Text1.Text = ""   'form2的文本框text1,设置表头

Form2.Text1.Text = " 各档位的转速(r/min)以及驱动力(kN)关系如下:  " & vbCrLf

For j = 0 To Cout

S_F = Space(2)

For i = 0 To IGmax

If j = 0 Then S_i = S_i & N2Str(i + 1, 2) & "档" & Space(6)             '档位行

Fnt = Fe(REV(j), Text7(i).Text)

S_F = S_F & N2Str(Fnt, 10)                                              '驱动力字符串

Next

S_F = Space(2) & N2Str(REV(j), 6) & " |  " & S_F                                         '合拼转速以及驱动力字符串

If j = 0 Then

Form2.Text1.Text = Form2.Text1.Text & " 转速\档位    " & S_i & vbCrLf    '第一行

Lens = Int((Len(S_i) + 24) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(Lens, "─") & vbCrLf       '横线行

End If

Form2.Text1.Text = Form2.Text1.Text & S_F & "(kN)" & vbCrLf                 '驱动力行

Next

End Sub

Private Sub Option4_Click()     '驱动力,行驶阻力曲线

Dim kdx As Double, kdy As Double

Dim Ffa As Double   ''滑动阻力

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call Option3_Click

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车驱动力曲线-行驶阻力曲线"

'Umax Femax 在之前引用Option3时已经计算过,=========================

'    Umax = Un(REV(Cout), Text7(IGmax).Text)

femax = Fe(ntormax, Text7(0).Text)  '最大扭矩时驱动力最大

kdx = (6915 - 600) / Umax

kdy = (4755 - 600) / femax '缇与坐标之比,每刻度对应多少缇

dx = Umax / 50

X0 = 510: Y0 = Fz(0) * kdy

'    Debug.Print Fz(0)

For j = 1 To 51

X1 = j * dx * kdx + 510

Y1 = Fz(j * dx) * kdy

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(0, 0, 255)

If j = 51 Then

Picture1.CurrentX = X1 - 200

Picture1.CurrentY = 5065 - Y1

Picture1.Print "Ff+Fw"

End If

X0 = X1: Y0 = Y1

Next

'''''''''''滑动阻力=后桥轴荷*9.8*0.7----滑动阻力系数按0.7计算----------------------------

Ffa = Text4.Text * 9.8 * 0.7 / 1000

If Text4.Text > 0 And Ffa < femax Then

Debug.Print "最大滑动阻力=" & Ffa

X1 = 7000

Y1 = 5265 - Ffa * kdy

Picture1.DrawStyle = 2      '画点线

Picture1.Line (510, Y1)-(X1, Y1), RGB(0, 200, 255)     '画X横虚线

Picture1.CurrentX = 2100         '设置文字的X

Picture1.CurrentY = Y1     '设置文字的Y

Picture1.Print "驱动桥最大打滑阻力:"; Ffa & " kN"

Picture1.DrawStyle = 0      '画实线

End If

''''以下显示参数用==========================================

Dim Fzv As Double, Vtz As Double, Lens As Integer

dx = Int(Umax / 15)  '显示15行

'    Form2.Text1.Text = ""   'form2的文本框text1,设置表头

'    Debug.Print "umax="; Umax

Form2.Text1.Text = " 汽车速度(km/h)  行驶阻力(kN)    " & vbCrLf

'    Lens = Int((Len(Form2.Text1.Text) + 10) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(16, "─") & vbCrLf

For j = 0 To 17

Vtz = dx * j

Fzv = Fz(Vtz)

Form2.Text1.Text = Form2.Text1.Text & Space(7) & N2Str(Vtz, 6) & "│   " & N2Str(Fzv, 10) & vbCrLf     '合拼车速与行驶阻力行

Next

'    Form2.Show

'    Form2.Text1.Width = 12000: Form2.Text1.Height = 7500: Form2.Text2.Visible = False

''''''''''''''''''''''''''''显示部分完成'''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车驱动力-行驶阻力曲线.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Option5_Click()     '加速性能曲线

Dim k As Integer

Dim delta As Double

Dim IGmax As Double

Dim Cout, mall, amax, X0, Y0

k = 0

IGmax = Text6.Text - 1

Cout = List1.ListCount - 1

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 100

Picture1.CurrentY = 200

Picture1.Print "a(m/s^2)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "V(km/h)"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车行驶加速度曲线"

'===以转速为基本变量,求得对应速度,驱动力,根据速度可以求得行驶阻力

'    Nmax = Int((Text3.Text - 500) / 100)  '转速最大分度,每100转为一分度

'REV() 转速存放数据

Umax = Un(REV(Cout), Text7(IGmax).Text)

femax = Fe(ntormax, Text7(0).Text)      '最大扭矩时驱动力最大

kdx = (6915 - 600) / Umax

mall = Text22.Text                      '总质量

amax = femax / mall * 1000              '最大加速度

kdy = (4755 - 300) / amax               '缇与坐标之比,每刻度对应多少缇

For i = 0 To IGmax

If i = 0 Then

delta = 1.4

ElseIf i = 1 Then

delta = 1.3

ElseIf i = 2 Then

delta = 1.2

Else

delta = 1.1

End If

X0 = Un(REV(0), Text7(i).Text) * kdx + 510

Y0 = kdy * 1000 * (Fe(REV(0), Text7(i).Text) - Fz(Un(REV(0), Text7(i).Text))) / mall / delta

'Debug.Print "y0=" & Y0

If Y0 < 0 Then Y0 = 0

For j = 1 To Cout

X1 = Un(REV(j), Text7(i).Text) * kdx + 510

Y1 = kdy * 1000 * (Fe(REV(j), Text7(i).Text) - Fz(Un(REV(j), Text7(i).Text))) / mall / delta

If i = 0 And Y1 < Y0 And k = 0 Then

k = 1: Amxjia = Y0 / kdy

''''''''''''画最大加速度横线''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Picture1.DrawStyle = 2

Picture1.CurrentX = 810

Picture1.CurrentY = 5265 - Y0 - 210

Picture1.Print "Max:" & Int(Amxjia * 100) / 100 & " m/s^2"

Picture1.Line (X1, 5265 - Y0)-Step(-X1 + 510, 0), RGB(255, 100, 0)

Picture1.DrawStyle = 0

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

End If

If Y1 < 0 Then Exit For

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0)

If j = 1 Then

Picture1.CurrentX = X1 - 150 - i * 15

Picture1.CurrentY = 5235 - Y1 - i * 15

Picture1.Print "I" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

'========以上画各档位的加速度曲线图===========================

Xfen = Int((Umax / 8) / 5) * 5

Yfen = Int((amax * 1.2 / 7) / 0.2) * 0.2

If Xfen = 0 Then Xfen = 5

If Yfen = 0 Then Yfen = 0.5

'MsgBox "Yfen=" & yfen & "|  Femax=" & Femax & "| amax=" & amax

For i = 0 To 16

If 510 + Xfen * i * kdx > 7425 Then Exit For

Picture1.CurrentY = 5295

Picture1.CurrentX = 300 + kdx * i * Xfen

Picture1.Print Xfen * i

Picture1.Line (510 + kdx * i * Xfen, 5265)-(510 + kdx * i * Xfen, 5190)

Next

''====================以上画速度V刻度线====================================

For i = 1 To 10

Picture1.CurrentX = 100

Picture1.CurrentY = 5190 - kdy * Yfen * i

If 5265 - kdy * Yfen * i < 510 Then Exit For

Picture1.Print Yfen * i

'MsgBox yfen * i

Picture1.Line (510, 5265 - kdy * Yfen * i)-(610, 5265 - kdy * Yfen * i), RGB(255, 0, 0)

Next

''====================以上画加速度 a 刻度线====================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车行驶加速度曲线.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Option6_Click()     '汽车爬坡性能曲线

Dim imax As Double, Da As Double, Va As Double, fa As Double

Dim k As Integer

Dim Papo As Double '爬坡度变量

Dim X0, Y0, X1, Y1

Dim IGmax As Double

Dim Cout

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1 '以0为起始

Cout = List1.ListCount - 1

k = 0

'==============================以上初始化数据====================================

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 100

Picture1.CurrentY = 200

Picture1.Print "i(%)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "V(km/h)"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车各档爬坡度曲线"

'===以转速为基本变量,求得对应速度,驱动力,根据速度可以求得行驶阻力

'    Nmax = Int((Text3.Text - 500) / 100)                     '转速最大分度,每100转为一分度

Umax = Un(REV(Cout), Text7(IGmax).Text)

femax = Fe(ntormax, Text7(0).Text)      '最大扭矩时驱动力最大

kdx = (6915 - 600) / Umax

mall = Text22.Text                      '总质量

amax = femax / mall * 1000              '最大加速度

imax = 100 * Tan(Arcsin(femax / mall * 1000 / 9.8))             '最大驱动力能发出的最大爬坡度

If imax > 80 Then imax = 85

kdy = (4755 - 300) / imax                                       '每单位刻度加速度对应缇值

For i = 0 To IGmax

Va = Un(REV(0), Text7(i).Text)

X0 = Va * kdx + 510

Da = (1000 * (Fe(REV(0), Text7(i).Text) - Fw(Va)) / mall) / 9.8     '动力因数

fa = 0.0076 + 0.000056 * Va                                         '滚动阻力系数

Papo = 100 * Tan(Arcsin((Da - fa * Sqr(1 - Da * Da + fa)) / (1 + fa * fa)))

If Papo > 80 Then Papo = 80

Y0 = Papo * kdy

If Y0 < 0 Then Y0 = 0

For j = 1 To Cout

Va = Un(REV(j), Text7(i).Text)

X1 = Va * kdx + 510

Da = 1000 * (Fe(REV(j), Text7(i).Text) - Fw(Va)) / mall / 9.8

fa = 0.0076 + 0.000056 * Va

Papo = 100 * Tan(Arcsin((Da - fa * Sqr(1 - Da * Da + fa)) / (1 + fa * fa)))

If Papo > 80 Then Papo = 80

Y1 = Papo * kdy

If i = 0 And Y1 < Y0 And k = 0 Then

k = 1: POmx = Y0 / kdy

''''''''''''画最大爬坡横线''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Picture1.DrawStyle = 2

Picture1.CurrentX = 810

Picture1.CurrentY = 5265 - Y0 - 210

Picture1.Print "Max:" & Int(POmx * 10) / 10 & " %"

Picture1.Line (X1, 5265 - Y0)-Step(-X1 + 510, 0), RGB(255, 100, 0)

Picture1.DrawStyle = 0

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

End If

If Y1 < 0 Then Exit For

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0)

If j = 1 Then

Picture1.CurrentX = X1 - 150 - i * 15

Picture1.CurrentY = 5235 - Y1 - i * 15

Picture1.Print "I" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

'========以上画各档位爬坡度曲线图===========================

'''''''''''''''以下输出显示各档位,转速与驱动力关系参数,显示在form2.text1.text中'''''''''''''''''''''''''''''''''

Dim Nstr As String, S_i As String, S_P As String

Dim Pnt As Double

Nstr = "": S_i = ""

Form2.Text1.Text = ""   'form2的文本框text1,设置表头

Form2.Text1.Text = " 各档位的转速(r/min)以及爬坡能力(%)关系如下:  " & vbCrLf

For j = 0 To Cout

S_P = Space(2)

For i = 0 To IGmax

If j = 0 Then S_i = S_i & N2Str(i + 1, 2) & "档" & Space(6)              '档位行

Va = Un(REV(j), Text7(i).Text)

Da = 1000 * (Fe(REV(j), Text7(i).Text) - Fw(Va)) / mall / 9.8

fa = 0.0076 + 0.000056 * Va

Pnt = 100 * Tan(Arcsin((Da - fa * Sqr(1 - Da * Da + fa)) / (1 + fa * fa)))

S_P = S_P & N2Str(Pnt, 10)                                              '爬坡字符串

Next

S_P = Space(2) & N2Str(REV(j), 6) & " |  " & S_P                                         '合拼转速以及爬坡字符串

If j = 0 Then

Form2.Text1.Text = Form2.Text1.Text & " 转速\档位    " & S_i & vbCrLf    '第一行

Lens = Int((Len(S_i) + 24) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(Lens, "─") & vbCrLf        '横线行

End If

Form2.Text1.Text = Form2.Text1.Text & S_P & "(%)" & vbCrLf                   '爬坡度行

Next

'    Form2.Show

'    Form2.Text1.Width = 12000: Form2.Text1.Height = 7500: Form2.Text2.Visible = False

'''----------------------------------------------------------------------------------------------------------------------

Xfen = Int((Umax / 8) / 5) * 5

If Xfen = 0 Then Xfen = 5

Yfen = Int((imax * 1.2 / 7) / 5) * 5

If Yfen = 0 Then Yfen = 5

'MsgBox "Yfen=" & Yfen & "|  Femax=" & Femax

For i = 0 To 16

If 510 + Xfen * i * kdx > 7425 Then Exit For

Picture1.CurrentY = 5295

Picture1.CurrentX = 300 + kdx * i * Xfen

Picture1.Print Xfen * i

Picture1.Line (510 + kdx * i * Xfen, 5265)-Step(0, -100)

Next

''====================以上画速度V刻度线====================================

For i = 1 To 10

Picture1.CurrentX = 100

Picture1.CurrentY = 5190 - kdy * Yfen * i

If 5265 - kdy * Yfen * i < 510 Then Exit For

Picture1.Print Yfen * i

Picture1.Line (510, 5265 - kdy * Yfen * i)-(610, 5265 - kdy * Yfen * i), RGB(255, 0, 0)

Next

''====================以上画爬坡度刻度线====================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车爬坡度曲线.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Option7_Click()     '汽车功率平衡图

Dim Yita As Double

Dim n1 As Double

Dim X0, Y0, X1, Y1

Dim IGmax As Double

Dim Cout, i, j

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData    '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1 '以0为起始

Cout = List1.ListCount - 1

'以下求最高车速======================================================================

For i = ntormax To REV(Cout)

n1 = i

If Fe(n1, Text7(IGmax).Text) < Fz(Un(n1, Text7(IGmax).Text)) Then

Vmax = Un(n1 - 1, Text7(IGmax).Text)

Nvmax = n1 - 1

'            MsgBox "速度max=" & Vmax & " | 转速=" & Nvmax

Exit For

End If

Next

If Nvmax < 1 Then

Vmax = Un(npemax, Text7(IGmax).Text)

Nvmax = npemax

End If    '=====================================================================================

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B

Picture1.CurrentX = 100

Picture1.CurrentY = 200

Picture1.Print "P(kW)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "V(km/h)"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车功率平衡图(除辅件消耗)"

'===以转速为基本变量,求得对应速度,驱动力,根据速度可以求得行驶阻力

'    Nmax = Int((Text3.Text - 200) / 100)                       '转速最大分度,每100转为一分度

Umax = Un(REV(Cout), Text7(IGmax).Text)                     '以最高当比额定功率转速时+200转定为最高车速度

kdx = (6915 - 600) / Umax                                   'X坐标,每对应单位速度对应的缇值

kdy = (4755 - 600) / Pemax                                  '每单位功率对应缇值

'MsgBox Fe(800, Text7(i).Text) * Un(800, Text7(i).Text) * kdy / 3.6

For i = 0 To IGmax

If Text7(i).Text = 1 Then

Yita = Text9.Text   '其他档传动效率

Else

Yita = Text8.Text   '直接档传动效率

End If

X0 = Un(REV(0), Text7(i).Text) * kdx + 510

Y0 = Fe(REV(0), Text7(i).Text) * Un(REV(0), Text7(i).Text) * kdy / Yita / 3.6

For j = 1 To Cout

X1 = Un(REV(j), Text7(i).Text) * kdx + 510

Y1 = Fe(REV(j), Text7(i).Text) * Un(REV(j), Text7(i).Text) * kdy / Yita / 3.6

'MsgBox Y1

If Y1 < 0 Then Exit For

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(255, 0, 0)

If j = Cout Then

Picture1.CurrentX = X1 - 90

Picture1.CurrentY = 5235 - Y1

Picture1.Print "I" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

'========以上画各档位的功率曲线图===========================

dx = Umax / 50

X0 = 0 * kdx + 510

Y0 = 0 * Fz(0) * kdy / 3.6 / Text8.Text

'MsgBox Fz(0)

For j = 1 To 54

X1 = j * dx * kdx + 510

Y1 = j * dx * Fz(j * dx) / 3.6 / Yita * kdy

Picture1.Line (X0, 5265 - Y0)-(X1, 5265 - Y1), RGB(0, 0, 255)

If (Y1 / kdy) > Pemax Or X1 > 7325 Then Exit For

X0 = X1: Y0 = Y1

Next

'MsgBox Y1 / kdy & "  |pmax=" & Text2.Text

Picture1.CurrentX = X1 - 600

Picture1.CurrentY = 5000 - Y1

Picture1.ForeColor = RGB(0, 0, 255)

Picture1.Print "(Pf+Pw)/η"

Picture1.ForeColor = RGB(0, 0, 0)

'========以上画行驶阻力功率(Pf+Pw)/η曲线=================================

''''以下显示参数用把计算内容放到=Form2.Text1.Text======================================================================

Dim Fzv As Double, Vtz As Double, Lens As Integer

dx = Int(Umax / 15)  '显示15行

Form2.Text1.Text = " 汽车速度(km/h)  行驶阻功率(kW/h)    " & vbCrLf

Form2.Text1.Text = Form2.Text1.Text & String(18, "─") & vbCrLf

For j = 0 To 17

Vtz = dx * j

Fzv = Fz(Vtz) * Vtz / Yita / 3.6

Form2.Text1.Text = Form2.Text1.Text & Space(7) & N2Str(Vtz, 6) & "│   " & N2Str(Fzv, 10) & vbCrLf     '合拼车速与行驶阻功率

Next

''''========================================================================================================================

Xfen = Int((Un(REV(Cout), Text7(IGmax).Text) * 1.2 / 9) / 5) * 5

Yfen = Int((Pemax * 1.2 / 8) / 5) * 5

'MsgBox "Yfen=" & Yfen & "|  Femax=" & Femax

For i = 0 To 16

If 510 + Xfen * i * kdx > 7425 Then Exit For

Picture1.CurrentY = 5295

Picture1.CurrentX = 330 + kdx * i * Xfen

Picture1.Print Xfen * i

Picture1.Line (510 + kdx * i * Xfen, 5265)-Step(0, -100)

Next

''====================以上画速度V刻度线====================================

For i = 1 To 15

Picture1.CurrentX = 100

Picture1.CurrentY = 5190 - kdy * Yfen * i

If 5265 - kdy * Yfen * i < 201 Then Exit For

Picture1.Print Yfen * i

Picture1.Line (510, 5265 - kdy * Yfen * i)-Step(100, 0), RGB(255, 0, 0)

Next

''====================以上画功率刻度线====================================

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "汽车功率平衡曲线图.bmp"

'    If kai = 0 Then Picture1.Cls

End Sub

Private Sub Option8_Click()     '变速箱输出扭矩计算

Dim Tboxmax As Double, Yita As Double   'Tboxmax用于存变速箱输出最大扭矩,Yita为传动效率

Dim n1 As Double, T1 As Double        '临时转速n1,扭矩临时T1

Dim Nkd, Tfen        '设定刻度值

Dim X0, Y0, X1, Y1

Dim IGmax As Double      '前进档的档位数,

Dim Cout, i, j

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData                '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1      '以0为起始

Cout = List1.ListCount - 1  '发动机原始数据的项目数,数组的上标值

'''''发动机 REV()'对应转速,全局变量'    Torque() '对应扭矩,全局变量'    Power() '对应功率,全局变量

'------------------------------初始化画图框------------------------------------------------------------------

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B '画方框,起点510,510 左上角为0点,长6915,高4755

Picture1.CurrentX = 180

Picture1.CurrentY = 200

Picture1.Print "T(N.m)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "N(rpm )"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车各档转速-变速箱输出扭矩曲线图"

'------------------------------------------------------------------------------------------------------------------

Yita = (Text8.Text + 1) / 2

Tboxmax = Tormax * Text7(0).Text * Yita     '最大输出扭矩,,变速箱输出扭矩 = 发动机扭矩 * 变速箱速比 * 传动效率

kdx = 6915 / REV(Cout)                      '单位转速对应缇值,REV(cout)为发动机最大设定转速

kdy = (4755 - 600) / Tboxmax                '单位扭矩 T 对应多少缇值

Nkd = Int((REV(Cout)) / 10 / 50) * 50   ' 最高设定转速,转速分度,50的倍数

If Nkd = 0 Then Nkd = 50

For i = 0 To 30

Picture1.CurrentY = 5265 + 30

Picture1.CurrentX = 210 + kdx * i * Nkd                  '设置写转速值字的起点

If Nkd * i * kdx > 6915 Then Exit For

Picture1.Print Nkd * (i)                          '写转速值

Picture1.Line (510 + Nkd * i * kdx, 5265)-Step(0, -100)  '画刻度

Next

'----以上循环画X坐标刻度及写值=========================================================

n1 = Int(Tboxmax / 120) * 10

Tfen = Int(n1 / 100) * 100

'    Debug.Print "kdy=" & kdy & "    Tfen=" & Tfen

For i = 1 To 20

Picture1.CurrentX = 0

Picture1.CurrentY = 5165 - kdy * i * Tfen

If 5265 - kdy * Tfen * i < 510 Then Exit For

Picture1.Print Tfen * i

Picture1.Line (510, 5265 - kdy * Tfen * i)-(610, 5265 - kdy * Tfen * i), RGB(255, 0, 0)

Next

'----以上画Y坐标刻度及写值=================================================================

''以下采用扭矩方法与功率方法求得变速箱输出扭矩,1档情况

'''''发动机 REV()'对应转速,全局变量'    Torque() '对应扭矩,全局变量'    Power() '对应功率,全局变量

'''----------以下为转速每一转为基数求得各参数的方法,-----------------------------------------

For i = 0 To IGmax

If Text7(i).Text = 1 Then

Yita = (Text9.Text + 1) / 2 '其他档传动效率,变速箱输出端取一半的传动率损失

Else

Yita = (Text8.Text + 1) / 2 '直接档传动效率,变速箱输出端取一半的传动率损失

End If

X0 = 510 + (REV(0)) * kdx

Y0 = 5265 - Torque(0) * Text7(i).Text * Yita * kdy  '计算绘画第一点的值

For j = 0 To Cout - 1

X1 = 510 + kdx * REV(j)

T1 = Torque(j) * Text7(i).Text * Yita    '变速箱输出扭矩

Y1 = 5265 - T1 * kdy

Picture1.Line (X0, Y0)-(X1, Y1)  '画扭矩曲线

If Torque(j) = Tormax And (i < 2 Or i = IGmax) Then

Picture1.DrawStyle = 2      '画点线

Picture1.Line (X1, 5265)-(X1, Y1), RGB(255, 0, 0)    '画Y竖虚线,STEP表示相对坐标

Picture1.Line (510, Y1)-(X1, Y1), RGB(255, 0, 0)     '画X横虚线

Picture1.CurrentX = 810         '设置文字的X

Picture1.CurrentY = Y1 - 210    '设置文字的Y

Picture1.Print i + 1 & "档时最大输出扭矩:"; Int(T1) & " N.m"

Picture1.DrawStyle = 0      '画实线

End If

If j = Cout - 1 Then

If (i Mod 2 = 0) Then Picture1.CurrentX = X1 + 100

If (i Mod 2 = 1) Then Picture1.CurrentX = X1 - 100

Picture1.CurrentY = Y1 - 120

Picture1.Print "i" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "变速箱输出扭矩.bmp"

'    If kai = 0 Then Picture1.Cls

'''''''''''''''以下输出显示各档位,转速与速度关系参数,显示在form2.text1.text中'''''''''''''''''''''''''''''''''

Dim Nstr As String, S_i As String

Nstr = ""

S_i = ""

Form2.Text1.Text = ""   'form2的文本框text1,设置表头

Form2.Text1.Text = " 各档位的发动机转速(r/min)以及变速箱输出扭矩(km/h)关系如下:  " & vbCrLf

For j = 0 To Cout

S_v = Space(2)

For i = 0 To IGmax

If Text7(i).Text = 1 Then

Yita = (Text9.Text + 1) / 2 '其他档传动效率,变速箱输出端取一半的传动率损失

Else

Yita = (Text8.Text + 1) / 2 '直接档传动效率,变速箱输出端取一半的传动率损失

End If

If j = 0 Then S_i = S_i & N2Str(i + 1, 2) & "档" & Space(6)             '档位行

T1 = Torque(j) * Text7(i).Text * Yita                           '变速箱输出扭矩

S_v = S_v & N2Str(Int(T1), 10)                                  '把扭矩取整之后再转换为行长字符串

Next

S_v = Space(2) & N2Str(REV(j), 6) & " |  " & S_v                            '合拼列,发动机转速 + 各档时对应的扭矩

If j = 0 Then

Form2.Text1.Text = Form2.Text1.Text & " 转速\档位    " & S_i & vbCrLf

Lens = Int((Len(S_i) + 24) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(Lens, "─") & vbCrLf

End If

Form2.Text1.Text = Form2.Text1.Text & S_v & "(N.m)" & vbCrLf

Next

End Sub

Private Sub Option9_Click()

Dim Tboxmax As Double, Yita As Double   'Tboxmax用于存驱动桥输出最大扭矩,Yita为传动效率

Dim I0 As Double, Tf As Double, Tm As Double  '主减速比,滑动力矩,最大扭矩

Dim n1 As Double, T1 As Double        '临时转速n1,扭矩临时T1

Dim Nkd, Tfen        '设定刻度值

Dim X0, Y0, X1, Y1

Dim IGmax As Double      '前进档的档位数,

Dim Cout, i, j

If Text6.Text = "" Or List1.ListCount < 2 Then

MsgBox "参数不完整,请重新输入!"

Exit Sub

End If

Call IniData                '初始化数据 转速 功率 扭矩

IGmax = Text6.Text - 1      '以0为起始

I0 = Text21.Text

Tf = 0

Cout = List1.ListCount - 1  '发动机原始数据的项目数,数组的上标值

'''''发动机 REV()'对应转速,全局变量'    Torque() '对应扭矩,全局变量'    Power() '对应功率,全局变量

'------------------------------初始化画图框------------------------------------------------------------------

Picture1.Cls

Picture1.ScaleMode = 1    ' 设置比例模型为缇。

Picture1.Line (510, 510)-Step(6915, 4755), , B '画方框,起点510,510 左上角为0点,长6915,高4755

Picture1.CurrentX = 180

Picture1.CurrentY = 200

Picture1.Print "T(N.m)"

Picture1.CurrentX = 7125

Picture1.CurrentY = 5465

Picture1.Print "N(rpm )"

Picture1.CurrentX = 2000

Picture1.CurrentY = 240

Picture1.Print Text1.Text & "汽车各档转速-驱动桥输出扭矩曲线图"

'-----------------------------------------------------------------------------------------------------------------

'-------------------------------------------滑动T=W*g*f*r=后桥轴荷*9.8*0.75*车轮半径--------------------------------------

If Text4.Text > 0 Then

Tf = Text4.Text * 9.8 * 0.7 * Text19.Text

End If

'-------------------------------------以上计算驱动桥轴荷阻力矩,按滑动系数0.75计算---------------------------------------

If Text7(i).Text = 1 Then

Yita = Text9.Text  '其他档传动效率,变速箱输出端取一半的传动率损失

Else

Yita = Text8.Text  '直接档传动效率,变速箱输出端取一半的传动率损失

End If

'    Yita = 1

Tboxmax = Tormax * Text7(0).Text * Yita * I0   '最大输出扭矩,,变速箱输出扭矩 = 发动机扭矩 * 变速箱速比 * 传动效率

Tqudongqiao = Tboxmax                           '传递最大驱动力矩到全局变量

'    Debug.Print "tqudongqiao=" & Tqudongqiao

kdx = 6915 / REV(Cout)                      '单位转速对应缇值,REV(cout)为发动机最大设定转速

If Tf > Tboxmax Then

Tm = Tf

Else

Tm = Tboxmax

End If

kdy = (4755 - 600) / Tm                '单位扭矩 T 对应多少缇值

Nkd = Int((REV(Cout)) / 10 / 50) * 50   ' 最高设定转速,转速分度,50的倍数

If Nkd = 0 Then Nkd = 50

For i = 0 To 30

Picture1.CurrentY = 5265 + 30

Picture1.CurrentX = 210 + kdx * i * Nkd                  '设置写转速值字的起点

If Nkd * i * kdx > 6915 Then Exit For

Picture1.Print Nkd * (i)                          '写转速值

Picture1.Line (510 + Nkd * i * kdx, 5265)-Step(0, -100)  '画刻度

Next

'----以上循环画X坐标刻度及写值============================================================

n1 = Int(Tboxmax / 120) * 10

Tfen = Int(n1 / 100) * 100

'    Debug.Print "kdy=" & kdy & "    Tfen=" & Tfen

For i = 1 To 20

Picture1.CurrentX = 0

Picture1.CurrentY = 5165 - kdy * i * Tfen

Picture1.Line (510, 5265 - kdy * Tfen * i)-(610, 5265 - kdy * Tfen * i), RGB(255, 0, 0)

Next

'----以上画Y坐标刻度及写值=================================================================

If Tf > 0 Then

X1 = 7000

Y1 = 5265 - Tf * kdy

Tqufa = Tf                  '传递驱动桥最大滑动阻力矩到全局变量

Picture1.DrawStyle = 2      '画点线

Picture1.Line (510, Y1)-(X1, Y1), RGB(0, 200, 255)     '画X横虚线

Picture1.CurrentX = 3810         '设置文字的X

Picture1.CurrentY = Y1 - 210    '设置文字的Y

Picture1.Print "驱动桥最大滑动扭矩:"; Int(Tf) & " N.m"

Picture1.DrawStyle = 0      '画实线

End If

'------------------------------以上如果有驱动桥轴荷的话,计算滑动扭矩-------------------------------

'''''''''

''以下采用扭矩方法与功率方法求得变速箱输出扭矩,1档情况

'''''发动机 REV()'对应转速,全局变量'    Torque() '对应扭矩,全局变量'    Power() '对应功率,全局变量

'''----------以下为转速每一转为基数求得各参数的方法,-----------------------------------------

For i = 0 To IGmax

If Text7(i).Text = 1 Then

Yita = Text9.Text  '其他档传动效率,变速箱输出端取一半的传动率损失

Else

Yita = Text8.Text  '直接档传动效率,变速箱输出端取一半的传动率损失

End If

'        Yita = 1

X0 = 510 + (REV(0)) * kdx

Y0 = 5265 - Torque(0) * Text7(i).Text * Yita * I0 * kdy '计算绘画第一点的值

For j = 0 To Cout - 1

X1 = 510 + kdx * REV(j)

T1 = Torque(j) * Text7(i).Text * I0 * Yita  '驱动桥输出扭矩

Y1 = 5265 - T1 * kdy

Picture1.Line (X0, Y0)-(X1, Y1)  '画扭矩曲线

If Torque(j) = Tormax And (i < 2 Or i = IGmax) Then

Picture1.DrawStyle = 2      '画点线

Picture1.Line (X1, 5265)-(X1, Y1), RGB(255, 0, 0)    '画Y竖虚线,STEP表示相对坐标

Picture1.Line (510, Y1)-(X1, Y1), RGB(255, 0, 0)     '画X横虚线

Picture1.CurrentX = 810         '设置文字的X

Picture1.CurrentY = Y1 - 210    '设置文字的Y

Picture1.Print i + 1 & "档时最大总输出扭矩:"; Int(T1) & " N.m"

Picture1.DrawStyle = 0      '画实线

End If

If j = Cout - 1 Then

If (i Mod 2 = 0) Then Picture1.CurrentX = X1 + 100

If (i Mod 2 = 1) Then Picture1.CurrentX = X1 - 100

Picture1.CurrentY = Y1 - 120

Picture1.Print "i" & i + 1

End If

X0 = X1: Y0 = Y1

Next

Next

Picture1.ScaleMode = vbPixels    ' 设置比例模型为像素。

Picture1.AutoRedraw = True  ' 打开 AutoRedraw。

SavePicture Picture1.Image, App.Path & "\Save\" & Text1.Text & "驱动桥输出扭矩.bmp"

'    If kai = 0 Then Picture1.Cls

'''''''''''''''以下输出显示各档位,转速与速度关系参数,显示在form2.text1.text中'''''''''''''''''''''''''''''''''

Dim Nstr As String, S_i As String

Nstr = ""

S_i = ""

Form2.Text1.Text = ""   'form2的文本框text1,设置表头

Form2.Text1.Text = " 各档位的发动机转速(r/min)以及驱动桥输出扭矩(km/h)关系如下:  " & vbCrLf

For j = 0 To Cout

S_v = Space(2)

For i = 0 To IGmax

If Text7(i).Text = 1 Then

Yita = Text9.Text  '其他档传动效率,变速箱输出端取一半的传动率损失

Else

Yita = Text8.Text  '直接档传动效率,变速箱输出端取一半的传动率损失

End If

If j = 0 Then S_i = S_i & N2Str(i + 1, 2) & "档" & Space(6)             '档位行

T1 = Torque(j) * Text7(i).Text * I0 * Yita                         '变速箱输出扭矩

S_v = S_v & N2Str(Int(T1), 10)                                  '把扭矩取整之后再转换为行长字符串

Next

S_v = Space(2) & N2Str(REV(j), 6) & " |  " & S_v                            '合拼列,发动机转速 + 各档时对应的扭矩

If j = 0 Then

Form2.Text1.Text = Form2.Text1.Text & " 转速\档位    " & S_i & vbCrLf

Lens = Int((Len(S_i) + 24) / 2)

Form2.Text1.Text = Form2.Text1.Text & String(Lens, "─") & vbCrLf

End If

Form2.Text1.Text = Form2.Text1.Text & S_v & "(N.m)" & vbCrLf

Next

End Sub

Private Sub TtoP_Click()

TconverP.Show

End Sub

Private Function Shaft_n(Va As Double)

'主减速比 text21.text   滚动半径text19.text

Dim I0 As Double, Ro As Double    'I0为主减,Ro为滚动半径

'公式  n=25*Va*I0/(3*3.1415926*Ro)   转速单位RPM,速度km/h,半径m

I0 = Text21.Text

Ro = Text19.Text

Shaft_n = 25 * Va * I0 / (3 * 3.1415926 * Ro)

End Function

'''''''====================优化记录======================================

''2017.1.4 V1.0.2.4

''1 、增加计算汽车速度与传动轴转速对应列表?

''2016.11.24 V1.0.2.3

''1 、当驱动力大于最大滑动阻力时在图上显示最大滑动阻力?

''2 、驱动桥增加最大阻力矩显示?

''3 、增加计算结果输出保存位置提示?

''2016.11.8 V1.0.2.2

''1、增加功率扭矩转速换算;

''2、修正参数导入的BUG?

''2016.11.4 V1.0.2.1

''1、修正最小车速输出到文件为0的问题;

''2、增加倒车最小稳定车速的计算,默认从怠速转速开始计算;

''3、增加各档位变速箱输出扭矩的计算,用于传动轴与主减许允扭矩的核算。

''2015.12.6 V1.0.2.0

''1、修正爬坡度大于100的问题,设置最高值为80.

''2、修正最小车速在怠速时,计算加速时间可能会变负值问题。

''2015.12.2 V1.0.1.9

''1、修正最高车速计算出错问题,速度图表绘制不正确问题。

''2014.4.2  V1.0.18

''1、自动保存时,模拟输入与精确计算两种模式下车型可能互相混淆的BUG。

''2014.3.12 V1.0.17

''1、修正最高档位最高车速图上绘制可能不在最高档的错误;

''2、最小稳定车速计算为0的错误;

''3、计算结果窗口没有关闭再度计算会出错的BUG?

''2013.9.29 V1.0.15

''1、发动机参数输入采用“转速,功率,扭矩”格式,以此来增加计算精度。

''2、保留发动机拟合方法,功率与扭矩分别采用自身二次函数拟合。

''2013.9.28 V1.1.0.4

''1 、合拼模拟与精确两种计算方法为同一平台计算?

''2 、增加计算结果参数预览?

''3 、简化参数输入功能?

''4 、自动保存上次计算输入参数为默认?

''5 、保存计算结果图表到SAVE目录?

''2013.5.3

''1 、增加最大加速度以及最大爬坡度值在图上显示?

''2 、修复拟合计算时点关闭程序没有退出的问题?

''3 、计算得到最大加速度?爬坡度自动保存到文件?

''2013.5.2

''1、增加软件图标;

''2、计算界面设置可以返回到启动界面?

''2013.1

''1、增加轿车计算的适用性;

''2、增加精确计算功能,发动机各功率点可以采用手动输入,扭矩通过功率来转换。

''3、各点之间功率采用线性拟合计算?

''3、对多轴汽车(半挂车)计算适用性未作试验验证。

Private Sub Form_Load()

'Me.Caption = "关于 " & App.Title

'lblVersion.Caption = "版本 " & App.Major & "." & App.Minor & "." & App.Revision

'lblTitle.Caption = App.Title

lblDescription.Caption = "    本程序可用于汽车动力性计算,分10个图表,包括:" & vbCrLf _

& "1.发动机特性拟合曲线;" & vbCrLf _

& "2.汽车速度曲线;" & vbCrLf _

& "3.汽车驱动力曲线;" & vbCrLf _

& "4.汽车驱动力曲线-行驶阻力曲线;" & vbCrLf _

& "5.汽车加速度曲线;" & vbCrLf _

& "6.汽车加速时间-速度曲线;" & vbCrLf _

& "7.汽车爬坡性能曲线;" & vbCrLf _

& "8.汽车功率平衡图等等" & vbCrLf _

& "     注:拟合计算需要输入的发动机参数比较少,特性曲线是采用二阶拟合得到,计算绘制的图表存在一定的误差。" & vbCrLf _

& "精确计算需要输入发动机特性曲线点,计算精度比较高。"

'    Form2.Text2 = lblDescription.Caption

'    Form2.Show

End Sub

Public Sub StartSysInfo()

On Error GoTo SysInfoErr

Dim rc As Long

Dim SysInfoPath As String

' 试图从注册表中获得系统信息程序的路径及名称...

If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then

' 试图仅从注册表中获得系统信息程序的路径...

ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then

' 已知32位文件版本的有效位置

If (Dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then

SysInfoPath = SysInfoPath & "\MSINFO32.EXE"

' 错误 - 文件不能被找到...

Else

GoTo SysInfoErr

End If

' 错误 - 注册表相应条目不能被找到...

Else

GoTo SysInfoErr

End If

Call Shell(SysInfoPath, vbNormalFocus)

Exit Sub

SysInfoErr:

MsgBox "此时系统信息不可用", vbOKOnly

End Sub

Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean

Dim i As Long                                           ' 循环计数器

Dim rc As Long                                          ' 返回代码

Dim hKey As Long                                        ' 打开的注册表关键字句柄

Dim hDepth As Long                                      '

Dim KeyValType As Long                                  ' 注册表关键字数据类型

Dim tmpVal As String                                    ' 注册表关键字值的临时存储器

Dim KeyValSize As Long                                  ' 注册表关键自变量的尺寸

'------------------------------------------------------------

' 打开 {HKEY_LOCAL_MACHINE...} 下的 RegKey

'------------------------------------------------------------

rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' 打开注册表关键字

If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误...

tmpVal = String$(1024, 0)                             ' 分配变量空间

KeyValSize = 1024                                       ' 标记变量尺寸

'------------------------------------------------------------

' 检索注册表关键字的值...

'------------------------------------------------------------

rc = RegQueryValueEx(hKey, SubKeyRef, 0, _

KeyValType, tmpVal, KeyValSize)    ' 获得/创建关键字值

If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' 处理错误

If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then           ' Win95 外接程序空终结字符串...

tmpVal = Left(tmpVal, KeyValSize - 1)               ' Null 被找到,从字符串中分离出来

Else                                                    ' WinNT 没有空终结字符串...

tmpVal = Left(tmpVal, KeyValSize)                   ' Null 没有被找到, 分离字符串

End If

'------------------------------------------------------------

' 决定转换的关键字的值类型...

'------------------------------------------------------------

Select Case KeyValType                                  ' 搜索数据类型...

Case REG_SZ                                             ' 字符串注册关键字数据类型

KeyVal = tmpVal                                     ' 复制字符串的值

Case REG_DWORD                                          ' 四字节的注册表关键字数据类型

For i = Len(tmpVal) To 1 Step -1                    ' 将每位进行转换

KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' 生成值字符。 By Char。

Next

KeyVal = Format$("&h" + KeyVal)                     ' 转换四字节的字符为字符串

End Select

GetKeyValue = True                                      ' 返回成功

rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字

Exit Function                                           ' 退出

GetKeyError:      ' 错误发生后将其清除...

KeyVal = ""                                             ' 设置返回值到空字符串

GetKeyValue = False                                     ' 返回失败

rc = RegCloseKey(hKey)                                  ' 关闭注册表关键字

End Function

Private Sub Form_Unload(Cancel As Integer)

If Option1.Value = True Then

'        Form1.Show

Form4.Show

frmAbout.Hide

ElseIf Option2.Value = True Then

form3.Show

frmAbout.Hide

End If

End Sub

Private Sub Convert_Click()

Dim T As Double, P As Double, n As Double

Dim Num As Double

If Text1.Text <> "" And Text2.Text <> "" And Text3.Text = "" Then

T = Text1.Text

n = Text2.Text

P = T * n / 9550

Num = Int(P * 1000 + 0.5) / 1000    '取小数后面三位

Text3.Text = Trim(Str(Num))         '把数字转换成字符串,去掉前后空格

ElseIf Text1.Text = "" And Text2.Text <> "" And Text3.Text <> "" Then

n = Text2.Text

P = Text3.Text

T = 9550 * P / n

Num = Int(T * 1000 + 0.5) / 1000

Text1.Text = Trim(Str(Num))

ElseIf Text1.Text <> "" And Text2.Text = "" And Text3.Text <> "" Then

T = Text1.Text

P = Text3.Text

n = 9550 * P / T

Num = Int(n + 0.5)

Text2.Text = Trim(Str(Num))

Else

Text3.Text = ""

End If

End Sub

Private Sub Form_Load()

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

End Sub

Public Function Getnum(strall As String) As String

Dim txtA As String

txtA = Trim(strall)

mytxt = Split(txtA, ":")

Getnum = Trim(mytxt(1))

End Function

Public Function T(Ni As Double) As Double

Pemax = Text2.Text                  '额定功率       283

Np = Text3.Text                     '额定功率时转速 1900

Te = 9550 * Text2.Text / Text3.Text '额定功率时扭矩 1422.44

Ntq = Text5.Text                    '最大扭矩时转速 1200

Ttqmax = Text4.Text                 '最大扭矩       1800

''以上初始化变量值

T = (Te - Ttqmax) * (Ni - Ntq) * (Ni - Ntq) / ((Np - Ntq) * (Np - Ntq)) + Ttqmax

'扭矩函数,二次抛物线拟合得到

End Function

Public Function P(n) As Double

Dim a, Np, Pmax, Pt, Nt As Double

Pt = Text5.Text * Text4.Text / 9550 '最大扭矩时的功率

Pmax = Text2.Text                   '额定功率       283

Np = Text3.Text                     '额定功率时转速 1900

Nt = Text5.Text                     '最大扭矩时转速

a = (Pt - Pmax) / ((Nt - Np) * (Nt - Np))

''以上初始化变量值

P = a * (n - Np) * (n - Np) + Pmax

'功率函数,二次抛物线顶点法拟合得到,低速时值相对偏大

End Function

Private Sub Command1_Click()

Dim Nmax As Double, Nx As Double, Pe As Double, Te As Double

Dim Ndai As Double

Dim NP_eng As String

Dim AutoFit As String

AutoFit = App.Path & "\AutoEng.txt"

If Text2.Text <> "" And Text3.Text <> "" And Text4.Text <> "" And Text5.Text <> "" And Text11.Text <> "" Then

If CInt(Text3.Text) > 1000 And CInt(Text5.Text) > 800 And CInt(Text11.Text) > 300 Then

form3.Text1.Text = Form4.Text1.Text     '置计算窗口车辆名称信息

Ndai = CDbl(Text11.Text)

Umax = CDbl(Text3.Text) + 200

Nx = Ndai

form3.List1.Clear

Do While Nx <= Umax

Pe = P(Nx)

Te = T(Nx)

If Pe < 0 Or Te < 0 Then

MsgBox "参数输入有误。"

GoTo ErrHandler

End If

NP_eng = Nx & "," & N2Str(Pe, 8) & "," & N2Str(Te, 8)

form3.List1.AddItem NP_eng

Debug.Print "np=" & NP_eng & "  NX=" & Nx & "  pe=" & P(Nx)

Nx = Nx + 100

Loop

Open AutoFit For Output As #1

Print #1, "****************************以下是计算输入参数内容****************************"

Print #1, "发动机或车辆型号:  " & Text1.Text

Print #1, "额定功率(kW):   " & Text2.Text & "    | 额定功率转速(r/min):  " & Text3.Text

Print #1, "最大扭矩(N.M):  " & Text4.Text & "   | 最大扭矩转速(r/min):  " & Text5.Text

Print #1, "发动机怠速(r/min): " & Text11.Text

Close #1

Form4.Hide

form3.Show

Else

'            Form4.Hide

'            form3.Show

MsgBox "参数输入有误,请重新输入!", vbOKOnly, "发动机参数"

End If

ElseIf Text2.Text = "" And Text3.Text = "" And Text4.Text = "" And Text5.Text = "" And Text11.Text = "" Then

Form4.Hide

form3.Show

Else

MsgBox "参数输入有误,请重新输入!", vbOKOnly, "发动机参数"

End If

ErrHandler:

' 用户按了“取消”按钮

Close

Exit Sub

End Sub

Private Sub Form_Load()

Dim AutoFit As String, Autosave As String

AutoFit = App.Path & "\AutoEng.txt"

Autosave = App.Path & "\Save"

''''''''''''''''建自动保存目录'''''''''''''''''''''''''''''''''''

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

Text4.Text = ""

Text5.Text = ""

Text11.Text = ""

If Dir(Autosave, vbDirectory) = "" Then

MkDir (Autosave)

End If

'    '''''''''''''''自动读取上次使用过的参数''''''''''''''''''''''''''

'        For i = 0 To 14

'            Text7(i).Text = ""

'        Next

If Dir(AutoFit) <> "" Then

Open AutoFit For Input As #2

Do While Not EOF(2)

'        Line Input #2, textA   '-------------------------以下是计算输入参数内容--------------------------

Line Input #2, textA   '发动机型号:  DCiII385

If InStr(textA, "发动机或车辆型号:") > 0 Then

Text1.Text = Getnum((textA))

Exit Do

End If

Loop

Seek #2, 1

Do While Not EOF(2)

Line Input #2, textA                     '额定功率(kW):   283    | 额定功率转速(r/min):  1900

If InStr(textA, "额定功率") > 0 Then

mystr = Split(textA, "|")

Text2.Text = Getnum((mystr(0)))

Text3.Text = Getnum((mystr(1)))

Exit Do

End If

Loop

Seek #2, 1

Do While Not EOF(2)

Line Input #2, textA                     '最大扭矩(N.M):  1800   | 最大扭矩转速(r/min):  1200

'Debug.Print "最大扭矩(N.M): =" & textA

If InStr(textA, "最大扭矩") > 0 Then

mystr = Split(textA, "|")

Text4.Text = Getnum((mystr(0)))

Text5.Text = Getnum((mystr(1)))

Exit Do

End If

Loop

Seek #2, 1

Do While Not EOF(2)

Line Input #2, textA                     '发动机怠速(r/min):  800

If InStr(textA, "怠速") > 0 Then

Text11.Text = Getnum((textA))

Exit Do

End If

Loop

Close #2

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

源程序清单-汽车动力性计算图表软件V1.0相关推荐

  1. 汽车动力性计算图表软件

    一.引言 目的 汽车工程师在做整车系统配置时,需要对动力总成.传动系统进行详细的计算校核,比较,筛选方案.动力性能的计算与分析,是一个重复计算.作图与比较的过程.本软件就是针对这一特点,来针对性的开发 ...

  2. 搞一个win7下能运行的免费财务软件 快马财务软件 v1.0

    一直想找一个免费的财务软件,能在win7或者win10下运行的. 在网上找了一圈,发现主要的免费的财务软件都是在xp下运行,而且只支持老古董的SQLServer2000数据库,那个数据库可是很容易被病 ...

  3. 效率源希捷自校准配套专修软件 v1.0 绿色

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  4. 税务UKey开票软件 V1.0.22_ZS_20221231 版本数据库分析

    税控盘版开票软件V1.0.22_ZS_20221231 继2022220630版本之后数据库又发生了变化,业务上的变化在于小规模纳税人,征收率调整减按1%征收.在技术上数据库的加密机制发生变化,经过一 ...

  5. 食蔬宝收银称重软件V1.0

    一食蔬宝收银称重软件V1.0 单机版 免费使用 可以免费对接各大厂商的驱动,也欢迎各大称厂来合作对接驱动 下载地址:http://sdkjt.kjtcn.net/CrossBorderKcy/Down ...

  6. 食蔬宝分拣称重软件V1.0

    农产生鲜配送分拣系统 支持电子称称重 进销存管理 按配送路线分拣 按汇总订单分拣 按客户店铺分拣 食蔬宝分拣软件V1.0.rar-互联网文档类资源-CSDN下载

  7. 一点换机软件 v1.0.5

    类型:系统工具 版本:v1.0.5 大小:10.2M 更新:2019/3/6 语言:简体 等级: 平台:安卓, 4.4以上 下载地址: 一点换机软件 v1.0.5(1) 一点换机软件 v1.0.5(2 ...

  8. EasyMoney 绿色免费 家庭财务软件v1.0 新鲜出炉~~~

    EasyMoney 家庭财务软件v1.0 新鲜出炉~~~ EasyMoney 财务软件使用帮助 前言:系统概述         EasyMoney是一款专为家庭或个人量身打造的在线账务管理系统.帮助个 ...

  9. 百分百财富管理软件V1.0

    根据网友的反馈,打算在<4W家庭理财>V2.5的基础上开发适用于中小企业和网店的理财软件,软件名称暂定为<百分百财富管理>V1.0. 如果说<4W家庭理财>侧重于节 ...

最新文章

  1. 18 个 Java8 日期处理的实践,太有用了!
  2. openlayers5之完整文档v5.1.3.zip下载
  3. 一段TCP socket和WebSocket互相交互的调试代码
  4. SAP CRM里使用BAdI阻止产品主数据保存的一种办法
  5. 单片机涡轮流量传感器_青天仪表为您介绍安装涡轮流量计需要注意问题
  6. 蓝桥杯试题java_java蓝桥杯试题
  7. Unity3D常用知识点总结
  8. 《Total Commander:万能文件管理器》——第7.2节.比较和同步文件夹
  9. 多线程相关知识点详解
  10. echarts 直方图加正态_直方图和正态分布图(只需填入待分析数据_自动分析_自动生成图)...
  11. Rhino6.25软件安装教程|兼容WIN10
  12. TrinityCore魔兽世界服务器-环境搭建(Debian11)
  13. 电子产品“使用”和“放置”哪个寿命更长??
  14. 【Web项目】点餐系统
  15. 【linux】web服务器
  16. JS - 11 - 原型、继承 -
  17. 制定新的计划,走起(r13笔记第1天)
  18. Open3D键盘切换上下帧显示点云
  19. Vulnhub_HACKSUDO: THOR
  20. 全国职业技能计算机考试教案,内江职业技术学院2017年中职类—信息技术二类技能测试大纲...

热门文章

  1. 在线记录源码调试之@Qualifier源码分析
  2. 苹果cms模板_苹果cms手机模板好看的有哪些?
  3. 大自然保护协会2018全球影赛获奖作品合集
  4. kubernetes 介绍_Kubernetes的友好介绍
  5. 数值分析-列主元消去法
  6. razer鼠标测试软件,Razer Viper Ultimate无线鼠标评测
  7. 皮肤病,得了慢性荨麻疹怎么办?
  8. 浪潮云海超融合一体机提升存储性能 支撑关键业务高效运行
  9. 程序员心中都有一个“静静”,想起它就能踏实写代码了
  10. 新学期,新FLAG | 要以码为梦而非夜郎自大