Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 30c262fa authored by Raphael LUZ's avatar Raphael LUZ
Browse files

- Bugfix: Rare crashes caused by gear shift model

- Bugfix: Error in engine inertia power calculation
- Torque Converter losses in modal results
parent ab66a68b
Branches
Tags
No related merge requests found
...@@ -66,6 +66,8 @@ Public Class cGBX ...@@ -66,6 +66,8 @@ Public Class cGBX
Public TCnUout As Single Public TCnUout As Single
Public TCReduce As Boolean Public TCReduce As Boolean
Public TCNeutral As Boolean Public TCNeutral As Boolean
Public TC_mu As Single
Public TC_nu As Single
Private TCnuMax As Single Private TCnuMax As Single
...@@ -595,6 +597,9 @@ Public Class cGBX ...@@ -595,6 +597,9 @@ Public Class cGBX
TCMin = TCMout / mu TCMin = TCMout / mu
TCnUout = nUout TCnUout = nUout
TC_mu = mu
TC_nu = nu
If Brake Then TC_PeBrake = nMtoPe(TCnUout, Mout - TCMout) If Brake Then TC_PeBrake = nMtoPe(TCnUout, Mout - TCMout)
......
...@@ -34,6 +34,7 @@ Public Class cMOD ...@@ -34,6 +34,7 @@ Public Class cMOD
Public PlossGB As List(Of Single) Public PlossGB As List(Of Single)
Public PlossDiff As List(Of Single) Public PlossDiff As List(Of Single)
Public PlossRt As List(Of Single) Public PlossRt As List(Of Single)
Public PlossTC As List(Of Single)
Public PaEng As List(Of Single) Public PaEng As List(Of Single)
Public PaGB As List(Of Single) Public PaGB As List(Of Single)
Public Paux As Dictionary(Of String, List(Of Single)) Public Paux As Dictionary(Of String, List(Of Single))
...@@ -86,6 +87,7 @@ Public Class cMOD ...@@ -86,6 +87,7 @@ Public Class cMOD
PlossGB = New List(Of Single) PlossGB = New List(Of Single)
PlossDiff = New List(Of Single) PlossDiff = New List(Of Single)
PlossRt = New List(Of Single) PlossRt = New List(Of Single)
PlossTC = New List(Of Single)
PaEng = New List(Of Single) PaEng = New List(Of Single)
PaGB = New List(Of Single) PaGB = New List(Of Single)
Paux = New Dictionary(Of String, List(Of Single)) Paux = New Dictionary(Of String, List(Of Single))
...@@ -139,6 +141,7 @@ Public Class cMOD ...@@ -139,6 +141,7 @@ Public Class cMOD
PlossGB = Nothing PlossGB = Nothing
PlossDiff = Nothing PlossDiff = Nothing
PlossRt = Nothing PlossRt = Nothing
PlossTC = Nothing
PaEng = Nothing PaEng = Nothing
PaGB = Nothing PaGB = Nothing
Paux = Nothing Paux = Nothing
......
...@@ -475,6 +475,7 @@ Public Class cPower ...@@ -475,6 +475,7 @@ Public Class cPower
Dim PlossGB As Single Dim PlossGB As Single
Dim PlossDiff As Single Dim PlossDiff As Single
Dim PlossRt As Single Dim PlossRt As Single
Dim PlossTC As Single
Dim GVset As Boolean Dim GVset As Boolean
Dim Vrollout As Single Dim Vrollout As Single
Dim SecSpeedRed As Integer Dim SecSpeedRed As Integer
...@@ -956,6 +957,7 @@ lb_nOK: ...@@ -956,6 +957,7 @@ lb_nOK:
PlossGB = 0 PlossGB = 0
PlossDiff = 0 PlossDiff = 0
PlossRt = 0 PlossRt = 0
PlossTC = 0
PaGbx = 0 PaGbx = 0
Case tEngClutch.Closed Case tEngClutch.Closed
...@@ -963,11 +965,19 @@ lb_nOK: ...@@ -963,11 +965,19 @@ lb_nOK:
P = nMtoPe(nU, GBX.TCMin) + Paux + PaMot 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 Else
PlossGB = fPlossGB(Pwheel, Vact, Gear, False) PlossGB = fPlossGB(Pwheel, Vact, Gear, False)
PlossDiff = fPlossDiff(Pwheel, Vact, False) PlossDiff = fPlossDiff(Pwheel, Vact, False)
PlossRt = fPlossRt(Vact, Gear) PlossRt = fPlossRt(Vact, Gear)
PlossTC = 0
PaGbx = fPaG(Vact, aact) PaGbx = fPaG(Vact, aact)
Pclutch = Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt Pclutch = Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt
P = Pclutch + Paux + PaMot P = Pclutch + Paux + PaMot
...@@ -977,6 +987,7 @@ lb_nOK: ...@@ -977,6 +987,7 @@ lb_nOK:
PlossGB = fPlossGB(Pwheel, Vact, Gear, False) PlossGB = fPlossGB(Pwheel, Vact, Gear, False)
PlossDiff = fPlossDiff(Pwheel, Vact, False) PlossDiff = fPlossDiff(Pwheel, Vact, False)
PlossRt = fPlossRt(Vact, Gear) PlossRt = fPlossRt(Vact, Gear)
PlossTC = 0
PaGbx = fPaG(Vact, aact) PaGbx = fPaG(Vact, aact)
Pclutch = (Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt) / ClutchEta Pclutch = (Pwheel + PlossGB + PlossDiff + PaGbx + PlossRt) / ClutchEta
P = Pclutch + Paux + PaMot P = Pclutch + Paux + PaMot
...@@ -1218,6 +1229,7 @@ lb_nOK: ...@@ -1218,6 +1229,7 @@ lb_nOK:
MODdata.PlossGB.Add(PlossGB) MODdata.PlossGB.Add(PlossGB)
MODdata.PlossDiff.Add(PlossDiff) MODdata.PlossDiff.Add(PlossDiff)
MODdata.PlossRt.Add(PlossRt) MODdata.PlossRt.Add(PlossRt)
MODdata.PlossTC.Add(PlossTC)
MODdata.PaEng.Add(PaMot) MODdata.PaEng.Add(PaMot)
MODdata.PaGB.Add(PaGbx) MODdata.PaGB.Add(PaGbx)
MODdata.Pclutch.Add(Pclutch) MODdata.Pclutch.Add(Pclutch)
...@@ -1382,7 +1394,7 @@ lb_nOK: ...@@ -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))) '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 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 Else
Pmr = 0 Pmr = 0
End If End If
...@@ -1933,6 +1945,9 @@ lb_nOK: ...@@ -1933,6 +1945,9 @@ lb_nOK:
tx += 1 tx += 1
Loop 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)) 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) OutOfRpmRange = ((nU - ENG.Nidle) / (ENG.Nrated - ENG.Nidle) >= 1.2 Or nU < ENG.Nidle)
...@@ -2269,9 +2284,9 @@ lb10: ...@@ -2269,9 +2284,9 @@ lb10:
Public Function fPaMot(ByVal nU As Single, ByVal nUBefore As Single) As Single Public Function fPaMot(ByVal nU As Single, ByVal nUBefore As Single) As Single
If GBX.TCon Then 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 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 If
End Function End Function
......
...@@ -12,7 +12,7 @@ Imports System.Collections.Generic ...@@ -12,7 +12,7 @@ Imports System.Collections.Generic
Module VECTO_Global 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 Const LicSigAppCode As String = "VECTO-Release-0093C61E0A2E4BFA9A7ED7E729C56AE4"
Public MyAppPath As String Public MyAppPath As String
Public MyConfPath As String Public MyConfPath As String
......
...@@ -246,6 +246,15 @@ Class cVSUM ...@@ -246,6 +246,15 @@ Class cVSUM
Next Next
VSUMentries("\\Eretarder").ValueString = (-sum / 3600) 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 'Masse, Loading
VSUMentries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra) VSUMentries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra)
VSUMentries("\\Loading").ValueString = VEH.Loading VSUMentries("\\Loading").ValueString = VEH.Loading
...@@ -588,7 +597,10 @@ Class cVSUM ...@@ -588,7 +597,10 @@ Class cVSUM
ENG0.FilePath = VEC0.PathENG ENG0.FilePath = VEC0.PathENG
Try 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 Catch ex As Exception
WorkerMsg(tMsgID.Err, "File read error! (" & VEC0.PathENG & ")", MsgSrc) WorkerMsg(tMsgID.Err, "File read error! (" & VEC0.PathENG & ")", MsgSrc)
Return False Return False
...@@ -598,7 +610,10 @@ Class cVSUM ...@@ -598,7 +610,10 @@ Class cVSUM
MAP0.FilePath = ENG0.PathMAP MAP0.FilePath = ENG0.PathMAP
Try 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 Catch ex As Exception
WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc) WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc)
Return False Return False
...@@ -645,6 +660,7 @@ Class cVSUM ...@@ -645,6 +660,7 @@ Class cVSUM
AddToVSUM("\\Ebrake", "Ebrake", "[kWh]") AddToVSUM("\\Ebrake", "Ebrake", "[kWh]")
AddToVSUM("\\Etransm", "Etransm", "[kWh]") AddToVSUM("\\Etransm", "Etransm", "[kWh]")
AddToVSUM("\\Eretarder", "Eretarder", "[kWh]") AddToVSUM("\\Eretarder", "Eretarder", "[kWh]")
AddToVSUM("\\Etorqueconv", "Etorqueconv", "[kWh]")
AddToVSUM("\\Mass", "Mass", "[kg]") AddToVSUM("\\Mass", "Mass", "[kg]")
AddToVSUM("\\Loading", "Loading", "[kg]") AddToVSUM("\\Loading", "Loading", "[kg]")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment