From 50104751c37afbec9f2565f95e41ca8a7e5c2f0f Mon Sep 17 00:00:00 2001 From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at> Date: Thu, 28 Oct 2021 17:40:44 +0200 Subject: [PATCH] adjusted interface and reader of IEPC and added tests --- .../InputData/DeclarationInputData.cs | 10 +- .../Resources/XMLNames.Designer.cs | 9 ++ .../VectoCommon/Resources/XMLNames.resx | 3 + ...ectricMotorDeclarationInputDataProvider.cs | 95 +++++++++++++--- ...XMLDeclarationInputDataV210InjectModule.cs | 3 + .../HEV-S_heavyLorry_IEPC-S_n_opt.xml | 16 +++ .../HEV-S_mediumLorry_IEPC-S_n_opt.xml | 16 +++ .../HEV-S_primaryBus_IEPC-S_n_opt.xml | 16 +++ .../IEPC_heavyLorry_n_opt.xml | 16 +++ .../IEPC_mediumLorry_n_opt.xml | 16 +++ .../IEPC_primaryBus_n_opt.xml | 16 +++ .../XML/XMLDeclarationInputv210.cs | 103 +++++++++++++----- 12 files changed, 277 insertions(+), 42 deletions(-) diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 36f5bed0a2..a2162a5e5a 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -823,11 +823,19 @@ namespace TUGraz.VectoCommon.InputData IList<IElectricMotorVoltageLevel> VoltageLevels { get; } - TableData DragCurve { get; } + IList<IDragCurve> DragCurves { get; } TableData Conditioning { get; } } + public interface IDragCurve + { + int? Gear { get; } + + TableData DragCurve { get; } + } + + public interface IGearEntry { int GearNumber { get; } diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index 356eed6783..7fcdf080b1 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -1878,6 +1878,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to gear. + /// </summary> + public static string DragCurve_Gear { + get { + return ResourceManager.GetString("DragCurve_Gear", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to outShaftSpeed. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index 248828c7a5..6df12b7238 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1860,4 +1860,7 @@ <data name="PowerMap_Gear" xml:space="preserve"> <value>gear</value> </data> + <data name="DragCurve_Gear" xml:space="preserve"> + <value>gear</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs index 4aba1e71a7..ea37fe8a60 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs @@ -59,17 +59,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #region Implementation of IElectricMotorVoltageLevel - public virtual Volt VoltageLevel => GetDouble(XMLNames.VoltageLevel_Voltage).SI<Volt>(); + public virtual Volt VoltageLevel => ElementExists(XMLNames.VoltageLevel_Voltage) ? + GetDouble(XMLNames.VoltageLevel_Voltage).SI<Volt>() : null ; public virtual TableData FullLoadCurve => ReadFullLoadCurve(); - public virtual TableData EfficiencyMap => ReadTableData(XMLNames.PowerMap, XMLNames.PowerMap_Entry, new Dictionary<string, string> { - { XMLNames.PowerMap_OutShaftSpeed, XMLNames.PowerMap_OutShaftSpeed }, - { XMLNames.PowerMap_Torque, XMLNames.PowerMap_Torque }, - { XMLNames.PowerMap_ElectricPower, XMLNames.PowerMap_ElectricPower } - }); - public virtual IList<IElectricMotorPowerMap> PowerMap => GetPowerMaps(); #endregion @@ -102,7 +97,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider protected virtual IList<IElectricMotorVoltageLevel> GetVoltageLevels() { - var voltageLevelNodes = GetNodes(XMLNames.ElectricMachine_VoltageLevel); + var voltageLevelNodes = GetNodes(XMLNames.ElectricMachine_VoltageLevel, BaseNode); if (voltageLevelNodes.IsNullOrEmpty()) return null; @@ -248,8 +243,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider var certMethod = GetString(XMLNames.Component_Gearbox_CertificationMethod, required: false) ?? GetString(XMLNames.Component_CertificationMethod, required: false); - if (certMethod != null && certMethod == "Measured for complete component") - return CertificationMethod.Measured; + if (certMethod != null) { + switch (certMethod) { + case "Measured for complete component": + case "Measured for EM and standard values for other components": + return CertificationMethod.Measured; + case "Standard values for all components": + return CertificationMethod.StandardValues; + } + } return certMethod != null ? EnumHelper.ParseEnum<CertificationMethod>(certMethod) @@ -278,12 +280,26 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual IList<IElectricMotorVoltageLevel> VoltageLevels => _voltageLevels ?? (_voltageLevels = GetVoltageLevels()); - public virtual TableData DragCurve => ReadDragCurve(); + public IList<IDragCurve> DragCurves => GetDragCurves(); public virtual TableData Conditioning => ElementExists(XMLNames.Conditioning) ? ReadConditioning() : null; #endregion + + private IList<IDragCurve> GetDragCurves() + { + var dragCurveNodes = GetNodes(XMLNames.DragCurve, BaseNode); + if (dragCurveNodes.IsNullOrEmpty()) + return null; + + var dragCurves = new List<IDragCurve>(); + foreach (XmlNode dragCurve in dragCurveNodes) { + dragCurves.Add(new DragCurveEntry(dragCurve)); + } + return dragCurves; + } + private IList<IGearEntry> GetGearEntries() { @@ -292,11 +308,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider return null; var gears = new List<IGearEntry>(); - foreach (XmlNode gearNode in gearNodes) - { + foreach (XmlNode gearNode in gearNodes) { gears.Add(new GearEntry(gearNode)); } - return gears; } @@ -321,6 +335,40 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } + public class DragCurveEntry : AbstractXMLType, IDragCurve + { + private Dictionary<string, string> dargCurveMapping = new Dictionary<string, string> { + {XMLNames.DragCurve_OutShaftSpeed, XMLNames.DragCurve_OutShaftSpeed }, + {XMLNames.DragCurve_DragTorque, XMLNames.DragCurve_DragTorque } + }; + + public DragCurveEntry(XmlNode node) : base(node) { } + + #region Implementation of IDragCurve + + public int? Gear + { + get + { + var gear = GetAttribute(BaseNode, XMLNames.DragCurve_Gear); + return gear != null ? Convert.ToInt32(gear) : (int?)null; + } + } + + public TableData DragCurve + { + get + { + var dragCurveEntryNodes = GetNodes(XMLNames.DragCurve_Entry); + return XMLHelper.ReadTableData(dargCurveMapping, dragCurveEntryNodes); + } + } + + #endregion + } + + + #region Overrides of AbstractXMLResource protected override XNamespace SchemaNamespace => NAMESPACE_URI; @@ -329,4 +377,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMotorIEPCIStandardInputDataProviderV2101 : XMLElectricMotorIEPCIInputDataProviderV2101 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V2101_JOBS; + public new const string XSD_TYPE = "IEPCStandardValuesDataDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLElectricMotorIEPCIStandardInputDataProviderV2101(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + + #region Overrides of XMLElectricMotorIEPCIInputDataProviderV2101 + + public override TableData Conditioning => null; + + #endregion + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs index 6d1b87e58d..cc9a7e1694 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs @@ -283,6 +283,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLIEPCInputData>().To<XMLElectricMotorIEPCIInputDataProviderV2101>() .Named(XMLElectricMotorIEPCIInputDataProviderV2101.QUALIFIED_XSD_TYPE); + Bind<IXMLIEPCInputData>().To<XMLElectricMotorIEPCIStandardInputDataProviderV2101>() + .Named(XMLElectricMotorIEPCIStandardInputDataProviderV2101.QUALIFIED_XSD_TYPE); + Bind<IXMLElectricStorageSystemDeclarationInputData>().To<XMLElectricStorageSystemDeclarationInputData>() .Named(XMLElectricStorageSystemDeclarationInputData.QUALIFIED_XSD_TYPE); diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml index 1743872061..8cd5aa2613 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml @@ -271,6 +271,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -284,11 +290,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml index 809781d9a0..76c2721e7f 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml @@ -267,6 +267,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -280,11 +286,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml index 9cc047fe7f..2a2333200e 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml @@ -264,6 +264,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -277,11 +283,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml index c04a3fb5db..a26b88b211 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml @@ -69,6 +69,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -82,11 +88,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml index 816e0d19ce..407b61d680 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml @@ -63,6 +63,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -76,11 +82,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml index 8f3806b937..03963e3f82 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml @@ -62,6 +62,12 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> @@ -75,11 +81,21 @@ <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> </VoltageLevel> <DragCurve gear="1"> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs index d0fcd1521c..8df773d179 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs @@ -398,25 +398,38 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(i, powerMap[i-1].Gear); } - if (powerMap.Count >= 1) { - TestPowerMapEntry("0.00", "400.00", "1000.00", powerMap[0].PowerMap.Rows[0]); - TestPowerMapEntry("0.00", "-400.00", "-1000.00", powerMap[0].PowerMap.Rows[1]); - TestPowerMapEntry("4000.00", "4000.00", "20000.00", powerMap[0].PowerMap.Rows[2]); - TestPowerMapEntry("4000.00", "-4000.00", "-20000.00", powerMap[0].PowerMap.Rows[3]); - } - if (powerMap.Count >= 2) { - TestPowerMapEntry("0.00", "500.00", "1100.00", powerMap[1].PowerMap.Rows[0]); - TestPowerMapEntry("0.00", "-500.00", "-1100.00", powerMap[1].PowerMap.Rows[1]); - TestPowerMapEntry("5000.00", "5000.00", "30000.00", powerMap[1].PowerMap.Rows[2]); - TestPowerMapEntry("5000.00", "-5000.00", "-30000.00", powerMap[1].PowerMap.Rows[3]); - } + if (powerMap.Count >= 1) + TestPowerMapData01(powerMap[0]); + + if (powerMap.Count >= 2) + TestPowerMapData02(powerMap[1]); + + if (powerMap.Count == 3) + TestPowerMapData03(powerMap[2]); + } - if (powerMap.Count == 3) { - TestPowerMapEntry("0.00", "600.00", "1200.00", powerMap[2].PowerMap.Rows[0]); - TestPowerMapEntry("0.00", "-600.00", "-1200.00", powerMap[2].PowerMap.Rows[1]); - TestPowerMapEntry("6000.00", "6000.00", "40000.00", powerMap[2].PowerMap.Rows[2]); - TestPowerMapEntry("6000.00", "-6000.00", "-40000.00", powerMap[2].PowerMap.Rows[3]); - } + private void TestPowerMapData01(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "400.00", "1000.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-400.00", "-1000.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("4000.00", "4000.00", "20000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("4000.00", "-4000.00", "-20000.00", powerMap.PowerMap.Rows[3]); + } + + private void TestPowerMapData02(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "500.00", "1500.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-500.00", "-1500.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("5000.00", "5000.00", "25000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("5000.00", "-5000.00", "-25000.00", powerMap.PowerMap.Rows[3]); + } + + private void TestPowerMapData03(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "600.00", "1200.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-600.00", "-1200.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("6000.00", "6000.00", "40000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("6000.00", "-6000.00", "-40000.00", powerMap.PowerMap.Rows[3]); } @@ -441,11 +454,23 @@ namespace TUGraz.VectoCore.Tests.XML } private void TestDragCurve(TableData dragCurve) + { + TestDragCurveData01(dragCurve); + } + + private void TestDragCurveData01(TableData dragCurve) { TestDragCurveEntry("0.00", "10.00", dragCurve.Rows[0]); TestDragCurveEntry("4000.00", "30.00", dragCurve.Rows[1]); } + private void TestDragCurveData02(TableData dragCurve) + { + TestDragCurveEntry("0.00", "15.00", dragCurve.Rows[0]); + TestDragCurveEntry("4500.00", "35.00", dragCurve.Rows[1]); + } + + private void TestDragCurveEntry(string outShaftSpeed, string dragTorque, DataRow row) { Assert.AreEqual(outShaftSpeed, row[XMLNames.DragCurve_OutShaftSpeed]); @@ -1306,11 +1331,18 @@ namespace TUGraz.VectoCore.Tests.XML TestGearsData(iepcData.Gears); TestVoltageLevel(iepcData.VoltageLevels); - TestDragCurve(iepcData.DragCurve); + TestDragCurves(iepcData.DragCurves); + } + private void TestDragCurves(IList<IDragCurve> dragCurves) + { + Assert.AreEqual(1, dragCurves[0].Gear); + TestDragCurveData01(dragCurves[0].DragCurve); + Assert.AreEqual(2, dragCurves[1].Gear); + TestDragCurveData02(dragCurves[1].DragCurve); } - + private void TestGearsData(IList<IGearEntry> gears) { Assert.IsNotNull(gears); @@ -2026,9 +2058,30 @@ namespace TUGraz.VectoCore.Tests.XML var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); Assert.NotNull(dataProvider.JobInputData); var vehicle = dataProvider.JobInputData.Vehicle; - - Assert.IsNotNull(vehicle.Components.IEPC); + + var iepc = vehicle.Components.IEPC; + Assert.IsNotNull(iepc); + Assert.AreEqual(ElectricMachineType.ASM, iepc.ElectricMachineType); + Assert.AreEqual(CertificationMethod.StandardValues, vehicle.Components.IEPC.CertificationMethod); + + Assert.AreEqual(1.SI<Watt>(), iepc.R85RatedPower); + Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), iepc.Inertia);//RotationalInertia + Assert.AreEqual(200.00.SI<NewtonMeter>(), iepc.ContinuousTorque); + Assert.AreEqual(2000.00.SI<PerSecond>(), iepc.ContinuousTorqueSpeed);//TestSpeedContinuousTorque + Assert.AreEqual(400.00.SI<NewtonMeter>(), iepc.OverloadTorque); + Assert.AreEqual(2000.00.SI<PerSecond>(), iepc.OverloadTestSpeed);//TestSpeedOverloadTorque + Assert.AreEqual(30.00.SI<Second>(), iepc.OverloadTime);//OverloadDuration + Assert.AreEqual(false, iepc.DifferentialIncluded); + Assert.AreEqual(false, iepc.DesignTypeWheelMotor); + Assert.AreEqual(1, iepc.NrOfDesignTypeWheelMotorMeasured); + + TestGearsData(iepc.Gears); + Assert.AreEqual(1, iepc.VoltageLevels.Count); + TestMaxTorqueCurve(iepc.VoltageLevels[0].FullLoadCurve); + TestPowerMapData01(iepc.VoltageLevels[0].PowerMap[0]); + TestDragCurve(iepc.DragCurves[0].DragCurve); } + #region Test existence of torque converter @@ -2046,10 +2099,6 @@ namespace TUGraz.VectoCore.Tests.XML } #endregion - - - - - + } } \ No newline at end of file -- GitLab