diff --git a/VECTO/Input Files/SuperCap.vb b/VECTO/Input Files/SuperCap.vb index efeadb4c0eca19d4de31d6f41e534cb0e285061d..cce4a88e614c14d2af96e83c96c3c171d52d6e66 100644 --- a/VECTO/Input Files/SuperCap.vb +++ b/VECTO/Input Files/SuperCap.vb @@ -117,11 +117,13 @@ Public Class SuperCap End Get End Property Public ReadOnly Property MaxCurrentDischarge As Ampere Implements ISuperCapDeclarationInputData.MaxCurrentDischarge - get - Return MaxDischgCurrent.SI(Of Ampere) - End Get + Get + Return MaxDischgCurrent.SI(Of Ampere) + End Get End Property + Public ReadOnly Property TestingTemperature As Kelvin Implements ISuperCapDeclarationInputData.TestingTemperature + Public Property FilePath() As String Get Return _filePath diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 0bca7d79daf657b4b68bd7540cf351c1101787ed..60d3dfa3cf0beb13cff1af1f6c2b4b98bd7977d2 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -840,6 +840,7 @@ namespace TUGraz.VectoCommon.InputData Ampere MaxCurrentDischarge { get; } + Kelvin TestingTemperature { get; } } diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index b0831cc5519c223d18cc2b04bc22acf4f581ad59..56efdb6221ae98969064b7b03eee9e44acee214a 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -1338,6 +1338,60 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Capacitance. + /// </summary> + public static string Capacitor_Capacitance { + get { + return ResourceManager.GetString("Capacitor_Capacitance", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to InternalResistance. + /// </summary> + public static string Capacitor_InternalResistance { + get { + return ResourceManager.GetString("Capacitor_InternalResistance", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxChargingCurrent. + /// </summary> + public static string Capacitor_MaxChargingCurrent { + get { + return ResourceManager.GetString("Capacitor_MaxChargingCurrent", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxDischargingCurrent. + /// </summary> + public static string Capacitor_MaxDischargingCurrent { + get { + return ResourceManager.GetString("Capacitor_MaxDischargingCurrent", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxVoltage. + /// </summary> + public static string Capacitor_MaxVoltage { + get { + return ResourceManager.GetString("Capacitor_MaxVoltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MinVoltage. + /// </summary> + public static string Capacitor_MinVoltage { + get { + return ResourceManager.GetString("Capacitor_MinVoltage", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to ChassisConfiguration. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index 96dc292fa5f42341353118592109fe05917cfac3..25f2da081a28168daa579d7e9dea40d071f879f0 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1770,4 +1770,22 @@ <data name="Vehicle_BoostingLimitation" xml:space="preserve"> <value>BoostingLimitations</value> </data> + <data name="Capacitor_Capacitance" xml:space="preserve"> + <value>Capacitance</value> + </data> + <data name="Capacitor_InternalResistance" xml:space="preserve"> + <value>InternalResistance</value> + </data> + <data name="Capacitor_MaxChargingCurrent" xml:space="preserve"> + <value>MaxChargingCurrent</value> + </data> + <data name="Capacitor_MaxDischargingCurrent" xml:space="preserve"> + <value>MaxDischargingCurrent</value> + </data> + <data name="Capacitor_MaxVoltage" xml:space="preserve"> + <value>MaxVoltage</value> + </data> + <data name="Capacitor_MinVoltage" xml:space="preserve"> + <value>MinVoltage</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs index b55b536c8842039195e5d5df6f9a8a92fc8b1a08..bcee6127d444ae9add22578489af3d9d1785d383 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; @@ -37,20 +38,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider private IList<IElectricStorageDeclarationInputData> GetElectricStorages() { - var batteries = GetNodes(XMLNames.ElectricEnergyStorage_Battery); - if (!(batteries?.Count > 0)) - return null; - var electricStorages = new List<IElectricStorageDeclarationInputData>(); - foreach (XmlNode battery in batteries) { - electricStorages.Add( - new XMLElectricStorageDeclaration { - REESSPack = StorageTypeReader.CreateREESSInputData(battery, REESSType.Battery), - StringId = XmlConvert.ToInt32(GetString(XMLNames.Battery_StringID, battery)) - }); + if (ElementExists(XMLNames.ElectricEnergyStorage_Capacitor)) { + var capacitor = GetNode(XMLNames.ElectricEnergyStorage_Capacitor); + electricStorages.Add(new XMLElectricStorageDeclaration { + REESSPack = StorageTypeReader.CreateREESSInputData(capacitor, REESSType.SuperCap) + }); + }else if (ElementExists(XMLNames.ElectricEnergyStorage_Battery)) { + var batteries = GetNodes(XMLNames.ElectricEnergyStorage_Battery); + foreach (XmlNode battery in batteries) + { + electricStorages.Add(new XMLElectricStorageDeclaration { + REESSPack = StorageTypeReader.CreateREESSInputData(battery, REESSType.Battery), + StringId = XmlConvert.ToInt32(GetString(XMLNames.Battery_StringID, battery)) + }); + } } - - return electricStorages; + + return electricStorages.Any() ? electricStorages : null; } #region Implementation of IXMLElectricStorageSystemDeclarationInputData @@ -86,7 +91,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public const string XSD_TYPE = "REESSBatteryType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLBatteryPackDeclarationDeclarationInputData( XmlNode componentNode, string sourceFile) + public XMLBatteryPackDeclarationDeclarationInputData(XmlNode componentNode, string sourceFile) : base(componentNode, sourceFile) { SourceType = DataSourceType.XMLEmbedded; @@ -146,4 +151,46 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } + + // --------------------------------------------------------------------------------------- + + public class XMLSuperCapDeclarationInputData : AbstractCommonComponentType, IXMLSuperCapDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; + public const string XSD_TYPE = "REESSCapacitorType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLSuperCapDeclarationInputData(XmlNode componentNode, string sourceFile) : base(componentNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IREESSPackInputData + + public REESSType StorageType => REESSType.SuperCap; + + #endregion + + #region Implementation of ISuperCapDeclarationInputData + + public Farad Capacity => GetDouble(XMLNames.Capacitor_Capacitance).SI<Farad>(); + public Ohm InternalResistance => GetDouble(XMLNames.Capacitor_InternalResistance).SI<Ohm>() / 1000; + public Volt MinVoltage => GetDouble(XMLNames.Capacitor_MinVoltage).SI<Volt>(); + public Volt MaxVoltage => GetDouble(XMLNames.Capacitor_MaxVoltage).SI<Volt>(); + public Ampere MaxCurrentCharge => GetDouble(XMLNames.Capacitor_MaxChargingCurrent).SI<Ampere>(); + public Ampere MaxCurrentDischarge => GetDouble(XMLNames.Capacitor_MaxDischargingCurrent).SI<Ampere>(); + + public Kelvin TestingTemperature => + ElementExists(XMLNames.REESS_TestingTemperature) + ? GetDouble(XMLNames.REESS_TestingTemperature).DegCelsiusToKelvin() : null; + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs index 5c0df2a86d9b6b13ac33b19f28ef694929edd766..4d0cd14c048409966110b0e9ea5e9bae40d621ed 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory IXMLBatteryPackDeclarationInputData CreateBatteryPackDeclarationInputData( string version, XmlNode componentNode, string sourceFile); - ISuperCapDeclarationInputData CreateSuperCapDeclarationInputData( + IXMLSuperCapDeclarationInputData CreateSuperCapDeclarationInputData( string version, XmlNode componentNode, string sourceFile); IXMLTorqueConverterDeclarationInputData CreateTorqueconverterData( diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs index 48c48ce03f930bb14d371974cad0f35da2bbc13d..3f785d69f92622bba28dbb03f951f93bb405332d 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs @@ -91,6 +91,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLBatteryPackDeclarationInputData>().To<XMLBatteryPackDeclarationDeclarationInputData>() .Named(XMLBatteryPackDeclarationDeclarationInputData.QUALIFIED_XSD_TYPE); + Bind<IXMLSuperCapDeclarationInputData>().To<XMLSuperCapDeclarationInputData>() + .Named(XMLSuperCapDeclarationInputData.QUALIFIED_XSD_TYPE); + Bind<IXMLComponentReader>().To<XMLComponentReaderV210_Lorry>() .Named(XMLComponentReaderV210_Lorry.QUALIFIED_XSD_TYPE); diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_Capacitor.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_Capacitor.xml new file mode 100644 index 0000000000000000000000000000000000000000..224fa22913f5aaac29da26d36fb53b58227f8427 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_Capacitor.xml @@ -0,0 +1,446 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.10.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.1" xmlns:v2.10.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChasisConfiguration>Rigid Lorry</ChasisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:PTOType"> + <v2.0:PTOShaftsGearWheels>none</v2.0:PTOShaftsGearWheels> + <v2.0:PTOOtherElements>none</v2.0:PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem><!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>P2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <v2.10.2:EngineStopStart>true</v2.10.2:EngineStopStart> + <v2.10.2:PredictiveCruiseControl>1,2,3</v2.10.2:PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"><!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.10.1:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.10.1:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.10.1:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.10.1:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <BoostingLimitations xsi:type="BoostingLimitationsType"><!-- optional --> + <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> + <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> + </BoostingLimitations> + <Components xsi:type="Components_HEV-Px_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.10.1:Data xsi:type="v2.10.1:ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.1"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <TestVoltageOverload>483</TestVoltageOverload> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning circuitId="0"> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.10.1:Data> + <v2.10.1:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.10.1:Signature> + </ElectricMachineSystem> + <P2.5GearRatios><!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Capacitor> + <v2.10.2:Data id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.1"> + <Manufacturer>Capacitor Manufacturer</Manufacturer> + <Model>Capacitor Model</Model> + <CertificationNumber>ccccccc</CertificationNumber> + <Date>2017-02-03T00:00:00Z</Date> + <AppVersion>ccccc</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <Capacitance>100.00</Capacitance> + <InternalResistance>20.00</InternalResistance> + <MinVoltage>12.00</MinVoltage> + <MaxVoltage>100.00</MaxVoltage> + <MaxChargingCurrent>80.00</MaxChargingCurrent> + <MaxDischargingCurrent>20.00</MaxDischargingCurrent> + </v2.10.2:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm="123"></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </Signature> + </Capacitor> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-P_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag><!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <v2.0:Signature> + <di:Reference URI="#CabinX23h"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </AirDrag> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> + diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index a621fea699d68549bbb2c5bf7a8a98d10a65c278..20b88ff1cad14907453a8c22c719562efb3bab45 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -5890,6 +5890,9 @@ <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\Conventional_heavyLorry_AMT.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_Capacitor.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\Conventional_mediumLorry_AMT.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs index 88b715cad0acc255dff1cf01c15b0d0adf92a0ff..467472bef8f7ab36c2bc67faaec9ff79955c93dc 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs @@ -228,7 +228,7 @@ namespace TUGraz.VectoCore.Tests.XML } [TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px.xml")] - + [TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px_Capacitor.xml")] public void TestHEVHeaveyLorry(string jobfile) { var filename = Path.Combine(BASE_DIR, jobfile); @@ -354,14 +354,41 @@ namespace TUGraz.VectoCore.Tests.XML private void TestElectricStorageElements(IList<IElectricStorageDeclarationInputData> elements) { Assert.IsNotNull(elements); - Assert.AreEqual(2, elements.Count); + switch (elements.Count) { + case 1: + TestSuperCapEntry(elements.First()); + break; + case 2: + Assert.AreEqual(2, elements.Count); + TestFirstBatterySystemEntry(elements[0]); + TestSecondBatterySystemEntry(elements[1]); + break; + } + } + + private void TestSuperCapEntry(IElectricStorageDeclarationInputData entry) + { + Assert.AreEqual(REESSType.SuperCap, entry.REESSPack.StorageType); + Assert.AreEqual("Capacitor Manufacturer", entry.REESSPack.Manufacturer); + Assert.AreEqual("Capacitor Model", entry.REESSPack.Model); + Assert.AreEqual("ccccccc", entry.REESSPack.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-02-03T00:00:00Z").ToUniversalTime(), entry.REESSPack.Date); + Assert.AreEqual("ccccc", entry.REESSPack.AppVersion); + Assert.AreEqual(CertificationMethod.Measured, entry.REESSPack.CertificationMethod); + Assert.IsNotNull(entry.REESSPack.DigestValue); - TestFirstBatterySystemEntry(elements[0]); - TestSecondBatterySystemEntry(elements[1]); + var supercap = (ISuperCapDeclarationInputData)entry.REESSPack; + Assert.AreEqual(100.00.SI<Farad>(), supercap.Capacity); + Assert.AreEqual(20.00.SI<Ohm>() / 1000, supercap.InternalResistance); + Assert.AreEqual(12.00.SI<Volt>(), supercap.MinVoltage); + Assert.AreEqual(100.00.SI<Volt>(), supercap.MaxVoltage); + Assert.AreEqual(80.00.SI<Ampere>(), supercap.MaxCurrentCharge); + Assert.AreEqual(20.00.SI<Ampere>(), supercap.MaxCurrentDischarge); } private void TestFirstBatterySystemEntry(IElectricStorageDeclarationInputData entry) { + Assert.AreEqual(REESSType.Battery, entry.REESSPack.StorageType); Assert.AreEqual(0, entry.StringId); Assert.AreEqual("a", entry.REESSPack.Manufacturer); Assert.AreEqual("a", entry.REESSPack.Model); @@ -393,6 +420,7 @@ namespace TUGraz.VectoCore.Tests.XML private void TestSecondBatterySystemEntry(IElectricStorageDeclarationInputData entry) { + Assert.AreEqual(REESSType.Battery, entry.REESSPack.StorageType); Assert.AreEqual(1, entry.StringId); Assert.AreEqual("b", entry.REESSPack.Manufacturer); Assert.AreEqual("b", entry.REESSPack.Model); @@ -466,8 +494,7 @@ namespace TUGraz.VectoCore.Tests.XML } #endregion - - + #region Test Max Propulsion Torque Reader / BoostingLimitations private void TestBoostingLimitations(TableData boostingLimitations) diff --git a/VectoCore/VectoXML.spp b/VectoCore/VectoXML.spp index 0fcff380c8ee7c349e3b1beead97b844b04295e5..80993b2bc33286ed89b1f1b68107ac4a8369015c 100644 --- a/VectoCore/VectoXML.spp +++ b/VectoCore/VectoXML.spp @@ -90,6 +90,7 @@ <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S3.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S4.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_Capacitor.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\IEPC_heavyLorry.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_AMT_E2.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_APT-N_E2.xml" HomeFolder="Yes"/>