diff --git a/ShareVecto/VECTO_1.4.zip b/ShareVecto/VECTO_1.4.zip deleted file mode 100644 index 317966e4376f12ab1bfd732925d384e850d4241a..0000000000000000000000000000000000000000 Binary files a/ShareVecto/VECTO_1.4.zip and /dev/null differ diff --git a/VECTO Changelog.txt b/VECTO Changelog.txt index c9eae90c2c93bc51c672900a1e5e5cc50717784c..7e236381e95cec6585c552eb2191538dc4d78867 100644 --- a/VECTO Changelog.txt +++ b/VECTO Changelog.txt @@ -1,9 +1,15 @@ VECTO ?.? (future release) TODO - User Manual: JSON +- Correct Pg (sin(arctan(Stg)) statt Stg) and Proll (cos) calculation (Road gradient) VECTO x.x (current source - next release) +- Bugfix: Gears using torque converter and transmission loss maps may cause invalid "out of engine operation range" errors +- Null values for FzISO will abort calculation + + +VECTO 1.4.RC4 - Bugfix: FC interpolation failed when load points matched map points exactly. - Bugfix: Invalid "FC= -10000!" errors when outside of FC-Map - Bugfix: Vehicle stand-still at end of cycle was ignored (distance-based cycles only) diff --git a/VECTO/ApplicationEvents.vb b/VECTO/ApplicationEvents.vb index 4d9bb95a4f67b4a12726a70f8e53800b385bd9c7..4b074345dc01063ed7ac1a2a401c5ee709fac323 100644 --- a/VECTO/ApplicationEvents.vb +++ b/VECTO/ApplicationEvents.vb @@ -39,7 +39,6 @@ Namespace My End Try IO.File.Create(MyConfPath & "joblist.txt") IO.File.Create(MyConfPath & "cyclelist.txt") - 'IO.File.Create(MyConfPath & "ADVlist.txt") End If If Not IO.Directory.Exists(FB_FilHisDir) Then Try diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb index 6e6a94968ba7ab871b0cde75d05cf167fb2675e9..14eef85590138cee3fe9107f5fef3e04b14bd310 100644 --- a/VECTO/GUI/F_MAINForm.vb +++ b/VECTO/GUI/F_MAINForm.vb @@ -2,7 +2,6 @@ Public Class F_MAINForm - Private AdvList As cFileListView Private GenList As cFileListView Private DriList As cFileListView Private BatchGenList As cFileListView @@ -505,8 +504,6 @@ Public Class F_MAINForm 'FileLists GenList = New cFileListView(MyConfPath & "joblist.txt") GenList.LVbox = Me.LvGEN - AdvList = New cFileListView(MyConfPath & "ADVlist.txt") - AdvList.LVbox = Me.LvGEN DriList = New cFileListView(MyConfPath & "cyclelist.txt") DriList.LVbox = Me.LvDRI BatchGenList = New cFileListView(MyConfPath & "joblist.txt") @@ -912,14 +909,6 @@ Public Class F_MAINForm pDim = UBound(Path) ReDim fList(0) 'um Nullverweisausnahme-Warnung zu verhindern - 'Mode-switch if necessary - Select Case UCase(fEXT(Path(0))) - Case ".GEN" - If (LastModeIndex = 2) Then Me.CBoxMODE.SelectedIndex = 0 - Case ".ADV" - If (LastModeIndex <> 2) Then Me.CBoxMODE.SelectedIndex = 2 - End Select - '******************************************* Begin Update '******************************************* Me.LvGEN.BeginUpdate() CheckLock = True @@ -1476,8 +1465,6 @@ lbFound: GenList.LoadList() Case 1 BatchGenList.LoadList() - Case 2 - AdvList.LoadList() End Select GENchecked = Me.LvGEN.CheckedItems.Count UpdateGENTabText() @@ -1554,8 +1541,6 @@ lbFound: Case 1 'Batch BatchGenList.SaveList() DriList.SaveList() - Case 2 'Advance - AdvList.SaveList() End Select LastModeIndex = Me.CBoxMODE.SelectedIndex @@ -1601,20 +1586,7 @@ lbFound: Me.TabControl1.TabPages.Insert(1, DRIpage) DRIpageHere = True End If - Case 2 'Advance - LastModeName = "ADVANCE" - AdvList.LoadList() - - 'Me.GrBoxADV.BringToFront() - - Me.GrBoxSTD.Visible = False - Me.GrBoxBATCH.Visible = False - Me.GrBoxADV.Visible = True - If DRIpageHere Then - Me.TabControl1.Controls.Remove(DRIpage) - DRIpageHere = False - End If End Select GENchecked = Me.LvGEN.CheckedItems.Count @@ -1793,8 +1765,6 @@ lbFound: Case 1 BatchGenList.SaveList() DriList.SaveList() - Case 2 - AdvList.SaveList() End Select End Sub @@ -2119,11 +2089,9 @@ lbFound: End Select If Link <> "" Then - - lv0.ForeColor = Color.Blue + If Not ID = tMsgID.Err Then lv0.ForeColor = Color.Blue lv0.SubItems(0).Font = New Font(Me.LvMsg.Font, FontStyle.Underline) lv0.Tag = Link - End If diff --git a/VECTO/Input Files/cVEH.vb b/VECTO/Input Files/cVEH.vb index 29f38b372e9fa6fc917bc3d211deb0d12d2bd205..1f6313fd43d4dcfb824f737e4ac42ff21efbeab4 100644 --- a/VECTO/Input Files/cVEH.vb +++ b/VECTO/Input Files/cVEH.vb @@ -45,7 +45,6 @@ Public Class cVEH Private MyGBmaps As List(Of cDelaunayMap) Public GetrEffDef As List(Of Boolean) Public GetrEff As List(Of Single) - Public IsTCgear As List(Of Boolean) Private iganganz As Short @@ -147,7 +146,6 @@ Public Class cVEH GetrEffDef = New List(Of Boolean) GetrEff = New List(Of Single) GetrMap = New List(Of cSubPath) - IsTCgear = New List(Of Boolean) MyGBmaps = Nothing iganganz = 0 @@ -653,6 +651,17 @@ lbError: RRC = 0 For Each sl In RRCs + + If sl(2) < -0.000001 Then + WorkerMsg(tMsgID.Err, "Invalid RRC value! (" & sl(2) & ")", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + + If sl(3) < 0.00001 Then + WorkerMsg(tMsgID.Err, "Invalid FzISO value! (" & sl(3) & ")", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + If CBool(sl(1)) Then nrwheels = 4 Else @@ -693,6 +702,9 @@ lbError: Dim EffDiffSum As Single = 0 Dim AnzDiff As Integer = 0 + Dim MinG As Single + Dim plossG As Single + Dim MsgSrc As String MyGBmaps = New List(Of cDelaunayMap) @@ -774,51 +786,71 @@ lbError: 'Calculate average efficiency for fast approx. calculation If i > 0 Then - EffSum = 0 - Anz = 0 + If GBX.IsTCgear(i) Then - dnU = (2 / 3) * (VEH.nNenn - VEH.nLeerl) / 10 - nU = VEH.nLeerl + dnU + GetrEff(i) = -1 - Do While nU <= nNenn - nn = (nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl) + Else - dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nn) / 10) - M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nn)) + EffSum = 0 + Anz = 0 - Do While M_in <= nPeToM(nU, FLD(i).Pfull(nn)) + dnU = (2 / 3) * (VEH.nNenn - VEH.nLeerl) / 10 + nU = VEH.nLeerl + dnU - P_In = nMtoPe(nU, M_in) + Do While nU <= nNenn + nn = (nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl) - P_Loss = IntpolPeLossFwd(i, nU, P_In, False) + dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nn) / 10) + M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nn)) - EffSum += (P_In - P_Loss) / P_In - Anz += 1 + Do While M_in <= nPeToM(nU, FLD(i).Pfull(nn)) - 'Axle - P_In -= P_Loss - P_Loss = IntpolPeLossFwd(0, nU / VEH.Igetr(i), P_In, False) - EffDiffSum += (P_In - P_Loss) / P_In - AnzDiff += 1 + P_In = nMtoPe(nU, M_in) - M_in += dM - Loop + P_Loss = IntpolPeLossFwd(i, nU, P_In, False) + EffSum += (P_In - P_Loss) / P_In + Anz += 1 - nU += dnU - Loop - If MODdata.ModErrors.TrLossMapExtr <> "" Then - WorkerMsg(tMsgID.Err, "Transmission loss map does not cover full engine range! File: " & path, MsgSrc, path) - Return False - End If + plossG = P_Loss + MinG = M_in + + + 'Axle + P_In -= P_Loss + P_Loss = IntpolPeLossFwd(0, nU / VEH.Igetr(i), P_In, False) + EffDiffSum += (P_In - P_Loss) / P_In + AnzDiff += 1 + + If MODdata.ModErrors.TrLossMapExtr <> "" Then + WorkerMsg(tMsgID.Err, "Transmission loss map does not cover full engine operating range!", MsgSrc) + WorkerMsg(tMsgID.Err, MODdata.ModErrors.TrLossMapExtr, MsgSrc) + WorkerMsg(tMsgID.Err, "nU_In(GB)=" & nU & " [1/min]", MsgSrc) + WorkerMsg(tMsgID.Err, "M_In(GB)=" & MinG & " [Nm]", MsgSrc) + WorkerMsg(tMsgID.Err, "P_Loss(GB)=" & plossG & " [kW]", MsgSrc) + WorkerMsg(tMsgID.Err, "nU_In(axle)=" & CStr(nU / VEH.Igetr(i)) & " [1/min]", MsgSrc) + WorkerMsg(tMsgID.Err, "M_In(axle)=" & CStr(nPeToM(nU / VEH.Igetr(i), P_In)) & " [Nm]", MsgSrc) + WorkerMsg(tMsgID.Err, "P_Loss(axle)=" & P_Loss & " [kW]", MsgSrc) + Return False + End If + + M_in += dM + Loop - If Anz = 0 Then - WorkerMsg(tMsgID.Err, "Failed to calculate approx. transmission losses!", MsgSrc) - Return False - End If - GetrEff(i) = EffSum / Anz + nU += dnU + Loop + + If Anz = 0 Then + WorkerMsg(tMsgID.Err, "Failed to calculate approx. transmission losses!", MsgSrc) + Return False + End If + + GetrEff(i) = EffSum / Anz + + End If End If @@ -858,7 +890,7 @@ lbError: GrTxt = Gear.ToString End If - If GetrEffDef(Gear) Or (Approx And DEV.AllowAprxTrLoss) Then + If GetrEffDef(Gear) Or (Approx And DEV.AllowAprxTrLoss AndAlso GetrEff(Gear) > 0) Then If PeOut > 0 Then PeIn = PeOut / GetrEff(Gear) @@ -964,7 +996,7 @@ lbError: GrTxt = Gear.ToString End If - If GetrEffDef(Gear) Or (Approx And DEV.AllowAprxTrLoss) Then + If GetrEffDef(Gear) Or (Approx And DEV.AllowAprxTrLoss AndAlso GetrEff(Gear) > 0) Then If PeIn > 0 Then PeOut = PeIn * GetrEff(Gear) diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index 7c79cec271e32a0f499cb34b96fb12a7b5e06f3e..f81ddb6c66dee7bec027ffc4eb41b183b9befa19 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -458,18 +458,30 @@ Public Class cPower End If Next + 'Calc Coasting-Start time step If GEN.LookAheadOn Then Tlookahead = CInt((vset2 - vset1) / GEN.a_lookahead) t = Math.Max(0, i - Tlookahead) End If + 'Check if target-speed change inside of Coasting Phase + For i0 = i To t Step -1 + If i0 = 0 Then Exit For + If Vh.Vsoll(i0) - Vh.Vsoll(i0 - 1) > 0.0001 Then + t = Math.Min(i0 + 1, i) + Exit For + End If + Next + LookAheadDone = False + 'Limit deceleration adec = GEN.aDesMin(Vist) If Vh.a(i) < adec Then Vh.SetMinAccBackw(i) i0 = i + 'If vehicle stops too early reduce coasting time, i.e. set Coasting-Start later If GEN.LookAheadOn Then Do While i0 > t AndAlso fCoastingSpeed(t, Gears(t), i0 - t) < Vh.V(i0) t += 1 @@ -1875,7 +1887,9 @@ lb_nOK: Dim OutOfRpmRange As Boolean 'First time step OR first time step after stand still - If t = 0 OrElse MODdata.VehState(t - 1) = tVehState.Stopped Then Return 1 + If t = 0 Then Return fStartGear(0) + + If MODdata.VehState(t - 1) = tVehState.Stopped Then Return 1 'Previous Gear tx = 1 diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb index b889d23c335e5af9bfdbf826d1eeee072d498fb9..256f4a59b98f3b9dde6650b4953cfd969fb017de 100644 --- a/VECTO/VECTO_Global.vb +++ b/VECTO/VECTO_Global.vb @@ -2,7 +2,7 @@ Module VECTO_Global - Public Const VECTOvers As String = "1.4.RC4" + Public Const VECTOvers As String = "1.4.RC4 test3" Public Const LicSigAppCode As String = "VECTO-Release-0093C61E0A2E4BFA9A7ED7E729C56AE4" Public MyAppPath As String Public MyConfPath As String