diff --git a/VECTO/GUI/F_ENG.vb b/VECTO/GUI/F_ENG.vb index f35f921cd7b96138180ee38231fb95b0a79238bb..1a0d85e8c4da047be54710e04d9b0e5253b39e42 100644 --- a/VECTO/GUI/F_ENG.vb +++ b/VECTO/GUI/F_ENG.vb @@ -555,26 +555,27 @@ Public Class F_ENG If IsNumeric(Me.TbNleerl.Text) AndAlso Me.TbNleerl.Text > 0 Then - FLD0.Init(CSng(Me.TbNleerl.Text)) - - Shiftpoly = New cGBX.cShiftPolygon("", 0) - Shiftpoly.SetGenericShiftPoly(FLD0, Me.TbNleerl.Text) - - s = New System.Windows.Forms.DataVisualization.Charting.Series - s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp) - s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine - s.BorderWidth = 2 - s.Color = Color.DarkRed - s.Name = "Upshift curve" - MyChart.Series.Add(s) - - s = New System.Windows.Forms.DataVisualization.Charting.Series - s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown) - s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine - s.BorderWidth = 2 - s.Color = Color.DarkRed - s.Name = "Downshift curve" - MyChart.Series.Add(s) + If FLD0.Init(CSng(Me.TbNleerl.Text)) Then + + Shiftpoly = New cGBX.cShiftPolygon("", 0) + Shiftpoly.SetGenericShiftPoly(FLD0, Me.TbNleerl.Text) + + s = New System.Windows.Forms.DataVisualization.Charting.Series + s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp) + s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine + s.BorderWidth = 2 + s.Color = Color.DarkRed + s.Name = "Upshift curve" + MyChart.Series.Add(s) + + s = New System.Windows.Forms.DataVisualization.Charting.Series + s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown) + s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine + s.BorderWidth = 2 + s.Color = Color.DarkRed + s.Name = "Downshift curve" + MyChart.Series.Add(s) + End If End If diff --git a/VECTO/GUI/F_VECTO.vb b/VECTO/GUI/F_VECTO.vb index e916ef0687cb145b0093837a456645d1f8b19f8b..d7366c0dde6b48fcd9b5e2848525b57fe53f326d 100644 --- a/VECTO/GUI/F_VECTO.vb +++ b/VECTO/GUI/F_VECTO.vb @@ -1055,26 +1055,27 @@ lbDlog: MyChart.Series.Add(s) If Cfg.DeclMode Then - FLD0.Init(ENG0.Nidle) - - Shiftpoly = New cGBX.cShiftPolygon("", 0) - Shiftpoly.SetGenericShiftPoly(FLD0, ENG0.Nidle) - - s = New System.Windows.Forms.DataVisualization.Charting.Series - s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp) - s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine - s.BorderWidth = 2 - s.Color = Color.DarkRed - s.Name = "Upshift curve" - MyChart.Series.Add(s) - - s = New System.Windows.Forms.DataVisualization.Charting.Series - s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown) - s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine - s.BorderWidth = 2 - s.Color = Color.DarkRed - s.Name = "Downshift curve" - MyChart.Series.Add(s) + + If FLD0.Init(ENG0.Nidle) Then + Shiftpoly = New cGBX.cShiftPolygon("", 0) + Shiftpoly.SetGenericShiftPoly(FLD0, ENG0.Nidle) + + s = New System.Windows.Forms.DataVisualization.Charting.Series + s.Points.DataBindXY(Shiftpoly.gs_nUup, Shiftpoly.gs_TqUp) + s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine + s.BorderWidth = 2 + s.Color = Color.DarkRed + s.Name = "Upshift curve" + MyChart.Series.Add(s) + + s = New System.Windows.Forms.DataVisualization.Charting.Series + s.Points.DataBindXY(Shiftpoly.gs_nUdown, Shiftpoly.gs_TqDown) + s.ChartType = DataVisualization.Charting.SeriesChartType.FastLine + s.BorderWidth = 2 + s.Color = Color.DarkRed + s.Name = "Downshift curve" + MyChart.Series.Add(s) + End If End If diff --git a/VECTO/Input Files/cENG.vb b/VECTO/Input Files/cENG.vb index c7875237d27b25d4445b65fbe6611a933ce6c2ec..20c460514bf33fd7276ca889b9a1cb94c3379313 100644 --- a/VECTO/Input Files/cENG.vb +++ b/VECTO/Input Files/cENG.vb @@ -376,7 +376,7 @@ Public Class cENG Return False End Try - FLD(i).Init(Nidle) + If Not FLD(i).Init(Nidle) Then Return False Next diff --git a/VECTO/Input Files/cFLD.vb b/VECTO/Input Files/cFLD.vb index 8f961e3c64cf5c44a7ef37a2ddacb43e8ca48bef..7f125edc3c747a9da92c1ca53ecdd29b8421373b 100644 --- a/VECTO/Input Files/cFLD.vb +++ b/VECTO/Input Files/cFLD.vb @@ -330,6 +330,8 @@ lbInt: N95h = fnUofPfull(0.95 * Pfull(fnUrated), False) + If N95h < 0 Then Return -1 + Amax = Area(Nidle, N95h) For i = 0 To iDim - 1 @@ -465,6 +467,8 @@ lbInt: LastPe = nMtoPe(nU, Tq(nU)) nUtarget = nU + If LastPe > PeTarget Then Return -1 + Do Pe = nMtoPe(nU, Tq(nU)) @@ -486,6 +490,8 @@ lbInt: LastPe = nMtoPe(nU, Tq(nU)) nUtarget = nU + If LastPe > PeTarget Then Return -1 + Do Pe = nMtoPe(nU, Tq(nU)) @@ -525,20 +531,45 @@ lbInt: End Function - Public Sub Init(ByVal Nidle As Single) + Public Function Init(ByVal Nidle As Single) As Boolean Dim Pmax As Single + Dim MsgSrc As String + + MsgSrc = "Main/ReadInp/Eng.Init" Pmax = Pfull(fnUrated) Nlo = fnUofPfull(0.55 * Pmax, True) + If Nlo < 0 Then + WorkerMsg(tMsgID.Err, "Failed to calculate Nlo! Check full load curve!", MsgSrc) + Return False + End If + N95h = fnUofPfull(0.95 * Pmax, False) + If N95h < 0 Then + WorkerMsg(tMsgID.Err, "Failed to calculate N95h! Check full load curve!", MsgSrc) + Return False + End If + Npref = fNpref(Nidle) + If Npref < 0 Then + WorkerMsg(tMsgID.Err, "Failed to calculate Npref! Check full load curve!", MsgSrc) + Return False + End If + Nhi = fnUofPfull(0.7 * Pmax, False) - End Sub + If Nhi < 0 Then + WorkerMsg(tMsgID.Err, "Failed to calculate Nhi! Check full load curve!", MsgSrc) + Return False + End If + + Return True + + End Function Public Sub DeclInit() Dim i As Integer diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb index ae1e3bb1960900123486c7abeac6cf5f2450334e..b7c19677ed81801fff4752acb6d3712f924a1d3b 100644 --- a/VECTO/Input Files/cGBX.vb +++ b/VECTO/Input Files/cGBX.vb @@ -467,7 +467,7 @@ Public Class cGBX nuMax = Math.Min(TCnu(TCdim), nUout / ENG.Nidle) Else - nuMin = Math.Max(nUout / ENG.Nrated, TCnu(0)) + nuMin = Math.Max(nUout / FLD(Gear).N95h, TCnu(0)) nuMax = Math.Min(TCnuMax, nUout / ENG.Nidle) End If diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index 4b8497036eef115d877dca6b077f5046edbd4712..76a5cb3d32b71f1be88337a8ed5cf5a69515bcce 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -219,27 +219,27 @@ Public Class cPower PaMot = fPaMot(nU, LastnU) End If - 'Aux Demand - Paux = fPaux(i, nU) - 'Engine Power (at Clutch) - If Pplus Or Pminus Then + 'Calculate powertrain losses => power at clutch + If Pplus Or Pminus Then PlossGB = fPlossGB(Pwheel, Vact, Gear, True) PlossDiff = fPlossDiff(Pwheel, Vact, True) PlossRt = fPlossRt(Vact, Gear) PaGetr = fPaG(Vact, aact) - Pkup = Pwheel + PlossGB + PlossDiff + PaGetr + PlossRt - P = Pkup + Paux + PaMot - Else - Pkup = 0 - P = Paux + PaMot - End If + 'Total aux power + '[kW] + Paux = fPaux(i, nU) + + 'Internal Engine Power (Pclutch plus Aux plus Inertia) + P = Pkup + Paux + PaMot + + 'Full load / motoring Pmin = FLD(Gear).Pdrag(nU) @@ -933,26 +933,9 @@ lb_nOK: '************************************ Determine Engine-state ************************************ ' nU is final here! - 'Determine Aux power demand (from VEH and DRI) - Paux = fPaux(jz, Math.Max(nU, ENG.Nidle)) - - 'ICE-inertia - If jz = 0 Then - PaMot = 0 - Else - 'Not optimal since jz-1 to jz not the right interval - PaMot = fPaMot(nU, MODdata.nU(jz - 1)) - End If - - - - 'Total Engine-power - ' => Pantr - ' => P - ' => Pkup + 'Power at clutch Select Case Clutch Case tEngClutch.Opened - P = Paux + PaMot Pclutch = 0 PlossGB = 0 PlossDiff = 0 @@ -963,7 +946,7 @@ lb_nOK: If GBX.TCon And GBX.IsTCgear(Gear) Then - P = nMtoPe(nU, GBX.TCMin) + Paux + PaMot + Pclutch = nMtoPe(nU, GBX.TCMin) If P >= 0 Then PlossTC = Math.Abs(nMtoPe(GBX.TCnUin, GBX.TCMin) * (1 - GBX.TC_mu * GBX.TC_nu)) @@ -971,7 +954,6 @@ lb_nOK: PlossTC = Math.Abs(nMtoPe(GBX.TCnUout, GBX.TCMout) * (1 - GBX.TC_mu * GBX.TC_nu)) End If - Else PlossGB = fPlossGB(Pwheel, Vact, Gear, False) @@ -980,7 +962,6 @@ lb_nOK: PlossTC = 0 PaGbx = fPaG(Vact, aact) Pclutch = Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt - P = Pclutch + Paux + PaMot End If Case Else 'tEngClutch.Slipping: never in AT mode! @@ -990,9 +971,26 @@ lb_nOK: PlossTC = 0 PaGbx = fPaG(Vact, aact) Pclutch = (Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt) / ClutchEta - P = Pclutch + Paux + PaMot End Select + + 'Total aux power + '[kW] + Paux = fPaux(jz, Math.Max(nU, ENG.Nidle)) + + + 'ICE-inertia + If jz = 0 Then + PaMot = 0 + Else + 'Not optimal since jz-1 to jz not the right interval + PaMot = fPaMot(nU, MODdata.nU(jz - 1)) + End If + + 'Internal Engine Power (Pclutch plus Aux plus Inertia) + P = Pclutch + Paux + PaMot + + 'EngState If Clutch = tEngClutch.Opened Then @@ -2295,7 +2293,7 @@ lb10: Return CSng(((VEH.Loading + VEH.Mass + VEH.MassExtra) * 9.81 * Math.Sin(Math.Atan(Grad * 0.01)) * v) * 0.001) End Function - '----------------Ancillaries(Nebenaggregate) ---------------- + '----------------Auxillaries(Nebenaggregate) ---------------- Public Function fPaux(ByVal t As Integer, ByVal nU As Single) As Single Return CSng(MODdata.Vh.Padd(t) + VEC.PauxSum(t, nU)) End Function diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb index 33953d1eadd93ac14ea8546343aeaa1f270e3123..026c9ab013fc4808284d45f280c4a1fab025fe94 100644 --- a/VECTO/M_MAIN.vb +++ b/VECTO/M_MAIN.vb @@ -787,7 +787,7 @@ lbExit: End If 'Must be called after cGBX.ReadFile because cGBX.GearCount is needed - ENG.Init() + If Not ENG.Init() Then Return False 'Must be called after cENG.Init because FLD must be loaded If Cfg.DeclMode Then