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 4bf3d93b authored by Michael KRISPER's avatar Michael KRISPER
Browse files

Merge remote-tracking branch 'origin/develop' into update-net6

parents 402c628d 6441f764
Branches
Tags
No related merge requests found
...@@ -49,9 +49,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -49,9 +49,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
if (avgSpeed.IsEqual(0.RPMtoRad()) || avgSpeed.IsGreater(MaxSpeed)) { if (avgSpeed.IsEqual(0.RPMtoRad()) || avgSpeed.IsGreater(MaxSpeed)) {
return 0.SI<NewtonMeter>(); return 0.SI<NewtonMeter>();
} }
var (a, b) = GetSection(voltage); var (vLow, vHigh) = GetSection(voltage);
var r1 = a.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque); var r1 = vLow.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque);
var r2 = b.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque); var r2 = vHigh.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque);
if (r1 is null && r2 is null) { if (r1 is null && r2 is null) {
return null; return null;
...@@ -65,7 +65,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -65,7 +65,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
r2 = maxEmTorque; r2 = maxEmTorque;
} }
var retVal = VectoMath.Interpolate(a.Voltage, b.Voltage, var retVal = vLow.Voltage.IsEqual(vHigh.Voltage)
? r1
: VectoMath.Interpolate(vLow.Voltage, vHigh.Voltage,
r1, r2, voltage); r1, r2, voltage);
var elPwr = LookupElectricPower(voltage, avgSpeed, retVal, true); var elPwr = LookupElectricPower(voltage, avgSpeed, retVal, true);
if (elPwr.ElectricalPower != null && electricPower.IsEqual(elPwr.ElectricalPower, 1e-3.SI<Watt>())) { if (elPwr.ElectricalPower != null && electricPower.IsEqual(elPwr.ElectricalPower, 1e-3.SI<Watt>())) {
...@@ -87,10 +89,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -87,10 +89,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
public EfficiencyMap.EfficiencyResult LookupElectricPower(Volt voltage, PerSecond avgSpeed, NewtonMeter torque, bool allowExtrapolation = false) public EfficiencyMap.EfficiencyResult LookupElectricPower(Volt voltage, PerSecond avgSpeed, NewtonMeter torque, bool allowExtrapolation = false)
{ {
var tuple = GetSection(voltage); var (vLow, vHigh) = GetSection(voltage);
var r1 = tuple.Item1.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation); var r1 = vLow.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation);
var r2 = tuple.Item2.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation); var r2 = vHigh.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation);
if (r1 == null || r2 == null || r1.ElectricalPower == null || r2.ElectricalPower == null) { if (r1 == null || r2 == null || r1.ElectricalPower == null || r2.ElectricalPower == null) {
return new EfficiencyMap.EfficiencyResult() { return new EfficiencyMap.EfficiencyResult() {
...@@ -100,7 +102,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -100,7 +102,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
}; };
} }
var pwr = VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage, r1.ElectricalPower, var pwr = vLow.Voltage.IsEqual(vHigh.Voltage)
? r1.ElectricalPower
: VectoMath.Interpolate(vLow.Voltage, vHigh.Voltage, r1.ElectricalPower,
r2.ElectricalPower, voltage); r2.ElectricalPower, voltage);
return new EfficiencyMap.EfficiencyResult() { return new EfficiencyMap.EfficiencyResult() {
...@@ -113,20 +117,28 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data ...@@ -113,20 +117,28 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
public NewtonMeter FullGenerationTorque(Volt voltage, PerSecond avgSpeed) public NewtonMeter FullGenerationTorque(Volt voltage, PerSecond avgSpeed)
{ {
var tuple = GetSection(voltage); var (vLow, vHigh) = GetSection(voltage);
return VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage, if (vLow.Voltage.IsEqual(vHigh.Voltage)) {
tuple.Item1.FullLoadCurve.FullGenerationTorque(avgSpeed), return vLow.FullLoadCurve.FullGenerationTorque(avgSpeed);
tuple.Item2.FullLoadCurve.FullGenerationTorque(avgSpeed), voltage); }
return VectoMath.Interpolate(vLow.Voltage, vHigh.Voltage,
vLow.FullLoadCurve.FullGenerationTorque(avgSpeed),
vHigh.FullLoadCurve.FullGenerationTorque(avgSpeed), voltage);
} }
public NewtonMeter FullLoadDriveTorque(Volt voltage, PerSecond avgSpeed) public NewtonMeter FullLoadDriveTorque(Volt voltage, PerSecond avgSpeed)
{ {
var (electricMotorVoltageLevelData, item2) = GetSection(voltage); var (vLow, vHigh) = GetSection(voltage);
if (vLow.Voltage.IsEqual(vHigh.Voltage)) {
return vLow.FullLoadCurve.FullLoadDriveTorque(avgSpeed);
}
return VectoMath.Interpolate(electricMotorVoltageLevelData.Voltage, item2.Voltage, return VectoMath.Interpolate(vLow.Voltage, vHigh.Voltage,
electricMotorVoltageLevelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed), vLow.FullLoadCurve.FullLoadDriveTorque(avgSpeed),
item2.FullLoadCurve.FullLoadDriveTorque(avgSpeed), voltage); vHigh.FullLoadCurve.FullLoadDriveTorque(avgSpeed), voltage);
} }
protected (ElectricMotorVoltageLevelData, ElectricMotorVoltageLevelData) GetSection(Volt voltage) protected (ElectricMotorVoltageLevelData, ElectricMotorVoltageLevelData) GetSection(Volt voltage)
......
...@@ -188,6 +188,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies ...@@ -188,6 +188,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque, TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque,
Controller.PreviousState.OutAngularVelocity); Controller.PreviousState.OutAngularVelocity);
TestPowertrain.Brakes.BrakePower = DataBus.Brakes.BrakePower; TestPowertrain.Brakes.BrakePower = DataBus.Brakes.BrakePower;
if (TestPowertrain.Gearbox != null) {
TestPowertrain.Gearbox.PreviousState.InAngularVelocity =
(DataBus.GearboxInfo as Gearbox).PreviousState.InAngularVelocity;
}
var testResponse = var testResponse =
TestPowertrain.HybridController.NextComponent.Request(absTime, dt, outTorque, outAngularVelocity, false); TestPowertrain.HybridController.NextComponent.Request(absTime, dt, outTorque, outAngularVelocity, false);
......
engine torque [Nm],downshift rpm [1/min],upshift rpm [1/min]
-200,700,800
0,700,800
3000,700,800
...@@ -18,19 +18,19 @@ ...@@ -18,19 +18,19 @@
{ {
"Ratio": 1.35, "Ratio": 1.35,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 1.0, "Ratio": 1.0,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 0.73, "Ratio": 0.73,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
} }
], ],
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
"File": "TorqueConverterPowerSplit.vtcc", "File": "TorqueConverterPowerSplit.vtcc",
"RefRPM": 1000.0, "RefRPM": 1000.0,
"Inertia": 0.0, "Inertia": 0.0,
"ShiftPolygon": "AT-Shift.vgbs" "ShiftPolygon": ""
}, },
"DownshiftAferUpshiftDelay": 0.0, "DownshiftAferUpshiftDelay": 0.0,
"UpshiftAfterDownshiftDelay": 0.0, "UpshiftAfterDownshiftDelay": 0.0,
......
...@@ -18,37 +18,37 @@ ...@@ -18,37 +18,37 @@
{ {
"Ratio": 3.4, "Ratio": 3.4,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 1.9, "Ratio": 1.9,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 1.42, "Ratio": 1.42,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 1.0, "Ratio": 1.0,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 0.7, "Ratio": 0.7,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
}, },
{ {
"Ratio": 0.62, "Ratio": 0.62,
"Efficiency": 0.98, "Efficiency": 0.98,
"ShiftPolygon": "AT-Shift.vgbs", "ShiftPolygon": "",
"MaxTorque": "" "MaxTorque": ""
} }
], ],
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
"File": "TorqueConverter.vtcc", "File": "TorqueConverter.vtcc",
"RefRPM": 1000.0, "RefRPM": 1000.0,
"Inertia": 0.0, "Inertia": 0.0,
"ShiftPolygon": "AT-Shift.vgbs" "ShiftPolygon": ""
}, },
"DownshiftAferUpshiftDelay": 0.0, "DownshiftAferUpshiftDelay": 0.0,
"UpshiftAfterDownshiftDelay": 0.0, "UpshiftAfterDownshiftDelay": 0.0,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment