From ea3ea74d512bfeb86d9a827762c7af6960f644fb Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Mon, 16 Nov 2020 08:47:10 +0100 Subject: [PATCH] update .vmod and .vsum: consistent naming of EM related fields (use drive instead of motoring, correct units, add fields for em losses and em transmission losses .vsum: add ice off time share, correct units, adding energy demand electric aux high voltage system --- VECTO.sln.DotSettings | 1 + .../Simulation/Data/ModalResultField.cs | 5 +- .../SimulationComponent/Impl/ElectricMotor.cs | 1 + .../OutputData/IModalDataContainer.cs | 38 +++++++++---- .../OutputData/ModalDataContainer.cs | 27 +++++++-- .../OutputData/SummaryDataContainer.cs | 56 +++++++++++-------- .../OutputData/XML/XMLDeclarationReport.cs | 2 +- .../Utils/MockModalDataContainer.cs | 16 +++++- 8 files changed, 101 insertions(+), 45 deletions(-) diff --git a/VECTO.sln.DotSettings b/VECTO.sln.DotSettings index f44930e081..978725d131 100644 --- a/VECTO.sln.DotSettings +++ b/VECTO.sln.DotSettings @@ -38,6 +38,7 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CSV/@EntryIndexedValue">CSV</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EPTP/@EntryIndexedValue">EPTP</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HVAC/@EntryIndexedValue">HVAC</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ICE/@EntryIndexedValue">ICE</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JSON/@EntryIndexedValue">JSON</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MT/@EntryIndexedValue">MT</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NS/@EntryIndexedValue">NS</s:String> diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index 9dd32494cb..2bc2cc74bd 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -380,7 +380,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "n_em-{0}_avg [1/min]", outputFactor: 60 / (2 * Math.PI))] n_electricMotor_, [ModalResultField(typeof(SI), caption: "T_em-{0} [Nm]")] T_electricMotor_, - [ModalResultField(typeof(SI), caption: "T_em-{0}_mot_max [Nm]")] T_electricMotor_drive_max_, + [ModalResultField(typeof(SI), caption: "T_em-{0}_drive_max [Nm]")] T_electricMotor_drive_max_, [ModalResultField(typeof(SI), caption: "T_em-{0}_gen_max [Nm]")] T_electricMotor_gen_max_, [ModalResultField(typeof(SI), caption: "P_em-{0}_in [kW]", outputFactor: 1e-3)] P_electricMotor_in_, [ModalResultField(typeof(SI), caption: "P_em-{0}_out [kW]", outputFactor: 1e-3)] P_electricMotor_out_, @@ -390,6 +390,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "P_em-{0}_drive_max [kW]", outputFactor: 1e-3)] P_electricMotor_drive_max_, //[ModalResultField(typeof(SI), caption: "P_em-{0}_brake [kW]", outputFactor: 1e-3)] P_electricMotor_brake_, [ModalResultField(typeof(SI), caption: "P_em-{0}_loss [kW]", outputFactor: 1e-3)] P_electricMotorLoss_, + [ModalResultField(typeof(SI), caption: "P_em-{0}_transm_loss [kW]", outputFactor: 1e-3)] P_electricMotorTransmissionLoss_, [ModalResultField(typeof(SI), caption: "P_em-{0}_inertia_loss [kW]", outputFactor: 1e-3)] P_electricMotorInertiaLoss_, [ModalResultField(typeof(SI), caption: "EM-{0}_OverloadBuffer [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_, @@ -419,7 +420,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "P_reess discharge max [kW]", outputFactor: 1e-3)] P_reess_discharge_max, [ModalResultField(typeof(SI), caption: "U_reess_terminal [V]")] U_reess_terminal, [ModalResultField(typeof(SI), caption: "U_0_reess [V]")] U0_reess, - [ModalResultField(typeof(SI), caption: "I_reess [kW]")] I_reess, + [ModalResultField(typeof(SI), caption: "I_reess [A]")] I_reess, [ModalResultField(typeof(SI), caption: "E_reess [kWh]", outputFactor: 1/3600e3)] E_RESS, } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs index 02b796e4f3..1ab7d3136d 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs @@ -421,6 +421,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl container[ModalResultField.P_electricMotor_gen_max_, Position] = (CurrentState.DragMax ?? 0.SI<NewtonMeter>()) * avgSpeed; container[ModalResultField.P_electricMotor_drive_max_, Position] = (CurrentState.DriveMax ?? 0.SI<NewtonMeter>()) * avgSpeed; container[ModalResultField.P_electricMotorLoss_, Position] = (CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed - (CurrentState.ElectricPowerToBattery); + container[ModalResultField.P_electricMotorTransmissionLoss_, Position] = 0.SI<Watt>(); container[ModalResultField.P_electricMotorInertiaLoss_, Position] = CurrentState.InertiaTorqueLoss * avgSpeed; var contribution = diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 480279985e..fad3bc204a 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -130,11 +130,14 @@ namespace TUGraz.VectoCore.OutputData double ElectricMotorEfficiencyDrive(PowertrainPosition emPos); double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos); WattSecond ElectricMotorOffLosses(PowertrainPosition emPos); - double BatteryStartSoC(); - double BatteryEndSoC(); - WattSecond BatteryLoss(); - WattSecond BatteryEnergyEnd(); - + WattSecond ElectricMotorLosses(PowertrainPosition emPos); + WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos); + + double BatteryStartSoC(); + double REESSEndSoC(); + WattSecond REESSLoss(); + WattSecond REESSEnergyEnd(); + } public static class ModalDataContainerExtensions @@ -353,23 +356,23 @@ namespace TUGraz.VectoCore.OutputData return data.TimeIntegral<WattSecond>(ModalResultField.P_wheel_in) / data.Duration; } - public static WattSecond WorkBatteryChargeTerminal(this IModalDataContainer data) + public static WattSecond WorkREESSChargeTerminal(this IModalDataContainer data) { return data.TimeIntegral<WattSecond>(ModalResultField.P_reess_terminal, x => x.IsGreater(0)); } - public static WattSecond WorkBatteryDischargeTerminal(this IModalDataContainer data) + public static WattSecond WorkREESSDischargeTerminal(this IModalDataContainer data) { return -data.TimeIntegral<WattSecond>(ModalResultField.P_reess_terminal, x => x.IsSmaller(0)); } - public static WattSecond WorkBatteryChargeInternal(this IModalDataContainer data) + public static WattSecond WorkREESSChargeInternal(this IModalDataContainer data) { return data.TimeIntegral<WattSecond>(ModalResultField.P_reess_int, x => x.IsGreater(0)); } - public static WattSecond WorkBatteryDischargeInternal(this IModalDataContainer data) + public static WattSecond WorkREESSDischargeInternal(this IModalDataContainer data) { return -data.TimeIntegral<WattSecond>(ModalResultField.P_reess_int, x => x.IsSmaller(0)); } @@ -532,16 +535,27 @@ namespace TUGraz.VectoCore.OutputData return data.Max<PerSecond>(ModalResultField.n_ice_avg); } - public static Scalar EngineMaxLoadTimeShare(this IModalDataContainer data) + public static Scalar ICEMaxLoadTimeShare(this IModalDataContainer data) { var sum = data.GetValues(x => new { tMax = x.Field<NewtonMeter>(ModalResultField.T_ice_full.GetName()).DefaultIfNull(-1), tEng = x.Field<NewtonMeter>(ModalResultField.T_ice_fcmap.GetName()).DefaultIfNull(0), - dt = x.Field<Second>(ModalResultField.simulationInterval.GetName()) - }).Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); + dt = x.Field<Second>(ModalResultField.simulationInterval.GetName()), + iceOn = !(x[ModalResultField.ICEOn.GetName()] is DBNull) && x.Field<bool>(ModalResultField.ICEOn.GetName()) + }).Where(x => x.iceOn).Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>(); return 100 * sum / data.Duration; } + public static Scalar ICEOffTimeShare(this IModalDataContainer data) + { + var iceOff = data.GetValues(x => new { + dt = x[ModalResultField.ICEOn.GetName()] is DBNull + ? 0.SI<Second>() + : x.Field<Second>(ModalResultField.simulationInterval.GetName()) + }).Sum(x => x.dt) ?? 0.SI<Second>(); + return 100 * iceOff / data.Duration; + } + /// <summary> /// The following logic applies: /// - shifting from gear A to gear B counts as gearshift (with or without traction interruption) diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 57582061c3..82aed0a061 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -70,6 +70,7 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.P_electricMotor_in_, ModalResultField.P_electricMotor_out_, ModalResultField.P_electricMotor_mech_, ModalResultField.P_electricMotor_el_, ModalResultField.P_electricMotorLoss_, ModalResultField.P_electricMotorInertiaLoss_, + ModalResultField.P_electricMotorTransmissionLoss_, /*ModalResultField.P_electricMotor_brake_,*/ ModalResultField.P_electricMotor_drive_max_, ModalResultField.P_electricMotor_gen_max_, ModalResultField.ElectricMotor_OvlBuffer_ }; @@ -351,7 +352,25 @@ namespace TUGraz.VectoCore.OutputData return selected.Where(x => x.P_em.IsEqual(0)).Sum(x => x.E_mech) ?? 0.SI<WattSecond>(); } - public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos) + public WattSecond ElectricMotorLosses(PowertrainPosition emPos) + { + return Data.AsEnumerable().Cast<DataRow>().Sum(r => { + var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName()); + return r.Field<Watt>(string.Format(ModalResultField.P_electricMotorLoss_.GetCaption(), + emPos.GetName())) * dt; + }); + } + + public WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos) + { + return Data.AsEnumerable().Cast<DataRow>().Sum(r => { + var dt = r.Field<Second>(ModalResultField.simulationInterval.GetName()); + return r.Field<Watt>(string.Format(ModalResultField.P_electricMotorTransmissionLoss_.GetCaption(), + emPos.GetName())) * dt; + }); + } + + public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos) { var integral = GetValues(x => x.Field<PerSecond>(string.Format(ModalResultField.n_electricMotor_.GetCaption(), emPos.GetName())).Value() * x.Field<Second>(ModalResultField.simulationInterval.GetName()).Value()).Sum(); @@ -363,17 +382,17 @@ namespace TUGraz.VectoCore.OutputData return Data.AsEnumerable().Cast<DataRow>().First().Field<SI>(ModalResultField.REESSStateOfCharge.GetName()).Value() * 100; } - public double BatteryEndSoC() + public double REESSEndSoC() { return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.REESSStateOfCharge.GetName()).Value() * 100; } - public WattSecond BatteryLoss() + public WattSecond REESSLoss() { return TimeIntegral<WattSecond>(ModalResultField.P_reess_loss); } - public WattSecond BatteryEnergyEnd() + public WattSecond REESSEnergyEnd() { return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.E_RESS.GetName()) .Cast<WattSecond>(); diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 5cb0ad09a9..16f553f788 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -39,6 +39,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.Impl; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; @@ -177,7 +178,7 @@ namespace TUGraz.VectoCore.OutputData Table.Columns.AddRange( new[] { Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, Fields.CO2_PKM, Fields.P_WHEEL, Fields.P_WHEEL_POS, Fields.P_FCMAP, Fields.P_FCMAP_POS, - Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, Fields.E_CLUTCH_LOSS, + Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, Fields.E_AUX_EL_HV, Fields.E_CLUTCH_LOSS, Fields.E_TC_LOSS, Fields.E_SHIFT_LOSS, Fields.E_GBX_LOSS, Fields.E_RET_LOSS, Fields.E_ANGLE_LOSS, Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, Fields.E_ROLL, Fields.E_GRAD, Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn, @@ -188,7 +189,7 @@ namespace TUGraz.VectoCore.OutputData Fields.E_WHR_EL, Fields.E_WHR_MECH, Fields.E_AUX_ESS_MECH, Fields.E_ICE_START, Fields.NUM_ICE_STARTS, Fields.ACC, Fields.ACC_POS, Fields.ACC_NEG, Fields.ACC_TIMESHARE, Fields.DEC_TIMESHARE, Fields.CRUISE_TIMESHARE, Fields.MAX_SPEED, Fields.MAX_ACCELERATION, Fields.MAX_DECELERATION, Fields.AVG_ENGINE_SPEED, - Fields.MAX_ENGINE_SPEED, Fields.NUM_GEARSHIFTS, Fields.STOP_TIMESHARE, Fields.ENGINE_FULL_LOAD_TIME_SHARE, + Fields.MAX_ENGINE_SPEED, Fields.NUM_GEARSHIFTS, Fields.STOP_TIMESHARE, Fields.ICE_FULL_LOAD_TIME_SHARE, Fields.ICE_OFF_TIME_SHARE, Fields.COASTING_TIME_SHARE, Fields.BRAKING_TIME_SHARE, Fields.AVERAGE_POS_ACC }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); @@ -357,7 +358,8 @@ namespace TUGraz.VectoCore.OutputData WritePerformanceEntries(runData, modData, row); - row[Fields.ENGINE_FULL_LOAD_TIME_SHARE] = (ConvertedSI)modData.EngineMaxLoadTimeShare(); + row[Fields.ICE_FULL_LOAD_TIME_SHARE] = (ConvertedSI)modData.ICEMaxLoadTimeShare(); + row[Fields.ICE_OFF_TIME_SHARE] = (ConvertedSI)modData.ICEOffTimeShare(); row[Fields.COASTING_TIME_SHARE] = (ConvertedSI)modData.CoastingTimeShare(); row[Fields.BRAKING_TIME_SHARE] = (ConvertedSI)modData.BrakingTimeShare(); @@ -686,6 +688,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.E_FCMAP_NEG] = (-modData.TotalEngineWorkNegative()).ConvertToKiloWattHour(); row[Fields.E_POWERTRAIN_INERTIA] = modData.PowerAccelerations().ConvertToKiloWattHour(); row[Fields.E_AUX] = modData.WorkAuxiliaries().ConvertToKiloWattHour(); + row[Fields.E_AUX_EL_HV] = modData.TimeIntegral<WattSecond>(ModalResultField.P_aux_el).ConvertToKiloWattHour(); row[Fields.E_CLUTCH_LOSS] = modData.WorkClutch().ConvertToKiloWattHour(); row[Fields.E_TC_LOSS] = modData.WorkTorqueConverter().ConvertToKiloWattHour(); row[Fields.E_SHIFT_LOSS] = modData.WorkGearshift().ConvertToKiloWattHour(); @@ -724,9 +727,11 @@ namespace TUGraz.VectoCore.OutputData Tuple.Create(Fields.E_EM_DRIVE_FORMAT, modData.TotalElectricMotorWorkDrive(em.Item1).ConvertToKiloWattHour()), Tuple.Create(Fields.E_EM_GENERATE_FORMAT, modData.TotalElectricMotorWorkRecuperate(em.Item1).ConvertToKiloWattHour()), Tuple.Create(Fields.E_EM_AVG_SPEED_FORMAT, modData.ElectricMotorAverageSpeed(em.Item1).ConvertToRoundsPerMinute()), - Tuple.Create(Fields.E_EM_ETA_MOT_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyDrive(em.Item1), "")), + Tuple.Create(Fields.E_EM_ETA_DRIVE_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyDrive(em.Item1), "")), Tuple.Create(Fields.E_EM_ETA_GEN_FORMAT, new ConvertedSI(modData.ElectricMotorEfficiencyGenerate(em.Item1), "")), - Tuple.Create(Fields.E_EM_OFF_Loss_Format, modData.ElectricMotorOffLosses(em.Item1).ConvertToKiloWattHour()) + Tuple.Create(Fields.E_EM_OFF_Loss_Format, modData.ElectricMotorOffLosses(em.Item1).ConvertToKiloWattHour()), + Tuple.Create(Fields.E_EM_LOSS_FORMAT, modData.ElectricMotorLosses(em.Item1).ConvertToKiloWattHour()), + Tuple.Create(Fields.E_EM_LOSS_TRANSM_FORMAT, modData.ElectricMotorTransmissionLosses(em.Item1).ConvertToKiloWattHour()) }; emColumns.Reverse(); foreach (var entry in emColumns) { @@ -760,32 +765,32 @@ namespace TUGraz.VectoCore.OutputData var col = Table.Columns.Add(field, typeof(ConvertedSI)); col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); } - row[Fields.E_REESS_LOSS] = modData.BatteryLoss().ConvertToKiloWattHour(); - row[Fields.E_REESS_T_chg] = modData.WorkBatteryChargeTerminal().ConvertToKiloWattHour(); - row[Fields.E_REESS_T_dischg] = modData.WorkBatteryDischargeTerminal().ConvertToKiloWattHour(); - row[Fields.E_REESS_int_chg] = modData.WorkBatteryChargeInternal().ConvertToKiloWattHour(); - row[Fields.E_REESS_int_dischg] = modData.WorkBatteryDischargeInternal().ConvertToKiloWattHour(); + row[Fields.E_REESS_LOSS] = modData.REESSLoss().ConvertToKiloWattHour(); + row[Fields.E_REESS_T_chg] = modData.WorkREESSChargeTerminal().ConvertToKiloWattHour(); + row[Fields.E_REESS_T_dischg] = modData.WorkREESSDischargeTerminal().ConvertToKiloWattHour(); + row[Fields.E_REESS_int_chg] = modData.WorkREESSChargeInternal().ConvertToKiloWattHour(); + row[Fields.E_REESS_int_dischg] = modData.WorkREESSDischargeInternal().ConvertToKiloWattHour(); } if (runData.BatteryData != null) { row[Fields.REESS_StartSoC] = runData.BatteryData.InitialSoC * 100; - row[Fields.REESS_EndSoC] = modData.BatteryEndSoC(); + row[Fields.REESS_EndSoC] = modData.REESSEndSoC(); var cellVoltage = runData.BatteryData.SOCMap.Lookup(runData.BatteryData.InitialSoC); row[Fields.REESS_DeltaSoC] = - (modData.BatteryEnergyEnd() - + (modData.REESSEnergyEnd() - (runData.BatteryData.InitialSoC * runData.BatteryData.Capacity * cellVoltage).Cast<WattSecond>()).ConvertToKiloWattHour(); } if (runData.SuperCapData != null) { row[Fields.REESS_StartSoC] = runData.SuperCapData.InitialSoC * 100; - row[Fields.REESS_EndSoC] = modData.BatteryEndSoC(); + row[Fields.REESS_EndSoC] = modData.REESSEndSoC(); var initialCharge = runData.SuperCapData.Capacity * ((runData.SuperCapData.MaxVoltage - runData.SuperCapData.MinVoltage) * runData.SuperCapData.InitialSoC + runData.SuperCapData.MinVoltage); row[Fields.REESS_DeltaSoC] = - (modData.BatteryEnergyEnd() - + (modData.REESSEnergyEnd() - (initialCharge * initialCharge / runData.SuperCapData.Capacity / 2.0).Cast<WattSecond>()).ConvertToKiloWattHour(); @@ -1186,6 +1191,8 @@ namespace TUGraz.VectoCore.OutputData public const string E_AUX_FORMAT = "E_aux_{0} [kWh]"; public const string E_AUX = "E_aux_sum [kWh]"; + public const string E_AUX_EL_HV = "E_aux_el(HV) [kWh]"; + public const string E_AUX_ESS_MECH = "E_aux_ess_mech [kWh]"; public const string E_ICE_START = "E_ice_start [kWh]"; public const string NUM_ICE_STARTS = "ice_starts [-]"; @@ -1245,9 +1252,10 @@ namespace TUGraz.VectoCore.OutputData public const string AVG_ENGINE_SPEED = "n_eng_avg [rpm]"; public const string MAX_ENGINE_SPEED = "n_eng_max [rpm]"; public const string NUM_GEARSHIFTS = "gear shifts [-]"; - public const string ENGINE_FULL_LOAD_TIME_SHARE = "Engine max. Load time share [%]"; + public const string ICE_FULL_LOAD_TIME_SHARE = "ICE max. Load time share [%]"; + public const string ICE_OFF_TIME_SHARE = "ICE off time share [%]"; public const string COASTING_TIME_SHARE = "CoastingTimeShare [%]"; - public const string BRAKING_TIME_SHARE = "BrakingTImeShare [%]"; + public const string BRAKING_TIME_SHARE = "BrakingTimeShare [%]"; public const string TIME_SHARE_PER_GEAR_FORMAT = "Gear {0} TimeShare [%]"; @@ -1275,27 +1283,27 @@ namespace TUGraz.VectoCore.OutputData //public const string PTO_OTHER_ELEMENTS = "PTOOtherElements"; public const string ENGINE_CERTIFICATION_NUMBER = "Engine certification number"; - public const string AVERAGE_ENGINE_EFFICIENCY = "Average engine efficiency [%]"; + public const string AVERAGE_ENGINE_EFFICIENCY = "Average engine efficiency [-]"; public const string TORQUE_CONVERTER_CERTIFICATION_NUMBER = "TorqueConverter certification number"; public const string TORQUE_CONVERTER_CERTIFICATION_METHOD = "Torque converter certification option"; public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP = - "Average torque converter efficiency with lockup [%]"; + "Average torque converter efficiency with lockup [-]"; public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP = - "Average torque converter efficiency w/o lockup [%]"; + "Average torque converter efficiency w/o lockup [-]"; public const string GEARBOX_CERTIFICATION_NUMBER = "Gearbox certification number"; public const string GEARBOX_CERTIFICATION_METHOD = "Gearbox certification option"; - public const string AVERAGE_GEARBOX_EFFICIENCY = "Average gearbox efficiency [%]"; + public const string AVERAGE_GEARBOX_EFFICIENCY = "Average gearbox efficiency [-]"; public const string RETARDER_CERTIFICATION_NUMBER = "Retarder certification number"; public const string RETARDER_CERTIFICATION_METHOD = "Retarder certification option"; public const string ANGLEDRIVE_CERTIFICATION_NUMBER = "Angledrive certification number"; public const string ANGLEDRIVE_CERTIFICATION_METHOD = "Angledrive certification option"; - public const string AVERAGE_ANGLEDRIVE_EFFICIENCY = "Average angledrive efficiency [%]"; + public const string AVERAGE_ANGLEDRIVE_EFFICIENCY = "Average angledrive efficiency [-]"; public const string AXLEGEAR_CERTIFICATION_NUMBER = "Axlegear certification number"; public const string AXLEGEAR_CERTIFICATION_METHOD = "Axlegear certification method"; - public const string AVERAGE_AXLEGEAR_EFFICIENCY = "Average axlegear efficiency [%]"; + public const string AVERAGE_AXLEGEAR_EFFICIENCY = "Average axlegear efficiency [-]"; public const string AIRDRAG_CERTIFICATION_NUMBER = "AirDrag certification number"; public const string AIRDRAG_CERTIFICATION_METHOD = "AirDrag certification option"; @@ -1304,9 +1312,11 @@ namespace TUGraz.VectoCore.OutputData public const string E_EM_DRIVE_FORMAT = "E_EM_{0}_drive [kWh]"; public const string E_EM_GENERATE_FORMAT = "E_EM_{0}_gen [kWh]"; public const string E_EM_AVG_SPEED_FORMAT = "n_EM_{0}_avg [rpm]"; - public const string E_EM_ETA_MOT_FORMAT = "η_EM_{0}_mot"; + public const string E_EM_ETA_DRIVE_FORMAT = "η_EM_{0}_drive"; public const string E_EM_ETA_GEN_FORMAT = "η_EM_{0}_gen"; public const string E_EM_OFF_Loss_Format = "E_EM_{0}_off_loss [kWh]"; + public const string E_EM_LOSS_FORMAT = "E_EM_{0}_loss [kWh]"; + public const string E_EM_LOSS_TRANSM_FORMAT = "E_EM_{0}_transm_loss [kWh]"; public const string REESS_StartSoC = "REESS Start SoC [%]"; diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 57e6c057d6..9a19997d19 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.OutputData.XML MaxSpeed = data.MaxSpeed(); MaxAcceleration = data.MaxAcceleration(); MaxDeceleration = data.MaxDeceleration(); - FullLoadPercentage = data.EngineMaxLoadTimeShare(); + FullLoadPercentage = data.ICEMaxLoadTimeShare(); GearshiftCount = data.GearshiftCount(); var entriesDriving = data.GetValues( diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs index ef9f0f1d8c..23b5b02884 100644 --- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs @@ -301,22 +301,32 @@ namespace TUGraz.VectoCore.Tests.Utils throw new NotImplementedException(); } + public WattSecond ElectricMotorLosses(PowertrainPosition emPos) + { + throw new NotImplementedException(); + } + + public WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos) + { + throw new NotImplementedException(); + } + public double BatteryStartSoC() { throw new NotImplementedException(); } - public double BatteryEndSoC() + public double REESSEndSoC() { throw new NotImplementedException(); } - public WattSecond BatteryLoss() + public WattSecond REESSLoss() { throw new NotImplementedException(); } - public WattSecond BatteryEnergyEnd() + public WattSecond REESSEnergyEnd() { throw new NotImplementedException(); } -- GitLab