diff --git a/VECTO/Input Files/cDRI.vb b/VECTO/Input Files/cDRI.vb index 9eca48b8378aa52735bdb44ed58441a93b79338b..899209c01a5eaa49f99725b1fd8e3346f0673955 100644 --- a/VECTO/Input Files/cDRI.vb +++ b/VECTO/Input Files/cDRI.vb @@ -694,6 +694,11 @@ lbEr: If AuxDef Then AuxComponents = hzAuxValues tDim = Values(tDriComp.V).Count - 1 + For i = 0 To tDim + If Values(tDriComp.V)(i) < 0.5 Then Values(tDriComp.V)(i) = 0 + Next + + Return True End Function diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb index 6d22fcdacb0ef1b2edbb5788faebe749cb842224..ae1e3bb1960900123486c7abeac6cf5f2450334e 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 a13223072cbab69b4e9fc58183f11f66bb096a1f..23fc42ae092d998a3121267d76110f8f161633b7 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 @@ -443,6 +446,7 @@ Public Class cMOD Dim f As cFile_V3 Dim s As System.Text.StringBuilder + Dim su As System.Text.StringBuilder Dim t As Integer Dim t1 As Integer @@ -456,6 +460,8 @@ Public Class cMOD Dim AuxList As New List(Of String) + Dim HeaderList As New List(Of String()) + Dim Gear As Integer MsgSrc = "MOD/Output" @@ -493,56 +499,99 @@ Public Class cMOD Next - 'f.WriteLine("VECTO modal results") - 'f.WriteLine("VECTO " & VECTOvers) - 'f.WriteLine(Now.ToString) - 'f.WriteLine("Input File: " & JobFile) + If DEV.AdvFormat Then + f.WriteLine("VECTO " & VECTOvers) + f.WriteLine(Now.ToString) + f.WriteLine("Input File: " & JobFile) + End If '*********************************************************************************************** '*********************************************************************************************** '*********************************************************************************************** '*** Header & Units **************************************************************************** + s.Length = 0 - s.Append("time [s]") - If Not VEC.EngOnly Then + HeaderList.Add(New String() {"time", "s"}) - s.Append(",dist [m],v_act [km/h],v_targ [km/h],acc [m/s^2],grad [%]") + If Not VEC.EngOnly Then + HeaderList.Add(New String() {"dist", "m"}) + HeaderList.Add(New String() {"v_act", "km/h"}) + HeaderList.Add(New String() {"v_targ", "km/h"}) + HeaderList.Add(New String() {"acc", "m/s²"}) + HeaderList.Add(New String() {"grad", "%"}) dist = 0 - End If - s.Append(",n [1/min],Tq_eng [Nm],Tq_clutch [Nm],Tq_full [Nm],Tq_drag [Nm],Pe_eng [kW],Pe_full [kW],Pe_drag [kW],Pe_clutch [kW],Pa Eng [kW],Paux [kW]") + HeaderList.Add(New String() {"n", "1/min"}) + HeaderList.Add(New String() {"Tq_eng", "Nm"}) + HeaderList.Add(New String() {"Tq_clutch", "Nm"}) + HeaderList.Add(New String() {"Tq_full", "Nm"}) + HeaderList.Add(New String() {"Tq_drag", "Nm"}) + HeaderList.Add(New String() {"Pe_eng", "kW"}) + HeaderList.Add(New String() {"Pe_full", "kW"}) + HeaderList.Add(New String() {"Pe_drag", "kW"}) + HeaderList.Add(New String() {"Pe_clutch", "kW"}) + HeaderList.Add(New String() {"Pa", "Eng", "kW"}) + HeaderList.Add(New String() {"Paux", "kW"}) If Not VEC.EngOnly Then - s.Append(",Gear [-],Ploss GB [kW],Ploss Diff [kW],Ploss Retarder [kW],Pa GB [kW],Pa Veh [kW],Proll [kW],Pair [kW],Pgrad [kW],Pwheel [kW],Pbrake [kW]") + HeaderList.Add(New String() {"Gear", "-"}) + HeaderList.Add(New String() {"Ploss GB", "kW"}) + HeaderList.Add(New String() {"Ploss Diff", "kW"}) + HeaderList.Add(New String() {"Ploss Retarder", "kW"}) + HeaderList.Add(New String() {"Pa GB", "kW"}) + HeaderList.Add(New String() {"Pa Veh", "kW"}) + HeaderList.Add(New String() {"Proll", "kW"}) + HeaderList.Add(New String() {"Pair", "kW"}) + HeaderList.Add(New String() {"Pgrad", "kW"}) + HeaderList.Add(New String() {"Pwheel", "kW"}) + HeaderList.Add(New String() {"Pbrake", "kW"}) If GBX.TCon Then - s.Append(",TCν [-],TCμ [-],TC_T_Out [Nm],TC_n_Out [1/min]") + HeaderList.Add(New String() {"TCν", "-"}) + HeaderList.Add(New String() {"TCµ", "-"}) + HeaderList.Add(New String() {"TC_T_Out", "Nm"}) + HeaderList.Add(New String() {"TC_n_Out", "1/min"}) End If 'Auxiliaries For Each StrKey In AuxList - s.Append(",Paux_" & StrKey & " [kW]") + HeaderList.Add(New String() {"Paux_" & StrKey, "kW"}) Next End If + HeaderList.Add(New String() {"FC", "g/h"}) + HeaderList.Add(New String() {"FC-AUXc", "g/h"}) + HeaderList.Add(New String() {"FC-WHTCc", "g/h"}) - 'FC - s.Append(Sepp & "FC [g/h]") - s.Append(Sepp & "FC-AUXc [g/h]") + 'Write to File + If DEV.AdvFormat Then + su = New System.Text.StringBuilder + s.Append(HeaderList(0)(0)) + su.Append("[" & HeaderList(0)(1) & "]") + For t = 1 To HeaderList.Count - 1 + s.Append(Sepp & HeaderList(t)(0)) + su.Append(Sepp & "[" & HeaderList(t)(1) & "]") + Next + f.WriteLine(s.ToString) + f.WriteLine(su.ToString) + Else + s.Append(HeaderList(0)(0) & " [" & HeaderList(0)(1) & "]") + For t = 1 To HeaderList.Count - 1 + s.Append(Sepp & HeaderList(t)(0) & " [" & HeaderList(t)(1) & "]") + Next + f.WriteLine(s.ToString) + End If + - s.Append(Sepp & "FC-WHTCc [g/h]") - 'Write to File - ' Header - f.WriteLine(s.ToString) '*********************************************************************************************** diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index fcfe60e7a281fd66ad7b8a9c40a8f38c1a48ad82..4b8497036eef115d877dca6b077f5046edbd4712 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 de18d5ca751ace9816a59002a3ed2ac986a8c74f..e1a4a4ad2493285b955e6b91ee1547b181ab51a4 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/cDEV.vb b/VECTO/cDEV.vb index 8bae94f05ce369ce58b9baa393616fa759290e2e..9aec0bda17d2c278470780b88c1c491450b9f8c4 100644 --- a/VECTO/cDEV.vb +++ b/VECTO/cDEV.vb @@ -21,7 +21,7 @@ Public Class cDEV Public TCnUstep As Single Public TCnUstepMin As Single - + Public AdvFormat As Boolean '************************************************************************************************************** @@ -132,6 +132,10 @@ Public Class cDEV Conf0.SingleVal = 0.01 MyOptions.Add("TCnUstepMin", Conf0) + Conf0 = New cDEVoption(tDEVconfType.tBoolean, "Better output files format") + Conf0.BoolVal = False + MyOptions.Add("AdvFormat", Conf0) + '**************************** END: Parameters Configuration '***************************** '***************************************************************************************** '***************************************************************************************** @@ -145,6 +149,7 @@ Public Class cDEV TCiterPrec = MyOptions("TCiterPrec").SingleVal TCnUstep = MyOptions("TCnUstep").SingleVal TCnUstepMin = MyOptions("TCnUstepMin").SingleVal + AdvFormat = MyOptions("AdvFormat").BoolVal End Sub 'Demo for Delegate Function diff --git a/VECTO/cVSUM.vb b/VECTO/cVSUM.vb index bc45fb3f5c3a7534a237a4456c31e265c5f598be..1a580798b33a7e87c32829f332cdf6c6942f41f2 100644 --- a/VECTO/cVSUM.vb +++ b/VECTO/cVSUM.vb @@ -38,7 +38,27 @@ Class cVSUM First = True For Each key In VSUMentryList If Not First Then s.Append(",") - s.Append(VSUMentries(key).Head & " " & VSUMentries(key).Unit) + If DEV.AdvFormat Then + s.Append(VSUMentries(key).Head) + Else + s.Append(VSUMentries(key).Head & " " & VSUMentries(key).Unit) + End If + First = False + Next + + Return s.ToString + + End Function + + Public Function VSUMunit() As String + Dim s As New System.Text.StringBuilder + Dim key As String + Dim First As Boolean + + First = True + For Each key In VSUMentryList + If Not First Then s.Append(",") + s.Append(VSUMentries(key).Unit) First = False Next @@ -246,6 +266,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 @@ -299,7 +328,12 @@ Class cVSUM End Try '*** Header / Units - Fvsum.WriteLine("Job [-],Input File [-],Cycle [-]," & VSUMhead()) + If DEV.AdvFormat Then + Fvsum.WriteLine("Job,Input File,Cycle," & VSUMhead()) + Fvsum.WriteLine("[-],[-],[-]," & VSUMunit()) + Else + Fvsum.WriteLine("Job [-],Input File [-],Cycle [-]," & VSUMhead()) + End If 'Close file (will open after each job) Fvsum.Close() @@ -496,15 +530,11 @@ Class cVSUM ResList = New List(Of Dictionary(Of String, Object)) 'Info - 'Fvsum.WriteLine("VECTO results") - 'Fvsum.WriteLine("VECTO " & VECTOvers) - 'Fvsum.WriteLine(Now.ToString) - 'Fvsum.WriteLine("air density [kg/m3]: " & Cfg.AirDensity) - 'If Cfg.DistCorr Then - ' Fvsum.WriteLine("Distance Correction ON") - 'Else - ' Fvsum.WriteLine("Distance Correction OFF") - 'End If + If DEV.AdvFormat Then + Fvsum.WriteLine("VECTO " & VECTOvers) + Fvsum.WriteLine(Now.ToString) + Fvsum.WriteLine("Input File: " & JobFile) + End If 'Close file (will open after each job) Fvsum.Close() @@ -588,7 +618,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 +631,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 +681,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]")