diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs index ab5a24e25b72b105e862b5842b6d3188952fb7e8..49749f994fcb11f8381547a17053d755196c789b 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs @@ -510,6 +510,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public IList<IElectricMotorVoltageLevel> VoltageLevels => _voltageLevels ?? (_voltageLevels = GetVoltageLevels()); + public TableData DragCurve => ReadDragCurve(); public TableData Conditioning => ElementExists(XMLNames.Conditioning) ? ReadConditioning() : null; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs index 64a42dba7127b3c5b3504093b3b3ff153bab9646..68b4bb322bda844197a0520fe91522c5c38a69ad 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/ElectricMachinesDataAdapter.cs @@ -265,9 +265,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen iepc = new StandardValuesInputData.StandardValueIEPCInputData(iepc, 1.SI<Volt>(), 10E9.SI<Volt>()); } - - - var pos = PowertrainPosition.IEPC; var count = iepc.DesignTypeWheelMotor && iepc.NrOfDesignTypeWheelMotorMeasured == 1 ? 2 : 1; @@ -277,7 +274,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen .Select(x => new { x.GearNumber, x.Ratio, Diff = Math.Round(Math.Abs(x.Ratio - 1), 6) }).GroupBy(x => x.Diff) .OrderBy(x => x.Key).First().OrderBy(x => x.Ratio).Reverse().First(); - var voltageLevels = new List<ElectricMotorVoltageLevelData>(); foreach (var entry in iepc.VoltageLevels.OrderBy(x => x.VoltageLevel).AsEnumerable()) { @@ -447,13 +443,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen if (iepc == null) { return null; } + if (iepc.CertificationMethod == CertificationMethod.StandardValues) { + //Fake one very low voltage level and one very high for standard values + iepc = new StandardValuesInputData.StandardValueIEPCInputData(iepc, 1.SI<Volt>(), 10E9.SI<Volt>()); + } - var pos = PowertrainPosition.IEPC; + var pos = PowertrainPosition.IEPC; var count = iepc.DesignTypeWheelMotor && iepc.NrOfDesignTypeWheelMotorMeasured == 1 ? 2 : 1; var gearRatioUsedForMeasurement = iepc.Gears .Select(x => new { x.GearNumber, x.Ratio, Diff = Math.Round(Math.Abs(x.Ratio - 1), 6) }).GroupBy(x => x.Diff) .OrderBy(x => x.Key).First().OrderBy(x => x.Ratio).Reverse().First(); - var voltageLevels = new List<ElectricMotorVoltageLevelData>(); + //var voltageLevels = new List<ElectricMotorVoltageLevelData>(); var genericIEPCData = _genericIepcData.CreateIEPCElectricMotorData(iepc); genericIEPCData.OverloadRecoveryFactor = DeclarationData.OverloadRecoveryFactor; genericIEPCData.TransmissionLossMap = diff --git a/VectoCore/VectoCore/Models/GenericModelData/GenericBusElectricMotorData.cs b/VectoCore/VectoCore/Models/GenericModelData/GenericBusElectricMotorData.cs index 1d0b903e0fc62b826ba500b498f14aea49502663..a0cd0268b56cb776eb93d60820482671adbc23e2 100644 --- a/VectoCore/VectoCore/Models/GenericModelData/GenericBusElectricMotorData.cs +++ b/VectoCore/VectoCore/Models/GenericModelData/GenericBusElectricMotorData.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents; @@ -29,8 +30,12 @@ namespace TUGraz.VectoCore.Models.GenericModelData ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineEntry, IList<Tuple<Volt, TableData>> torqueLimits, Volt averageVoltage) { - var electricMachineType = electricMachineEntry.ElectricMachine.ElectricMachineType; - var efficiencyData = GetVoltageLevels(electricMachineEntry, electricMachineType, torqueLimits); + var motorData = electricMachineEntry.ElectricMachine; + if (electricMachineEntry.ElectricMachine.CertificationMethod == CertificationMethod.StandardValues) { + motorData = new StandardValuesInputData.StandardValuesEmInputData(motorData, 1.SI<Volt>(), 10e9.SI<Volt>()); + } + var electricMachineType = electricMachineEntry.ElectricMachine.ElectricMachineType; + var efficiencyData = GetVoltageLevels(motorData, electricMachineEntry.Count, electricMachineType, torqueLimits); var powertrainPosition = electricMachineEntry.Position; //var adcLossMap = electricMachineEntry.MechanicalTransmissionLossMap; var adcRatio = electricMachineEntry.RatioADC; @@ -41,6 +46,7 @@ namespace TUGraz.VectoCore.Models.GenericModelData ? TransmissionLossMapReader.CreateEmADCLossMap(adcLossMap, adcRatio, "EM ADC LossMap") : TransmissionLossMapReader.CreateEmADCLossMap(DeclarationData.ElectricMachineDefaultMechanicalTransmissionEfficiency, adcRatio, "EM ADC LossMap Eff"); + var electricMotorData = new ElectricMotorData { RatioPerGear = electricMachineEntry.RatioPerGear, @@ -49,7 +55,7 @@ namespace TUGraz.VectoCore.Models.GenericModelData EfficiencyData = efficiencyData, Inertia = electricMachineEntry.ElectricMachine.Inertia * electricMachineEntry.Count,//?? RatioADC = electricMachineEntry.RatioADC, - Overload = CalculateOverloadData(electricMachineEntry.ElectricMachine, electricMachineEntry.Count, efficiencyData, averageVoltage ), + Overload = CalculateOverloadData(motorData, electricMachineEntry.Count, efficiencyData, averageVoltage ), TransmissionLossMap = lossMap, OverloadRecoveryFactor = DeclarationData.OverloadRecoveryFactor, }; @@ -132,11 +138,10 @@ namespace TUGraz.VectoCore.Models.GenericModelData } private VoltageLevelData GetVoltageLevels( - ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineEntry, + IElectricMotorDeclarationInputData motorData, int count, ElectricMachineType electricMachineType, IList<Tuple<Volt, TableData>> torqueLimits) { - var voltageLevels = electricMachineEntry.ElectricMachine.VoltageLevels; - var count = electricMachineEntry.Count; + var voltageLevels = motorData.VoltageLevels; var normalizedMap = GetNormalizedEfficiencyMap(electricMachineType);