From 30c262fa762e2bfa7fd0d68d95081cc5f25efc6c Mon Sep 17 00:00:00 2001 From: Raphael Luz <luz@ivt.tugraz.at> Date: Mon, 10 Nov 2014 15:53:47 +0100 Subject: [PATCH] - Bugfix: Rare crashes caused by gear shift model - Bugfix: Error in engine inertia power calculation - Torque Converter losses in modal results --- VECTO/Input Files/cGBX.vb | 5 +++++ VECTO/MODcalc/cMOD.vb | 3 +++ VECTO/MODcalc/cPower.vb | 21 ++++++++++++++++++--- VECTO/VECTO_Global.vb | 2 +- VECTO/cVSUM.vb | 20 ++++++++++++++++++-- 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb index 6d22fcdacb..ae1e3bb196 100644 --- a/VECTO/Input Files/cGBX.vb +++ b/VECTO/Input Files/cGBX.vb @@ -66,6 +66,8 @@ Public Class cGBX Public TCnUout As Single Public TCReduce As Boolean Public TCNeutral As Boolean + Public TC_mu As Single + Public TC_nu As Single Private TCnuMax As Single @@ -595,6 +597,9 @@ Public Class cGBX TCMin = TCMout / mu TCnUout = nUout + TC_mu = mu + TC_nu = nu + If Brake Then TC_PeBrake = nMtoPe(TCnUout, Mout - TCMout) diff --git a/VECTO/MODcalc/cMOD.vb b/VECTO/MODcalc/cMOD.vb index a13223072c..e889b8c70b 100644 --- a/VECTO/MODcalc/cMOD.vb +++ b/VECTO/MODcalc/cMOD.vb @@ -34,6 +34,7 @@ Public Class cMOD Public PlossGB As List(Of Single) Public PlossDiff As List(Of Single) Public PlossRt As List(Of Single) + Public PlossTC As List(Of Single) Public PaEng As List(Of Single) Public PaGB As List(Of Single) Public Paux As Dictionary(Of String, List(Of Single)) @@ -86,6 +87,7 @@ Public Class cMOD PlossGB = New List(Of Single) PlossDiff = New List(Of Single) PlossRt = New List(Of Single) + PlossTC = New List(Of Single) PaEng = New List(Of Single) PaGB = New List(Of Single) Paux = New Dictionary(Of String, List(Of Single)) @@ -139,6 +141,7 @@ Public Class cMOD PlossGB = Nothing PlossDiff = Nothing PlossRt = Nothing + PlossTC = Nothing PaEng = Nothing PaGB = Nothing Paux = Nothing diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index fcfe60e7a2..4b8497036e 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -475,6 +475,7 @@ Public Class cPower Dim PlossGB As Single Dim PlossDiff As Single Dim PlossRt As Single + Dim PlossTC As Single Dim GVset As Boolean Dim Vrollout As Single Dim SecSpeedRed As Integer @@ -956,6 +957,7 @@ lb_nOK: PlossGB = 0 PlossDiff = 0 PlossRt = 0 + PlossTC = 0 PaGbx = 0 Case tEngClutch.Closed @@ -963,11 +965,19 @@ lb_nOK: P = nMtoPe(nU, GBX.TCMin) + Paux + PaMot + If P >= 0 Then + PlossTC = Math.Abs(nMtoPe(GBX.TCnUin, GBX.TCMin) * (1 - GBX.TC_mu * GBX.TC_nu)) + Else + PlossTC = Math.Abs(nMtoPe(GBX.TCnUout, GBX.TCMout) * (1 - GBX.TC_mu * GBX.TC_nu)) + End If + + Else PlossGB = fPlossGB(Pwheel, Vact, Gear, False) PlossDiff = fPlossDiff(Pwheel, Vact, False) PlossRt = fPlossRt(Vact, Gear) + PlossTC = 0 PaGbx = fPaG(Vact, aact) Pclutch = Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt P = Pclutch + Paux + PaMot @@ -977,6 +987,7 @@ lb_nOK: PlossGB = fPlossGB(Pwheel, Vact, Gear, False) PlossDiff = fPlossDiff(Pwheel, Vact, False) PlossRt = fPlossRt(Vact, Gear) + PlossTC = 0 PaGbx = fPaG(Vact, aact) Pclutch = (Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt) / ClutchEta P = Pclutch + Paux + PaMot @@ -1218,6 +1229,7 @@ lb_nOK: MODdata.PlossGB.Add(PlossGB) MODdata.PlossDiff.Add(PlossDiff) MODdata.PlossRt.Add(PlossRt) + MODdata.PlossTC.Add(PlossTC) MODdata.PaEng.Add(PaMot) MODdata.PaGB.Add(PaGbx) MODdata.Pclutch.Add(Pclutch) @@ -1382,7 +1394,7 @@ lb_nOK: 'OLD and wrong because not time shifted: P_mr(jz) = 0.001 * (I_mot * 0.0109662 * (n(jz) * nnrom) * nnrom * (n(jz) - n(jz - 1))) If t > 0 And t < t1 Then - Pmr = 0.001 * (ENG.I_mot * (2 * Math.PI / 60) ^ 2 * MODdata.nU(t) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1))) + Pmr = 0.001 * (ENG.I_mot * (2 * Math.PI / 60) ^ 2 * ((MODdata.nU(t + 1) + MODdata.nU(t - 1)) / 2) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1))) Else Pmr = 0 End If @@ -1933,6 +1945,9 @@ lb_nOK: tx += 1 Loop + 'First time step after stand still + If LastGear = 0 Then Return fStartGear(t, Grad) + nU = CSng(Vact * 60.0 * GBX.Igetr(0) * GBX.Igetr(LastGear) / (2 * VEH.rdyn * Math.PI / 1000)) OutOfRpmRange = ((nU - ENG.Nidle) / (ENG.Nrated - ENG.Nidle) >= 1.2 Or nU < ENG.Nidle) @@ -2269,9 +2284,9 @@ lb10: Public Function fPaMot(ByVal nU As Single, ByVal nUBefore As Single) As Single If GBX.TCon Then - Return ((ENG.I_mot + GBX.TCinertia) * (nU - nUBefore) * 0.01096 * nU) * 0.001 + Return ((ENG.I_mot + GBX.TCinertia) * (nU - nUBefore) * 0.01096 * ((nU + nUBefore) / 2)) * 0.001 Else - Return (ENG.I_mot * (nU - nUBefore) * 0.01096 * nU) * 0.001 + Return (ENG.I_mot * (nU - nUBefore) * 0.01096 * ((nU + nUBefore) / 2)) * 0.001 End If End Function diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb index de18d5ca75..e1a4a4ad24 100644 --- a/VECTO/VECTO_Global.vb +++ b/VECTO/VECTO_Global.vb @@ -12,7 +12,7 @@ Imports System.Collections.Generic Module VECTO_Global - Public Const VECTOvers As String = "2.0.4-beta2" + Public Const VECTOvers As String = "2.0.4-beta3" Public Const LicSigAppCode As String = "VECTO-Release-0093C61E0A2E4BFA9A7ED7E729C56AE4" Public MyAppPath As String Public MyConfPath As String diff --git a/VECTO/cVSUM.vb b/VECTO/cVSUM.vb index bc45fb3f5c..cc5211402e 100644 --- a/VECTO/cVSUM.vb +++ b/VECTO/cVSUM.vb @@ -246,6 +246,15 @@ Class cVSUM Next VSUMentries("\\Eretarder").ValueString = (-sum / 3600) + 'TC Losses + sum = 0 + For t = 0 To t1 + sum += MODdata.PlossTC(t) + Next + VSUMentries("\\Etorqueconv").ValueString = (-sum / 3600) + + + 'Masse, Loading VSUMentries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra) VSUMentries("\\Loading").ValueString = VEH.Loading @@ -588,7 +597,10 @@ Class cVSUM ENG0.FilePath = VEC0.PathENG Try - If Not ENG0.ReadFile Then Return False + If Not ENG0.ReadFile Then + WorkerMsg(tMsgID.Err, "File read error! (" & VEC0.PathENG & ")", MsgSrc) + Return False + End If Catch ex As Exception WorkerMsg(tMsgID.Err, "File read error! (" & VEC0.PathENG & ")", MsgSrc) Return False @@ -598,7 +610,10 @@ Class cVSUM MAP0.FilePath = ENG0.PathMAP Try - If Not MAP0.ReadFile(True) Then Return False + If Not MAP0.ReadFile(True) Then + WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc) + Return False + End If Catch ex As Exception WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc) Return False @@ -645,6 +660,7 @@ Class cVSUM AddToVSUM("\\Ebrake", "Ebrake", "[kWh]") AddToVSUM("\\Etransm", "Etransm", "[kWh]") AddToVSUM("\\Eretarder", "Eretarder", "[kWh]") + AddToVSUM("\\Etorqueconv", "Etorqueconv", "[kWh]") AddToVSUM("\\Mass", "Mass", "[kg]") AddToVSUM("\\Loading", "Loading", "[kg]") -- GitLab