发动机工作过程计算1
- 格式:doc
- 大小:331.50 KB
- 文档页数:13
计算机上机编程步骤及代码。
Private Sub cmdOK_Click()Form1.ShowfrmLogin.HideEnd SubDim εAs Single '定义基本参数Dim a As SingleDim vh As SingleDim s As SingleDim D As SingleDim Ne As SingleDim n As SingleDim L As SingleDim gs As SingleDim MT As SingleDim а As SingleDim pr As Single '定义排气过程参数Dim po As SingleDim pk As SingleDim apr As SingleDim k As SingleDim zy As SingleDim jh As SingleDim Tr As SingleDim pa As SingleDim Rg As SingleDim vo As Single '定义进气过程参数Dim T0 As SingleDim ηv As Sing leDim γ As SingleDim c As SingleDim r As SingleDim aT As Single '定义压缩过程参数Dim n1 As SingleDim pc As SingleDim Tc As SingleDim M1, M2, Lo, gc, gh, go, cv1, Tz, pz, ρ, λ, μ, aHu, μo, ξ, Hu, aa, bb, cc As Single '定义燃烧过程参数Dim n2, δ, pb, Tb As Single '定义膨胀过程参数Dim δi, ηi, gi, pe, ηe, ge, Ne1, ηm, pm, j As Single '定义发动机性能指标参数Dim vc, va As Single '定义画图中的参数Dim vcx, pcx As SingleDim vbx As SingleDim pbx, aaa, bbb, ccc, m, o As SinglePrivate Sub Command1_Click()Picture1.Clsn = Val(Text3.Text)ε= Val(Text1.Text)'If ε = 1 Then' MsgBox ("压缩比不能为1,请从新输入")'Text1.Text = ""' End Ifа= Val(Text16.Text)D = Val(Text4.Text)s = Val(Text5.Text)L = Val(Text6.Text)Ne = Val(Text8.Text)po = V al(Text14.Text)pk = V al(Text46.Text)a = Val(Text2.Text)vh = 3.14 * D ^ 2 * s / 4000000Text7.Text = Int(vh * 1000) / 1000i = Val(Text2.Text)'排气过程If zy = 1 And jh = 1 Thenpr = 0.1 + 0.03 * n / NeElseIf zy = 1 And jh = 2 Thenapr = 2 * 10 ^ -9 * n ^ 2pr = po + aprElseIf zy = 2 Thenapr = 2 * 10 ^ -9 * n ^ 2pr = pk + aprEnd IfText21.Text = Int(pr * 1000) / 1000 '求排气压力prTr = 350 / (1.2 / (Log(n) / Log(10)) + 0.005 * (ε - 3) + 0.01 * (а - 1))Text22.Text = Int(Tr * 100) / 100 '求排气温度Tr'进气过程Rg = 287T0 = Val(Text15.Text)po = Val(Text14.Text)vo = Rg * T0 / (po * 10 ^ 6)k = 1.41γ = 0.75δ = 0.5c = 19.6 * k * po * vo * 30 ^ 2 * (2.4 * Ne) ^ 2 * γ ^ 2 * (ε - 1) ^ 2 / (k - 1)pa = po * (1 - n ^ 2 * (ε - δ) ^ 2 / c) ^ (k / (k - 1))Text23.Text = Int(pa * 10000) / 10000 '求进气压力paaT = 15 * ((110 - 0.0125 * n) / (110 - 0.0125 * Ne)) '15为选取的发动机在额定工况下的温升r = ((T0 + aT) * pr) / (Tr * (ε* pa - pr)) 'r为残余废弃系数Text26.Text = Int(r * 1000) / 1000ηv = T0 * pa * ε* (1 - pr / (ε* pa)) / ((T0 + aT) * po * (ε- 1)) 'ηv为充气系数Text25.Text = Int(ηv * 100) / 100Ta = (T0 + aT + r * Tr) / (1 + r) '求进气温度TaText24.Text = Int(Ta)'压缩过程n1 = 1.41 - Ne / (26 * n) '求平均多变压缩指数pc = pa * ε^ n1 '求压缩终点压力pcTc = Ta * ε^ (n1 - 1) '求压缩终点温度TcText18.Text = Int(n1 * 1000) / 1000Text28.Text = Int(Tc * 100) / 100Text27.Text = Int(pc * 100) / 100'燃烧过程If jh = 1 ThenText17.Text = 0.9ElseText17.Text = 0.75End Ifξ = Val(Text17.Text)gc = Val(Text9.Text)gh = Val(Text11.Text)go = Val(Text10.Text)MT = Val(Text13.Text)Lo = (gc / 12 + gh / 4 - go / 32) / 0.21 '理论空气量Locv1 = (4.815 + 0.415 * 10 ^ (-3) * Tc) * 4.18585 '新鲜冲量与残余废气的平均等容摩尔比热cv1,4.18585为kcal/kmol*k与kj/kmol*k的换算单位If jh = 2 ThenM1 = а* Lo '新鲜冲量M1Hu = 42500M2 = а* Lo + gh / 4 + go / 32 '燃烧产物总量M2μo = M2 / M1 '理论分子变更系数μ= (μo + r) / (1 + r) '实际分子变更系数a a = (3.3 / а + 3.7) * 10 ^ (-4) * μ * 4.18585bb = (6.785 + 0.22 / а) * 4.18585 * μcc = ξ * Hu / (M1 * (1 + r)) + (cv1 + 1.985 * λ) * TcTz = (-bb + Sqr(bb ^ 2 + 4 * aa * cc)) / (2 * aa)λ = Val(Text32.Text)pz = λ* pc '燃烧终点压力pzρ= μ* Tz / (λ* Tc) '初期膨胀比ρElseIf jh = 1 ThenSelect Case аCase 0.8 To 1Hu = 44100aHu = 58000 * (1 - а)M1 = а * Lo + 1 / MTM2 = 0.79 * а * Lo + gc / 12 + gh / 2μo = M2 / M1μ = (μo + r) / (1 + r)aa = (3.7 + 3.3 * а) * 10 ^ (-4) * μ * 4.18585bb = (4.4 + 0.62 * а) * μ * 4.18585cc = ξ * (Hu - aHu) / (M1 * (1 + r)) + cv1 * TcCase 1 To 2Hu = 44100aHu = 0M1 = а * Lo + 1 / MTM2 = 0.79 * а * Lo + gc / 12 + gh / 2μo = M2 / M1μ = (μo + r) / (1 + r)aa = (3.3 / а + 3.7) * 10 ^ (-4) * μ * 4.18585bb = (4.8 + 0.22 / а) * μ * 4.18585cc = ξ * (Hu - aHu) / (M1 * (1 + r)) + cv1 * TcEnd SelectTz = (-bb + Sqr(bb ^ 2 + 4 * aa * cc)) / (2 * aa)λ = μ * Tz / Tcpz = λ * pcρ = 1End IfText32.Text = Int(λ * 100) / 100Text30.Text = Int(Tz * 100) / 100Text31.Text = Int(ρ * 100) / 100Text29.Text = Int(pz * 100) / 100Text33.Text = Int(μ * 100) / 100'膨胀过程n2 = 1.14 + 0.035 * Ne / nIf jh = 1 Thenδ = εElseIf jh = 2 Thenδ = ε / ρEnd Ifpb = pz / (δ ^ n2)Tb = Tz / (δ ^ (n2 - 1))Text34.Text = Int(pb * 100) / 100Text35.Text = Int(Tb * 100) / 100Text36.Text = Int(δ * 100) / 100Text19.Text = Int(n2 * 100) / 100'发动机性能指标δi = Val(Text20.Text)pi = δi * pc * (λ * (ρ - 1) + ρ * λ * (1 - 1 / δ ^ (n2 - 1)) / (n2 - 1) - (1 - 1 / ε ^ (n1 - 1)) / (n1 - 1)) / (ε - 1)ηi = 8.314 * а * Lo * T0 * pi / (Hu * po * ηv)gi = 3.6 * 10 ^ 6 / (Hu * ηi)pm = 0.1 * Sqr(16) * (1 + n / 1000) / 10ηm = 1 - pm / pipe = pi * ηmηe = ηi * ηmge = 3.6 * 10 ^ 6 / (Hu * ηe)Ne1 = i * vh * pe * n / 120Text37.Text = Int(pi * 100) / 100Text40.Text = Int(ηi * 100) / 100Text43.Text = Int(gi * 100) / 100Text38.Text = Int(pe * 100) / 100Text41.Text = Int(ηe * 100) / 100Text44.Text = Int(ge * 100) / 100Text45.Text = Int(Ne1 * 100) / 100Text42.Text = Int(ηm * 100) / 100Text39.Text = Int(pm * 100) / 100 End SubPrivate Sub Command2_Click()vc = vh / (ε - 1)va = vc + vhSelect Case va'对于不同的单杠总容积所画出的不同坐标系对应的p-v图Case 0 To 1 '当单杠总容积小于1L时Picture1.Scale (-0.15, 12)-(1.2, -1.5)Picture1.Line (0, 0)-(1.05, 0)Picture1.CurrentX = 1.05Picture1.CurrentY = -0.3Picture1.Print "V/L" '画出X轴For j = 1 To 10 '画出X轴上的线和标出X轴上的数据Picture1.Line (0.1 * j, 0)-(0.1 * j, -0.2)Picture1.CurrentX = 0.097 * jPicture1.CurrentY = -0.25Picture1.Print (0.1 * j)Next jPicture1.CurrentX = 0Picture1.CurrentY = -0.25Picture1.Print (0)Picture1.Line (0, 10.5)-(0, 0)Picture1.CurrentX = -0.1Picture1.CurrentY = 11.2Picture1.Print "p/mpa" '画出Y轴For j = 1 To 10 '画出Y轴上的线和标出Y轴上的数据Picture1.Line (0, j)-(-0.02, j)Picture1.CurrentX = -0.08Picture1.CurrentY = jPicture1.Print (j)Next jPicture1.Line (0, po)-(1, po), vbRed '画出po线Picture1.CurrentX = 1Picture1.CurrentY = 0.5Picture1.Print "po"Case 1 To 2 '当单杠总容积小于2L大于1L时Picture1.Scale (-0.3, 12)-(2.4, -1.5)Picture1.Line (0, 0)-(2.1, 0)Picture1.CurrentX = 2.1Picture1.CurrentY = -0.3Picture1.Print "V/L" '画出X轴For j = 1 To 10 '画出X轴上的线和标出X轴上的数据Picture1.Line (0.2 * j, 0)-(0.2 * j, -0.2)Picture1.CurrentX = 0.197 * jPicture1.CurrentY = -0.25Picture1.Print (0.2 * j)Next jPicture1.CurrentX = 0Picture1.CurrentY = -0.25Picture1.Print (0)Picture1.Line (0, 10.5)-(0, 0)Picture1.CurrentX = -0.2Picture1.CurrentY = 11.2Picture1.Print "p/mpa" '画出Y轴For j = 1 To 10 '画出Y轴上的线和标出Y轴上的数据Picture1.Line (0, j)-(-0.02, j)Picture1.CurrentX = -0.16Picture1.CurrentY = jPicture1.Print (j)Next jPicture1.Line (0, po)-(2.1, po), vbRed '画出po线Picture1.CurrentX = 2.1Picture1.CurrentY = 0.5Picture1.Print "po"Case 2 To 3 '当单杠总容积小于3L大于2L时Picture1.Scale (-0.45, 12)-(3.5, -1.5)Picture1.Line (0, 0)-(3.2, 0)Picture1.CurrentX = 3.2Picture1.CurrentY = -0.3Picture1.Print "V/L" '画出X轴For j = 1 To 10 '画出X轴上的线和标出X轴上的数据Picture1.Line (0.3 * j, 0)-(0.3 * j, -0.2)Picture1.CurrentX = 0.297 * jPicture1.CurrentY = -0.25Picture1.Print (0.3 * j)Next jPicture1.CurrentX = 0Picture1.CurrentY = -0.25Picture1.Print (0)Picture1.Line (0, 10.5)-(0, 0)Picture1.CurrentX = -0.3Picture1.CurrentY = 11.2Picture1.Print "p/mpa" '画出Y轴For j = 1 To 10 '画出Y轴上的线和标出Y轴上的数据Picture1.Line (0, j)-(-0.02, j)Picture1.CurrentX = -0.26Picture1.CurrentY = jPicture1.Print (j)Next jPicture1.Line (0, po)-(3.1, po), vbRed '画出po线Picture1.CurrentX = 3.1Picture1.CurrentY = 0.5Picture1.Print "po"Case Else '当单杠总容积大于3L时Picture1.Scale (-0.6, 12)-(4.5, -1.5)Picture1.Line (0, 0)-(4.3, 0)Picture1.CurrentX = 4.3Picture1.CurrentY = -0.3Picture1.Print "V/L" '画出X轴For j = 1 To 10 '画出X轴上的线和标出X轴上的数据Picture1.Line (0.4 * j, 0)-(0.4 * j, -0.2)Picture1.CurrentX = 0.397 * jPicture1.CurrentY = -0.25Picture1.Print (0.4 * j)Next jPicture1.CurrentX = 0Picture1.CurrentY = -0.25Picture1.Print (0)Picture1.Line (0, 10.5)-(0, 0)Picture1.CurrentX = -0.4Picture1.CurrentY = 11.2Picture1.Print "p/mpa" '画出Y轴For j = 1 To 10 '画出Y轴上的线和标出Y轴上的数据Picture1.Line (0, j)-(-0.02, j)Picture1.CurrentX = -0.36Picture1.CurrentY = jPicture1.Print (j)Next jPicture1.Line (0, po)-(4.1, po), vbRed '画出po线Picture1.CurrentX = 4.1Picture1.CurrentY = 0.5Picture1.Print "po"End SelectPicture1.Line (vc, 10)-(vc, 0), vbBlue '画出vc线Picture1.CurrentX = vc + 0.02Picture1.CurrentY = 10Picture1.Print "vc"'压缩过程For j = 3.1415 To 0 Step -0.0001vcx = 3.1415 * D ^ 2 * s * ((1 - Cos(j) + s * (1 - Cos(2 * j)) / (8 * L))) / 8000000 + vcpcx = pa * (va / vcx) ^ n1Picture1.PSet (vcx, pcx), vbGreenNext j'燃烧过程Picture1.Line (vcx, pc)-(vcx, pz), vbGreenPicture1.Line (vcx, pz)-(vcx * ρ, pz), vbGreen'膨胀过程'以下aaa,bbb,ccc的值是对于柴油机有初期膨胀比,为在初期膨胀比处开始打点,所以反求了初期膨胀比'终点开始所对应的转角o,然后开始从o点到180度打点。