From a2abb76e6419c5135574e09abc500552feee8c43 Mon Sep 17 00:00:00 2001 From: Raphael Luz <luz@ivt.tugraz.at> Date: Fri, 17 Apr 2015 12:43:55 +0200 Subject: [PATCH] - Limit engine rpm in torque converter operation acc. > acc_min - Shift up (C-to-L, L-to-L) if acc. > acc_min and next-gear-rpm > threshold --- VECTO/Input Files/cGBX.vb | 14 +++++++++++++- VECTO/MODcalc/cPower.vb | 21 +++++++++++++++------ VECTO/cDEV.vb | 16 ++++++++++------ 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb index abd1335fec..f013de2d7f 100644 --- a/VECTO/Input Files/cGBX.vb +++ b/VECTO/Input Files/cGBX.vb @@ -433,6 +433,8 @@ Public Class cGBX Dim Brake As Boolean Dim FirstDone As Boolean + Dim rpmLimit As Single + Dim MsgSrc As String MsgSrc = "GBX/TCiteration/t= " & t + 1 @@ -443,6 +445,16 @@ Public Class cGBX Brake = False TCNeutral = False + 'TC rpm limit + If DEV.TClimitOn Then + If MODdata.Vh.a(t) >= DEV.TCaccmin Then + rpmLimit = DEV.TClimit + Else + rpmLimit = ENG.Nrated + End If + Else + rpmLimit = ENG.Nrated + End If 'Power to torque Mout = nPeToM(nUout, PeOut) @@ -461,7 +473,7 @@ Public Class cGBX nuMax = Math.Min(TCnu(TCdim), nUout/ENG.Nidle) Else - nuMin = Math.Max(nUout/DEV.TClimit, TCnu(0)) + nuMin = Math.Max(nUout / rpmLimit, TCnu(0)) nuMax = Math.Min(TCnuMax, nUout/ENG.Nidle) End If diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index 035f8ab5cc..241f87321f 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -1962,18 +1962,27 @@ Public Class cPower 'Upshift If PlusGearLockUp Then - If nUnext > nUup AndAlso Pe <= FLD(LastGear + 1).Pfull(nUnext) Then - Return LastGear + 1 + 'C-to-L / L-to-L + If DEV.TCshiftModeNew Then + If _ + nUnext > nUup AndAlso + fPeGearMod(LastGear + 1, t, MODdata.Vh.V(t), DEV.TCaccmin, Grad) <= FLD(LastGear + 1).Pfull(nUnext) Then + Return LastGear + 1 + End If + Else + If nUnext > nUup AndAlso Pe <= FLD(LastGear + 1).Pfull(nUnext) Then + Return LastGear + 1 + End If End If Else - '1C-to-2C + 'C-to-C If LastGear < GBX.GearCount Then - iRatio = GBX.Igetr(LastGear + 1)/GBX.Igetr(LastGear) + iRatio = GBX.Igetr(LastGear + 1) / GBX.Igetr(LastGear) If _ - fnUout(Vact, LastGear + 1) > Math.Min(900, iRatio*(FLD(LastGear).N80h - 150)) AndAlso - FLD(LastGear + 1).Pfull(nU*iRatio) > 0.7*FLD(LastGear).Pfull(nU) Then + fnUout(Vact, LastGear + 1) > Math.Min(900, iRatio * (FLD(LastGear).N80h - 150)) AndAlso + FLD(LastGear + 1).Pfull(nU * iRatio) > 0.7 * FLD(LastGear).Pfull(nU) Then Return LastGear + 1 End If End If diff --git a/VECTO/cDEV.vb b/VECTO/cDEV.vb index 94e93d03da..e2d9d00f7a 100644 --- a/VECTO/cDEV.vb +++ b/VECTO/cDEV.vb @@ -16,11 +16,12 @@ Public Class cDEV Private MyOptions As Dictionary(Of String, cDEVoption) Private iOptionsDim As Integer + Public AdvFormat As Boolean Public TCiterPrec As Single + Public TClimitOn As Boolean Public TClimit As Single - - - Public AdvFormat As Boolean + Public TCshiftModeNew As Boolean + Public TCaccmin As Single '************************************************************************************************************** @@ -136,14 +137,14 @@ Public Class cDEV Conf0 = New cDEVoption(tDEVconfType.tSelection, "Acceleration for AT Up-Shift power condition") - Conf0.AddMode("acc_target (old)") - Conf0.AddMode("acc_min (new)") + Conf0.AddMode("acc_target") '0 + Conf0.AddMode("acc_min") '1 Conf0.ModeIndex = 1 MyOptions.Add("TCshiftMode", Conf0) Conf0 = New cDEVoption(tDEVconfType.tSingleVal, "Minimum acceleration (acc_min) for TC rpm limit and AT-Shift [m/s²]") - Conf0.SingleVal = 0.02 + Conf0.SingleVal = 0.025 MyOptions.Add("TCaccMin", Conf0) @@ -158,7 +159,10 @@ Public Class cDEV Public Sub SetOptions() TCiterPrec = MyOptions("TCiterPrec").SingleVal AdvFormat = MyOptions("AdvFormat").BoolVal + TClimitOn = MyOptions("TClimitOn").BoolVal TClimit = MyOptions("TClimit").SingleVal + TCshiftModeNew = (MyOptions("TCshiftMode").ModeIndex = 1) + TCaccmin = MyOptions("TCaccMin").SingleVal End Sub 'Demo for Delegate Function -- GitLab