diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index b48aec3d79efaca6804a215991feccbe0c834f83..c75d8e1eb5dda5ed8e9781b6f554ed8a6e78ec40 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -487,9 +487,17 @@ namespace TUGraz.VectoCore.OutputData return 100 * sum / Duration(data); } + /// <summary> + /// The following logic applies: + /// - shifting from gear A to gear B counts as gearshift (with or without traction interruption) + /// - shifting from gear A to neutral couts as gearshift if the vehicle stopped + /// </summary> + /// <param name="data"></param> + /// <returns></returns> public static Scalar GearshiftCount(this IModalDataContainer data) { var prevGear = data.GetValues<uint>(ModalResultField.Gear).First(); + var lastGear = prevGear; var gearCount = 0; var shifts = data.GetValues(x => new { @@ -498,13 +506,17 @@ namespace TUGraz.VectoCore.OutputData }); foreach (var entry in shifts) { if (entry.Speed != null && entry.Speed.IsSmallerOrEqual(0.1)) { - prevGear = 0; - gearCount++; + if (prevGear != entry.Gear) { + gearCount++; + } } - if (entry.Gear == 0 || entry.Gear == prevGear) { - continue; + if (entry.Gear != 0 && entry.Gear != prevGear) { + if (lastGear != entry.Gear) { + gearCount++; + } + lastGear = entry.Gear; } - gearCount++; + prevGear = entry.Gear; } return gearCount.SI<Scalar>(); @@ -553,4 +565,4 @@ namespace TUGraz.VectoCore.OutputData return retVal; } } -} \ No newline at end of file +} diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index bcdb5921206047d2efb70eaecfa7e533da29283f..7f997ee209a67ede57dd26814c5093c4327cd6ed 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -110,6 +110,7 @@ <Compile Include="Models\Simulation\GetSectionTest.cs" /> <Compile Include="Models\Simulation\DeclarationSimulationFactoryTest.cs" /> <Compile Include="Reports\ActualModalSimulationDataTest.cs" /> + <Compile Include="Reports\GearshiftCountTest.cs" /> <Compile Include="Reports\ModDataTest.cs" /> <Compile Include="Models\Simulation\MeasuredSpeedModeTest.cs" /> <Compile Include="Models\Simulation\PwheelModeTests.cs" />