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 ea3ea74d authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

update .vmod and .vsum: consistent naming of EM related fields (use drive...

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
parent 9479fa31
No related branches found
No related tags found
No related merge requests found
...@@ -38,6 +38,7 @@ ...@@ -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/=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/=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/=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/=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/=MT/@EntryIndexedValue">MT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NS/@EntryIndexedValue">NS</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NS/@EntryIndexedValue">NS</s:String>
......
...@@ -380,7 +380,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ...@@ -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: "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} [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: "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}_in [kW]", outputFactor: 1e-3)] P_electricMotor_in_,
[ModalResultField(typeof(SI), caption: "P_em-{0}_out [kW]", outputFactor: 1e-3)] P_electricMotor_out_, [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 ...@@ -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}_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}_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}_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: "P_em-{0}_inertia_loss [kW]", outputFactor: 1e-3)] P_electricMotorInertiaLoss_,
[ModalResultField(typeof(SI), caption: "EM-{0}_OverloadBuffer [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_, [ModalResultField(typeof(SI), caption: "EM-{0}_OverloadBuffer [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_,
...@@ -419,7 +420,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data ...@@ -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: "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_reess_terminal [V]")] U_reess_terminal,
[ModalResultField(typeof(SI), caption: "U_0_reess [V]")] U0_reess, [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, [ModalResultField(typeof(SI), caption: "E_reess [kWh]", outputFactor: 1/3600e3)] E_RESS,
} }
......
...@@ -421,6 +421,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -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_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_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_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; container[ModalResultField.P_electricMotorInertiaLoss_, Position] = CurrentState.InertiaTorqueLoss * avgSpeed;
var contribution = var contribution =
......
...@@ -130,10 +130,13 @@ namespace TUGraz.VectoCore.OutputData ...@@ -130,10 +130,13 @@ namespace TUGraz.VectoCore.OutputData
double ElectricMotorEfficiencyDrive(PowertrainPosition emPos); double ElectricMotorEfficiencyDrive(PowertrainPosition emPos);
double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos); double ElectricMotorEfficiencyGenerate(PowertrainPosition emPos);
WattSecond ElectricMotorOffLosses(PowertrainPosition emPos); WattSecond ElectricMotorOffLosses(PowertrainPosition emPos);
WattSecond ElectricMotorLosses(PowertrainPosition emPos);
WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos);
double BatteryStartSoC(); double BatteryStartSoC();
double BatteryEndSoC(); double REESSEndSoC();
WattSecond BatteryLoss(); WattSecond REESSLoss();
WattSecond BatteryEnergyEnd(); WattSecond REESSEnergyEnd();
} }
...@@ -353,23 +356,23 @@ namespace TUGraz.VectoCore.OutputData ...@@ -353,23 +356,23 @@ namespace TUGraz.VectoCore.OutputData
return data.TimeIntegral<WattSecond>(ModalResultField.P_wheel_in) / data.Duration; 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)); 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)); 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)); 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)); return -data.TimeIntegral<WattSecond>(ModalResultField.P_reess_int, x => x.IsSmaller(0));
} }
...@@ -532,16 +535,27 @@ namespace TUGraz.VectoCore.OutputData ...@@ -532,16 +535,27 @@ namespace TUGraz.VectoCore.OutputData
return data.Max<PerSecond>(ModalResultField.n_ice_avg); 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 { var sum = data.GetValues(x => new {
tMax = x.Field<NewtonMeter>(ModalResultField.T_ice_full.GetName()).DefaultIfNull(-1), tMax = x.Field<NewtonMeter>(ModalResultField.T_ice_full.GetName()).DefaultIfNull(-1),
tEng = x.Field<NewtonMeter>(ModalResultField.T_ice_fcmap.GetName()).DefaultIfNull(0), tEng = x.Field<NewtonMeter>(ModalResultField.T_ice_fcmap.GetName()).DefaultIfNull(0),
dt = x.Field<Second>(ModalResultField.simulationInterval.GetName()) 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>(); 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; 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> /// <summary>
/// The following logic applies: /// The following logic applies:
/// - shifting from gear A to gear B counts as gearshift (with or without traction interruption) /// - shifting from gear A to gear B counts as gearshift (with or without traction interruption)
......
...@@ -70,6 +70,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -70,6 +70,7 @@ namespace TUGraz.VectoCore.OutputData
ModalResultField.P_electricMotor_in_, ModalResultField.P_electricMotor_out_, ModalResultField.P_electricMotor_in_, ModalResultField.P_electricMotor_out_,
ModalResultField.P_electricMotor_mech_, ModalResultField.P_electricMotor_el_, ModalResultField.P_electricMotor_mech_, ModalResultField.P_electricMotor_el_,
ModalResultField.P_electricMotorLoss_, ModalResultField.P_electricMotorInertiaLoss_, ModalResultField.P_electricMotorLoss_, ModalResultField.P_electricMotorInertiaLoss_,
ModalResultField.P_electricMotorTransmissionLoss_,
/*ModalResultField.P_electricMotor_brake_,*/ ModalResultField.P_electricMotor_drive_max_, /*ModalResultField.P_electricMotor_brake_,*/ ModalResultField.P_electricMotor_drive_max_,
ModalResultField.P_electricMotor_gen_max_, ModalResultField.ElectricMotor_OvlBuffer_ ModalResultField.P_electricMotor_gen_max_, ModalResultField.ElectricMotor_OvlBuffer_
}; };
...@@ -351,6 +352,24 @@ namespace TUGraz.VectoCore.OutputData ...@@ -351,6 +352,24 @@ namespace TUGraz.VectoCore.OutputData
return selected.Where(x => x.P_em.IsEqual(0)).Sum(x => x.E_mech) ?? 0.SI<WattSecond>(); return selected.Where(x => x.P_em.IsEqual(0)).Sum(x => x.E_mech) ?? 0.SI<WattSecond>();
} }
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) public PerSecond ElectricMotorAverageSpeed(PowertrainPosition emPos)
{ {
var integral = GetValues(x => x.Field<PerSecond>(string.Format(ModalResultField.n_electricMotor_.GetCaption(), emPos.GetName())).Value() * var integral = GetValues(x => x.Field<PerSecond>(string.Format(ModalResultField.n_electricMotor_.GetCaption(), emPos.GetName())).Value() *
...@@ -363,17 +382,17 @@ namespace TUGraz.VectoCore.OutputData ...@@ -363,17 +382,17 @@ namespace TUGraz.VectoCore.OutputData
return Data.AsEnumerable().Cast<DataRow>().First().Field<SI>(ModalResultField.REESSStateOfCharge.GetName()).Value() * 100; 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; 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); 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()) return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.E_RESS.GetName())
.Cast<WattSecond>(); .Cast<WattSecond>();
......
...@@ -39,6 +39,7 @@ using TUGraz.VectoCommon.InputData; ...@@ -39,6 +39,7 @@ using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.InputData.Reader.ComponentData;
using TUGraz.VectoCore.InputData.Reader.Impl; using TUGraz.VectoCore.InputData.Reader.Impl;
using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Data;
...@@ -177,7 +178,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -177,7 +178,7 @@ namespace TUGraz.VectoCore.OutputData
Table.Columns.AddRange( Table.Columns.AddRange(
new[] { 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.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_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.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, Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn,
...@@ -188,7 +189,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -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.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.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_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 Fields.COASTING_TIME_SHARE, Fields.BRAKING_TIME_SHARE, Fields.AVERAGE_POS_ACC
}.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray());
...@@ -357,7 +358,8 @@ namespace TUGraz.VectoCore.OutputData ...@@ -357,7 +358,8 @@ namespace TUGraz.VectoCore.OutputData
WritePerformanceEntries(runData, modData, row); 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.COASTING_TIME_SHARE] = (ConvertedSI)modData.CoastingTimeShare();
row[Fields.BRAKING_TIME_SHARE] = (ConvertedSI)modData.BrakingTimeShare(); row[Fields.BRAKING_TIME_SHARE] = (ConvertedSI)modData.BrakingTimeShare();
...@@ -686,6 +688,7 @@ namespace TUGraz.VectoCore.OutputData ...@@ -686,6 +688,7 @@ namespace TUGraz.VectoCore.OutputData
row[Fields.E_FCMAP_NEG] = (-modData.TotalEngineWorkNegative()).ConvertToKiloWattHour(); row[Fields.E_FCMAP_NEG] = (-modData.TotalEngineWorkNegative()).ConvertToKiloWattHour();
row[Fields.E_POWERTRAIN_INERTIA] = modData.PowerAccelerations().ConvertToKiloWattHour(); row[Fields.E_POWERTRAIN_INERTIA] = modData.PowerAccelerations().ConvertToKiloWattHour();
row[Fields.E_AUX] = modData.WorkAuxiliaries().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_CLUTCH_LOSS] = modData.WorkClutch().ConvertToKiloWattHour();
row[Fields.E_TC_LOSS] = modData.WorkTorqueConverter().ConvertToKiloWattHour(); row[Fields.E_TC_LOSS] = modData.WorkTorqueConverter().ConvertToKiloWattHour();
row[Fields.E_SHIFT_LOSS] = modData.WorkGearshift().ConvertToKiloWattHour(); row[Fields.E_SHIFT_LOSS] = modData.WorkGearshift().ConvertToKiloWattHour();
...@@ -724,9 +727,11 @@ namespace TUGraz.VectoCore.OutputData ...@@ -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_DRIVE_FORMAT, modData.TotalElectricMotorWorkDrive(em.Item1).ConvertToKiloWattHour()),
Tuple.Create(Fields.E_EM_GENERATE_FORMAT, modData.TotalElectricMotorWorkRecuperate(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_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_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(); emColumns.Reverse();
foreach (var entry in emColumns) { foreach (var entry in emColumns) {
...@@ -760,32 +765,32 @@ namespace TUGraz.VectoCore.OutputData ...@@ -760,32 +765,32 @@ namespace TUGraz.VectoCore.OutputData
var col = Table.Columns.Add(field, typeof(ConvertedSI)); var col = Table.Columns.Add(field, typeof(ConvertedSI));
col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal);
} }
row[Fields.E_REESS_LOSS] = modData.BatteryLoss().ConvertToKiloWattHour(); row[Fields.E_REESS_LOSS] = modData.REESSLoss().ConvertToKiloWattHour();
row[Fields.E_REESS_T_chg] = modData.WorkBatteryChargeTerminal().ConvertToKiloWattHour(); row[Fields.E_REESS_T_chg] = modData.WorkREESSChargeTerminal().ConvertToKiloWattHour();
row[Fields.E_REESS_T_dischg] = modData.WorkBatteryDischargeTerminal().ConvertToKiloWattHour(); row[Fields.E_REESS_T_dischg] = modData.WorkREESSDischargeTerminal().ConvertToKiloWattHour();
row[Fields.E_REESS_int_chg] = modData.WorkBatteryChargeInternal().ConvertToKiloWattHour(); row[Fields.E_REESS_int_chg] = modData.WorkREESSChargeInternal().ConvertToKiloWattHour();
row[Fields.E_REESS_int_dischg] = modData.WorkBatteryDischargeInternal().ConvertToKiloWattHour(); row[Fields.E_REESS_int_dischg] = modData.WorkREESSDischargeInternal().ConvertToKiloWattHour();
} }
if (runData.BatteryData != null) { if (runData.BatteryData != null) {
row[Fields.REESS_StartSoC] = runData.BatteryData.InitialSoC * 100; 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); var cellVoltage = runData.BatteryData.SOCMap.Lookup(runData.BatteryData.InitialSoC);
row[Fields.REESS_DeltaSoC] = row[Fields.REESS_DeltaSoC] =
(modData.BatteryEnergyEnd() - (modData.REESSEnergyEnd() -
(runData.BatteryData.InitialSoC * runData.BatteryData.Capacity * cellVoltage).Cast<WattSecond>()).ConvertToKiloWattHour(); (runData.BatteryData.InitialSoC * runData.BatteryData.Capacity * cellVoltage).Cast<WattSecond>()).ConvertToKiloWattHour();
} }
if (runData.SuperCapData != null) { if (runData.SuperCapData != null) {
row[Fields.REESS_StartSoC] = runData.SuperCapData.InitialSoC * 100; 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 * var initialCharge = runData.SuperCapData.Capacity *
((runData.SuperCapData.MaxVoltage - runData.SuperCapData.MinVoltage) * ((runData.SuperCapData.MaxVoltage - runData.SuperCapData.MinVoltage) *
runData.SuperCapData.InitialSoC + runData.SuperCapData.InitialSoC +
runData.SuperCapData.MinVoltage); runData.SuperCapData.MinVoltage);
row[Fields.REESS_DeltaSoC] = row[Fields.REESS_DeltaSoC] =
(modData.BatteryEnergyEnd() - (modData.REESSEnergyEnd() -
(initialCharge * initialCharge / runData.SuperCapData.Capacity / 2.0).Cast<WattSecond>()).ConvertToKiloWattHour(); (initialCharge * initialCharge / runData.SuperCapData.Capacity / 2.0).Cast<WattSecond>()).ConvertToKiloWattHour();
...@@ -1186,6 +1191,8 @@ namespace TUGraz.VectoCore.OutputData ...@@ -1186,6 +1191,8 @@ namespace TUGraz.VectoCore.OutputData
public const string E_AUX_FORMAT = "E_aux_{0} [kWh]"; public const string E_AUX_FORMAT = "E_aux_{0} [kWh]";
public const string E_AUX = "E_aux_sum [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_AUX_ESS_MECH = "E_aux_ess_mech [kWh]";
public const string E_ICE_START = "E_ice_start [kWh]"; public const string E_ICE_START = "E_ice_start [kWh]";
public const string NUM_ICE_STARTS = "ice_starts [-]"; public const string NUM_ICE_STARTS = "ice_starts [-]";
...@@ -1245,9 +1252,10 @@ namespace TUGraz.VectoCore.OutputData ...@@ -1245,9 +1252,10 @@ namespace TUGraz.VectoCore.OutputData
public const string AVG_ENGINE_SPEED = "n_eng_avg [rpm]"; public const string AVG_ENGINE_SPEED = "n_eng_avg [rpm]";
public const string MAX_ENGINE_SPEED = "n_eng_max [rpm]"; public const string MAX_ENGINE_SPEED = "n_eng_max [rpm]";
public const string NUM_GEARSHIFTS = "gear shifts [-]"; 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 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 [%]"; public const string TIME_SHARE_PER_GEAR_FORMAT = "Gear {0} TimeShare [%]";
...@@ -1275,27 +1283,27 @@ namespace TUGraz.VectoCore.OutputData ...@@ -1275,27 +1283,27 @@ namespace TUGraz.VectoCore.OutputData
//public const string PTO_OTHER_ELEMENTS = "PTOOtherElements"; //public const string PTO_OTHER_ELEMENTS = "PTOOtherElements";
public const string ENGINE_CERTIFICATION_NUMBER = "Engine certification number"; 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_NUMBER = "TorqueConverter certification number";
public const string TORQUE_CONVERTER_CERTIFICATION_METHOD = "Torque converter certification option"; public const string TORQUE_CONVERTER_CERTIFICATION_METHOD = "Torque converter certification option";
public const string AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP = 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 = 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_NUMBER = "Gearbox certification number";
public const string GEARBOX_CERTIFICATION_METHOD = "Gearbox certification option"; 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_NUMBER = "Retarder certification number";
public const string RETARDER_CERTIFICATION_METHOD = "Retarder certification option"; public const string RETARDER_CERTIFICATION_METHOD = "Retarder certification option";
public const string ANGLEDRIVE_CERTIFICATION_NUMBER = "Angledrive certification number"; public const string ANGLEDRIVE_CERTIFICATION_NUMBER = "Angledrive certification number";
public const string ANGLEDRIVE_CERTIFICATION_METHOD = "Angledrive certification option"; 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_NUMBER = "Axlegear certification number";
public const string AXLEGEAR_CERTIFICATION_METHOD = "Axlegear certification method"; 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_NUMBER = "AirDrag certification number";
public const string AIRDRAG_CERTIFICATION_METHOD = "AirDrag certification option"; public const string AIRDRAG_CERTIFICATION_METHOD = "AirDrag certification option";
...@@ -1304,9 +1312,11 @@ namespace TUGraz.VectoCore.OutputData ...@@ -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_DRIVE_FORMAT = "E_EM_{0}_drive [kWh]";
public const string E_EM_GENERATE_FORMAT = "E_EM_{0}_gen [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_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_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_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 [%]"; public const string REESS_StartSoC = "REESS Start SoC [%]";
......
...@@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.OutputData.XML ...@@ -139,7 +139,7 @@ namespace TUGraz.VectoCore.OutputData.XML
MaxSpeed = data.MaxSpeed(); MaxSpeed = data.MaxSpeed();
MaxAcceleration = data.MaxAcceleration(); MaxAcceleration = data.MaxAcceleration();
MaxDeceleration = data.MaxDeceleration(); MaxDeceleration = data.MaxDeceleration();
FullLoadPercentage = data.EngineMaxLoadTimeShare(); FullLoadPercentage = data.ICEMaxLoadTimeShare();
GearshiftCount = data.GearshiftCount(); GearshiftCount = data.GearshiftCount();
var entriesDriving = data.GetValues( var entriesDriving = data.GetValues(
......
...@@ -301,22 +301,32 @@ namespace TUGraz.VectoCore.Tests.Utils ...@@ -301,22 +301,32 @@ namespace TUGraz.VectoCore.Tests.Utils
throw new NotImplementedException(); throw new NotImplementedException();
} }
public WattSecond ElectricMotorLosses(PowertrainPosition emPos)
{
throw new NotImplementedException();
}
public WattSecond ElectricMotorTransmissionLosses(PowertrainPosition emPos)
{
throw new NotImplementedException();
}
public double BatteryStartSoC() public double BatteryStartSoC()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public double BatteryEndSoC() public double REESSEndSoC()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public WattSecond BatteryLoss() public WattSecond REESSLoss()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public WattSecond BatteryEnergyEnd() public WattSecond REESSEnergyEnd()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment