diff --git a/Directory.Build.props b/Directory.Build.props index 79cd84c3d268ce41640bbf20db0e983a10fe3dfb..55c7a8c28fa9c7ac9d18393c1e1eace2a9288533 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -8,7 +8,7 @@ <!-- <DefineConstants>CERTIFICATION_RELEASE</DefineConstants> --> <!-- Global VECTO Version --> - <MainProductVersion>4.0.1</MainProductVersion> + <MainProductVersion>4.0.2</MainProductVersion> <!-- <VersionSuffix>RC</VersionSuffix> --> <!-- The following settings are used as default values for ALL projects --> diff --git a/Documentation/User Manual Source/Release Notes Vecto4.x.pptx b/Documentation/User Manual Source/Release Notes Vecto4.x.pptx index 5d1edbf415e457bb4f3385f904d61ea30f157a9b..0e093b114f1df9db8338c153d5e7dc9182fa5424 100644 Binary files a/Documentation/User Manual Source/Release Notes Vecto4.x.pptx and b/Documentation/User Manual Source/Release Notes Vecto4.x.pptx differ diff --git a/Documentation/User Manual/6-changelog/changelog.md b/Documentation/User Manual/6-changelog/changelog.md index 5a90a7278b22445166424a9d04a5c8051927742b..637a4ac27da38452d0d75ba11b3409f196c8c9b7 100644 --- a/Documentation/User Manual/6-changelog/changelog.md +++ b/Documentation/User Manual/6-changelog/changelog.md @@ -2,6 +2,12 @@ **VECTO-4.0.2** +***Build 3275 (2023-12-20)*** + +- Hotfix + * CodeEU-273, CodeEU-274: Changes in the AMT shift strategy regarding idling speed caused simulation aborts + * CodeEU-260: regression fix handling overload buffer + ***Build 3273 (2023-12-18)*** - Bugfixes diff --git a/Documentation/User Manual/help.html b/Documentation/User Manual/help.html index b38947ecf46f0a1b1f061eee2aa5751b3fc36c7b..df7c636f64a42ee1b1f54aef7b4cba05cd656b09 100644 --- a/Documentation/User Manual/help.html +++ b/Documentation/User Manual/help.html @@ -10624,6 +10624,15 @@ stored as LOG_backup.txt.</p> <section id="changelog" class="level1"> <h1>Changelog</h1> <p><strong>VECTO-4.0.2</strong></p> +<p><strong><em>Build 3275 (2023-12-20)</em></strong></p> +<ul> +<li>Hotfix +<ul> +<li>CodeEU-273, CodeEU-274: Changes in the AMT shift strategy regarding +idling speed caused simulation aborts</li> +<li>CodeEU-260: regression fix handling overload buffer</li> +</ul></li> +</ul> <p><strong><em>Build 3273 (2023-12-18)</em></strong></p> <ul> <li>Bugfixes diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs index 4c52c92559dab42c6f5ce821e9c6f54c2d9e1c26..781bb713b5ac5bd437494116182f99fc64dffea7 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs @@ -354,6 +354,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen protected OverloadData CalculateOverloadData(IElectricMotorDeclarationInputData motorData, int count, VoltageLevelData voltageLevel, Volt averageVoltage) { + var vMin = motorData.VoltageLevels.MinBy(x => x.VoltageLevel); + var vMax = motorData.VoltageLevels.MaxBy(x => x.VoltageLevel); + + var ratioContTqMin = vMin.ContinuousTorque / vMin.OverloadTorque; + var ratioContTqMax = vMax.ContinuousTorque / vMax.OverloadTorque; + bool lowContinuousTorque = ratioContTqMin < 0.1 && ratioContTqMax < 0.1; + // if average voltage is outside of the voltage-level range, do not extrapolate but take the min voltage entry, or max voltage entry if (averageVoltage < motorData.VoltageLevels.Min(x => x.VoltageLevel)) { return CalculateOverloadBuffer(motorData.VoltageLevels.First(), count, voltageLevel); @@ -366,14 +373,36 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen var ovlLo = CalculateOverloadBuffer(vLow, count, voltageLevel); var ovlHi = CalculateOverloadBuffer(vHigh, count, voltageLevel); - var retVal = new OverloadData() { + var continuousPowerLoss = lowContinuousTorque + ? VectoMath.Interpolate(vLow.VoltageLevel, + vHigh.VoltageLevel, CalculatePowerLossLowContinuousTorque(vLow, count, voltageLevel), + CalculatePowerLossLowContinuousTorque(vHigh, count, voltageLevel), averageVoltage) + : VectoMath.Interpolate(vLow.VoltageLevel, + vHigh.VoltageLevel, ovlLo.ContinuousPowerLoss, ovlHi.ContinuousPowerLoss, averageVoltage); + + var retVal = new OverloadData() { OverloadBuffer = VectoMath.Interpolate(vLow.VoltageLevel, vHigh.VoltageLevel, ovlLo.OverloadBuffer, ovlHi.OverloadBuffer, averageVoltage), ContinuousTorque = VectoMath.Interpolate(vLow.VoltageLevel, vHigh.VoltageLevel, ovlLo.ContinuousTorque, ovlHi.ContinuousTorque, averageVoltage), - ContinuousPowerLoss = VectoMath.Interpolate(vLow.VoltageLevel, vHigh.VoltageLevel, ovlLo.ContinuousPowerLoss, ovlHi.ContinuousPowerLoss, averageVoltage) + ContinuousPowerLoss = continuousPowerLoss }; return retVal; } + private Watt CalculatePowerLossLowContinuousTorque(IElectricMotorVoltageLevel voltageEntry, int count, VoltageLevelData voltageLevel) + { + var estimatedContTq = voltageEntry.OverloadTorque * count * 0.5; + var extimatedContTqSpeed = voltageEntry.OverloadTestSpeed; + var gear = new GearshiftPosition(0); + var contElPwr = voltageLevel.LookupElectricPower(voltageEntry.VoltageLevel, extimatedContTqSpeed, + -estimatedContTq, gear).ElectricalPower ?? + voltageLevel.LookupElectricPower(voltageEntry.VoltageLevel, extimatedContTqSpeed, + voltageLevel.FullLoadDriveTorque(voltageEntry.VoltageLevel, extimatedContTqSpeed), + gear, true).ElectricalPower; + + var continuousPowerLoss = -contElPwr - estimatedContTq * extimatedContTqSpeed; // loss needs to be positive + return continuousPowerLoss; + } + protected OverloadData CalculateOverloadBuffer(IElectricMotorVoltageLevel voltageEntry, int count, VoltageLevelData voltageLevel, Tuple<uint, double> gearUsedForMeasurement = null) { diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategy.cs index 2a0e7ed8b22f293d678e2b95f2d48c38a53cca51..5bab4a423b21d3d95b3e204b3610b98c3cf0b362 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Shiftstrategies/AMTShiftStrategy.cs @@ -109,8 +109,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl private bool SpeedTooLowForEngine(GearshiftPosition gear, PerSecond outAngularSpeed) { - return (outAngularSpeed * GearboxModelData.Gears[gear.Gear].Ratio).IsSmaller( - Constants.SimulationSettings.DownshiftIdlespeedFactor * DataBus.EngineInfo.EngineIdleSpeed); + return (outAngularSpeed * GearboxModelData.Gears[gear.Gear].Ratio).IsSmaller(DataBus.EngineInfo.EngineIdleSpeed); } private bool SpeedTooHighForEngine(GearshiftPosition gear, PerSecond outAngularSpeed)