From 2fe1f4e64fe1c63b3721aa2d72a00c1a096ec7e1 Mon Sep 17 00:00:00 2001
From: Raphael Luz <luz@ivt.tugraz.at>
Date: Tue, 28 Apr 2015 15:34:56 +0200
Subject: [PATCH] - Bugix: Incorrect torque calculation in AT/TC model caused
 early up-shifts

---
 CHANGES.md                       |   3 +
 Tools/PicCoordLogger.exe         | Bin 25088 -> 0 bytes
 User Manual/main/changelog.html  |   9 ++-
 VECTO/MODcalc/cPower.vb          | 109 +++++++++++++++++--------------
 VECTO/My Project/AssemblyInfo.vb |   4 +-
 VECTO/VECTO_Global.vb            |   2 +-
 6 files changed, 73 insertions(+), 54 deletions(-)
 delete mode 100644 Tools/PicCoordLogger.exe

diff --git a/CHANGES.md b/CHANGES.md
index 87e821b5b8..691e636f1e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,9 @@ TODO
 - Traction interruption: No engine rev down - hold rpm until new gear engaged (Allison)
 
 
+### VECTO 2.1.1
+* Bugix: Incorrect torque calculation in AT/TC model caused early up-shifts
+
 ### VECTO 2.1
 * 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
diff --git a/Tools/PicCoordLogger.exe b/Tools/PicCoordLogger.exe
deleted file mode 100644
index 61fe3092879cca1ab04f7ad1256af5372f707be6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 25088
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
Vq!!qreh(vtM-P8I{{OSUzXPw)srLW?

diff --git a/User Manual/main/changelog.html b/User Manual/main/changelog.html
index 262b7a96c9..ed9550a8e3 100644
--- a/User Manual/main/changelog.html	
+++ b/User Manual/main/changelog.html	
@@ -3,11 +3,18 @@
 
 
 
+
 <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>VECTO Changelog</title></head><body>
 
 <div style="text-align: center;"><div style="text-align: left;"><span style="font-family: Verdana;"><big><big><big><span style="font-weight: bold;">Changelog</span></big></big></big></span><br><hr style="width: 100%; height: 0px;"><br><span style="font-family: Verdana;"></span></div><span style="font-family: Verdana;"></span>
 
-<div style="text-align: left;"><span style="font-family: Tahoma;">VECTO 2.1<br>
+<div style="text-align: left;"><span style="font-family: Tahoma;">VECTO 2.1.1<br>
+</span>
+<ul>
+  <li><span style="font-family: Tahoma;"></span><span style="font-family: Tahoma;">Bugix: Incorrect torque calculation in AT/TC model caused early up-shifts</span></li>
+</ul>
+<span style="font-family: Tahoma;"><br>
+VECTO 2.1<br>
 </span>
 <ul>
   
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 7279c27888..90ba7d31c4 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -488,7 +488,6 @@ Public Class cPower
 		Dim LastPmax As Single
 		Dim dist As Double
 		Dim dist0 As Double
-		Dim Tq As Single
 		Dim LastGear As Integer
 
 		Dim MsgSrc As String
@@ -556,7 +555,6 @@ Public Class cPower
 		ClutchNorm = 0.03
 		ClutchEta = 1
 
-		Tq = 0
 		LastGear = 0
 
 		LastClutch = tEngClutch.Opened
@@ -737,9 +735,8 @@ lbGschw:
 					'Gear-shifting Model
 					If GBX.TCon Then
 
-						If jz > 0 Then Tq = Math.Min(nPeToM(fnU(Vact, LastGear, False), fPeGearMod(LastGear, jz, Vh.fGrad(dist))), FLD(LastGear).Tq(fnU(Vact, LastGear, False)))
 
-						Gear = fGearTC(jz, Vh.fGrad(dist), Tq)
+						Gear = fGearTC(jz, Vh.fGrad(dist))
 					Else
 						Gear = fGearVECTO(jz, Vh.fGrad(dist))
 					End If
@@ -1024,7 +1021,6 @@ lb_nOK:
 
 			'Internal Engine Power (Pclutch plus Aux plus Inertia)
 			P = Pclutch + Paux + PaMot
-			Tq = nPeToM(nU, P)
 
 			'EngState
 			If Clutch = tEngClutch.Opened Then
@@ -1160,14 +1156,14 @@ lb_nOK:
 			If VECTOworker.CancellationPending Then Return True
 
 
-			If False AndAlso jz = 6915 Then
-				Stop
-				Debug.Print(
-					Vact * 3.6 & "," & aact & "," & Vh.fGrad(dist) & "," & GBX.TC_nu & "," & GBX.TC_mu & "," & nU & "," & Pwheel & "," &
-					nMtoPe(GBX.TCnUout, GBX.TCMout) & "," &
-					Pclutch & "," & Paux & "," & PaMot & "," &
-					P & "," & Pmax)
-			End If
+			'If jz = 6915 Then
+			'	Stop
+			'	Debug.Print(
+			'		Vact * 3.6 & "," & aact & "," & Vh.fGrad(dist) & "," & GBX.TC_nu & "," & GBX.TC_mu & "," & nU & "," & Pwheel & "," &
+			'		nMtoPe(GBX.TCnUout, GBX.TCMout) & "," &
+			'		Pclutch & "," & Paux & "," & PaMot & "," &
+			'		P & "," & Pmax)
+			'End If
 
 
 			'Check whether P above Full-load => Reduce Speed
@@ -1233,7 +1229,7 @@ lb_nOK:
 			'--------------------------------------------------------------------------------------------------
 			'   Finish Second
 
-			'If Gear > 1 AndAlso Gear = LastGear + 1 Then
+			'If Gear = 4 AndAlso Gear = LastGear + 1 Then
 			'	Debug.Print(jz & "," & nU.ToString() & "," & nPeToM(nU, P))
 			'Else
 			'	Debug.Print(jz & ",-,-")
@@ -1877,23 +1873,25 @@ lb_nOK:
 		Return Gear
 	End Function
 
-	Private Function fGearTC(ByVal t As Int16, ByVal Grad As Single, ByVal Tq As Single) As Integer
+	Private Function fGearTC(ByVal t As Int16, ByVal Grad As Single) As Integer
 		Dim LastGear As Int16
 		Dim tx As Int16
 		Dim nU As Single
 		Dim nUup As Single
 		Dim nUdown As Single
-		Dim Pe As Single
 		Dim nUnext As Single
 		Dim OutOfRpmRange As Boolean
 		Dim PlusGearLockUp As Boolean
 		Dim MinusGearTC As Boolean
 		Dim iRatio As Single
 		Dim n As Single
+		Dim TqNext As Single = 0
+		Dim TqCurrent As Single
 
 		'First time step (for vehicles with TC always the first gear is used)
 		If t = 0 Then Return fStartGear(0, Grad)
 
+		'Always start with first gear from stop
 		If MODdata.VehState(t - 1) = tVehState.Stopped Then Return 1
 
 		'Previous Gear
@@ -1951,51 +1949,62 @@ lb_nOK:
 			End If
 		End If
 
-		Pe = Tq * (nU * 2 * Math.PI / 60) / 1000
-
-		'Up/Downshift rpms
-		nUup = GBX.Shiftpolygons(LastGear).fGSnUup(Tq)
-		nUdown = GBX.Shiftpolygons(LastGear).fGSnUdown(Tq)
 
+	
 		'Upshift
-		If PlusGearLockUp Then
-			'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
-			'C-to-C
-			If LastGear < GBX.GearCount Then
+		If LastGear < GBX.GearCount Then
+
+			TqNext = Math.Min(nPeToM(fnU(Vact, LastGear + 1, False), fPeGearMod(LastGear + 1, t, Grad)), FLD(LastGear + 1).Tq(fnU(Vact, LastGear + 1, False)))
+			nUup = GBX.Shiftpolygons(LastGear).fGSnUup(TqNext)
+
+			If PlusGearLockUp Then
+				'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 fPeGearMod(LastGear + 1, t, Grad) <= FLD(LastGear + 1).Pfull(nUnext) Then
+						Return LastGear + 1
+					End If
+				End If
+			Else
+				'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
-					Return LastGear + 1
+					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
+						Return LastGear + 1
+					End If
 				End If
 			End If
+
 		End If
 
 
 		'Downshift
-		If MinusGearTC Then
-			If nU < ENG.Nidle Then
-				Return LastGear - 1
-			End If
-		Else
-			If nU < nUdown AndAlso fnU(Vact, LastGear - 1, False) <= ENG.Nrated Then
-				Return LastGear - 1
-			End If
+		If LastGear > 0 Then
+
+			'Up/Downshift rpms
+			TqCurrent = Math.Min(nPeToM(fnU(Vact, LastGear, False), fPeGearMod(LastGear, t, Grad)), FLD(LastGear).Tq(fnU(Vact, LastGear, False)))
+			nUdown = GBX.Shiftpolygons(LastGear).fGSnUdown(TqCurrent)
+
+			If MinusGearTC Then
+				If nU < ENG.Nidle Then
+					Return LastGear - 1
+				End If
+			Else
+				If nU < nUdown AndAlso fnU(Vact, LastGear - 1, False) <= ENG.Nrated Then
+					Return LastGear - 1
+				End If
+			End If
 		End If
+		
 
 
 		Return LastGear
diff --git a/VECTO/My Project/AssemblyInfo.vb b/VECTO/My Project/AssemblyInfo.vb
index 8a05a5e571..8d17384fba 100644
--- a/VECTO/My Project/AssemblyInfo.vb	
+++ b/VECTO/My Project/AssemblyInfo.vb	
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
 ' by entering "*" in them:
 ' <Assembly: AssemblyVersion("1.0.*")> 
 
-<Assembly: AssemblyVersion("2.1.0.0")> 
-<Assembly: AssemblyFileVersion("2.1.0.0")> 
+<Assembly: AssemblyVersion("2.1.1.0")> 
+<Assembly: AssemblyFileVersion("2.1.1.0")> 
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index 47704f2f40..c01fd4859f 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -11,7 +11,7 @@
 Imports System.Collections.Generic
 
 Module VECTO_Global
-	Public Const VECTOvers As String = "2.1"
+	Public Const VECTOvers As String = "2.1.1"
 	Public Const LicSigAppCode As String = "VECTO-Release-0093C61E0A2E4BFA9A7ED7E729C56AE4"
 	Public MyAppPath As String
 	Public MyConfPath As String
-- 
GitLab