diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index fd70c5f56e6d9b4857ba8f0941a61eca1aa18d69..6d1e8c88201e7b601229d5a2c47b149bb725f9bd 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -589,15 +589,18 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property PTOCycleWhileDriving As TableData _ - Implements IPTOTransmissionInputData.PTOCycleWhileDriving - Get - If String.IsNullOrWhiteSpace(PtoCycleDriving.FullPath) Then - Return Nothing - End If - Return VectoCSVFile.Read(PtoCycleDriving.FullPath) - End Get - End Property + Public ReadOnly Property PTOCycleWhileDriving As TableData _ + Implements IPTOTransmissionInputData.PTOCycleWhileDriving + Get + If String.IsNullOrWhiteSpace(PtoCycleDriving.FullPath) Then + Return Nothing + End If + Return VectoCSVFile.Read(PtoCycleDriving.FullPath) + End Get + End Property + + Public ReadOnly Property PTOShaftGearWheel As PTOShaftGearWheel? Implements IPTOTransmissionInputData.PTOShaftGearWheel + Public ReadOnly Property PTOOtherElement As PTOOtherElement? Implements IPTOTransmissionInputData.PTOOtherElement Public ReadOnly Property IDeclarationInputDataProvider_AirdragInputData As IAirdragDeclarationInputData _ diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs index 79c115e446cf292c1c906b978105317e4559fc20..b031d8cfdae36eda448360471a5a416a34915929 100644 --- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs +++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs @@ -30,8 +30,6 @@ */ using System.Collections.Generic; -using System.Data; -using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.SimulationComponent.Impl; @@ -207,8 +205,11 @@ namespace TUGraz.VectoCommon.InputData TableData PTOCycleWhileDriving { get; } - } + PTOShaftGearWheel? PTOShaftGearWheel { get; } + PTOOtherElement? PTOOtherElement { get; } + } + public interface IAxleEngineeringInputData : IAxleDeclarationInputData { /// <summary> @@ -626,5 +627,99 @@ namespace TUGraz.VectoCommon.InputData Watt ElectricPowerDemand { get; } } - + + public enum PTOShaftGearWheel + { + none, + only_the_drive_shaft_of_the_PTO, + drive_shaft_and_or_up_to_2_gear_wheels, + drive_shaft_and_or_more_than_2_gear_wheels, + only_one_engaged_gearwheel_above_oil_level + } + + public static class PTOShaftGearWheelHelper + { + public static PTOShaftGearWheel? Parse(string value) + { + switch (value) + { + case "none": + return PTOShaftGearWheel.none; + case "only the drive shaft of the PTO": + return PTOShaftGearWheel.only_the_drive_shaft_of_the_PTO; + case "drive shaft and/or up to 2 gear wheels": + return PTOShaftGearWheel.drive_shaft_and_or_up_to_2_gear_wheels; + case "drive shaft and/or more than 2 gear wheels": + return PTOShaftGearWheel.drive_shaft_and_or_more_than_2_gear_wheels; + case "only one engaged gearwheel above oil level": + return PTOShaftGearWheel.only_one_engaged_gearwheel_above_oil_level; + default: + return null; + } + } + + public static string ToXMLFormat(this PTOShaftGearWheel ptoGearWheel) + { + switch (ptoGearWheel) + { + case PTOShaftGearWheel.none: + return "none"; + case PTOShaftGearWheel.only_the_drive_shaft_of_the_PTO: + return "only the drive shaft of the PTO"; + case PTOShaftGearWheel.drive_shaft_and_or_up_to_2_gear_wheels: + return "drive shaft and/or up to 2 gear wheels"; + case PTOShaftGearWheel.drive_shaft_and_or_more_than_2_gear_wheels: + return "drive shaft and/or more than 2 gear wheels"; + case PTOShaftGearWheel.only_one_engaged_gearwheel_above_oil_level: + return "only one engaged gearwheel above oil level"; + default: + return null; + } + } + } + + public enum PTOOtherElement + { + none, + shift_claw_synchronizer_sliding_gearwheel, + multi_disc_clutch, + multi_disc_clutch_oil_pump + } + + public static class PTOOtherElementHelper + { + public static PTOOtherElement? Parse(string value) + { + switch (value) + { + case "none": + return PTOOtherElement.none; + case "shift claw, synchronizer, sliding gearwheel": + return PTOOtherElement.shift_claw_synchronizer_sliding_gearwheel; + case "multi-disc clutch": + return PTOOtherElement.multi_disc_clutch; + case "multi-disc clutch, oil pump": + return PTOOtherElement.multi_disc_clutch_oil_pump; + default: + return null; + } + } + + public static string ToXMLFormat(this PTOOtherElement ptoOtherElement) + { + switch (ptoOtherElement) + { + case PTOOtherElement.none: + return "none"; + case PTOOtherElement.shift_claw_synchronizer_sliding_gearwheel: + return "shift claw, synchronizer, sliding gearwheel"; + case PTOOtherElement.multi_disc_clutch: + return "multi-disc clutch"; + case PTOOtherElement.multi_disc_clutch_oil_pump: + return "multi-disc clutch, oil pump"; + default: + return null; + } + } + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs index cc4ff7201dcc14c8cf3ff45486294df4dfdae267..ff2dfd82277df99b9abc2d6d8926512a9174844a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs @@ -396,6 +396,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } } + + public PTOShaftGearWheel? PTOShaftGearWheel => null; + public PTOOtherElement? PTOOtherElement => null; + #endregion } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs index a1b9868a6f64008869ef668afd759e0321a1b700..620876b78baf8e9b75e068606ffc9bb15bc2b150 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs @@ -153,6 +153,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { } protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IAngledriveInputData AngledriveInputData + => ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData + => ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData + => ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion } // --------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs index 4d6bb336ca74b8905224e32044647b0fc5634ffa..eff48b3e6c175c6a9ad6ec69e845d35d7d1f730c 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs @@ -84,6 +84,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual TableData PTOCycleDuringStop => null; public TableData PTOCycleWhileDriving => null; + public virtual PTOShaftGearWheel? PTOShaftGearWheel => null; + public virtual PTOOtherElement? PTOOtherElement => null; #endregion } @@ -97,9 +99,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public new const string XSD_TYPE = "PTOType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLDeclarationPTODataProviderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + + #region Overrides of XMLDeclarationPTODataProviderV10 + + public override PTOOtherElement? PTOOtherElement => + PTOOtherElementHelper.Parse(GetString(XMLNames.Vehicle_PTO_OtherElements)); + + public override PTOShaftGearWheel? PTOShaftGearWheel => + PTOShaftGearWheelHelper.Parse(GetString(XMLNames.Vehicle_PTO_ShaftsGearWheels)); + + #endregion } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 4d0b8ed383636db6f78fc578ea737ae5b1d3b085..b772d39a4f59c508513a099f1bacd72b11c91983 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -1132,6 +1132,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public XMLDeclarationHeavyLorryDataProviderV210( IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => ADASReader.ADASInputData; + + public override IList<ITorqueLimitInputData> TorqueLimits => + ElementExists(XMLNames.Vehicle_TorqueLimits) ? base.TorqueLimits : null; + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)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 dbb032facb78102f03b31a2017a1947fec5e01fa..7b651f2872f20c1dd4b50291744a46733224ba71 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs @@ -130,8 +130,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLComponentReader>().To<XMLComponentReaderV210_CompletedBus>().Named(XMLComponentReaderV210_CompletedBus.QUALIFIED_XSD_TYPE); - Bind<IXMLComponentReader>().To<XMLComponentReaderV210_HEV_PxHeavyLorry>().Named(XMLComponentReaderV210_HEV_PxHeavyLorry.QUALIFIED_XSD_TYPE); - + Bind<IXMLComponentReader>().To<XMLComponentReaderV210_HEV_PxHeavyLorry>() + .Named(XMLComponentReaderV210_HEV_PxHeavyLorry.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLComponentReaderV210_HEV_PxHeavyLorry>() + .Named(XMLComponentReaderV210_HEV_PxHeavyLorry.QUALIFIED_XSD_HEV_Px_TYPE); + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVPxDeclarationComponentReaderV201>() .Named(XMLPrimaryBusHEVPxDeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); @@ -272,9 +276,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLIEPCInputData>().To<XMLDeclarationIEPCDataProviderV2101>().Named(XMLDeclarationIEPCDataProviderV2101.QUALIFIED_XSD_TYPE); - Bind<IXMLComponentReader>().To<XMLComponentReaderV210_Lorry>() - .Named(XMLComponentReaderV210_Lorry.QUALIFIED_XSD_TYPE); - Bind<IXMLAuxiliaryReader>().To<XMLComponentReaderV210_Lorry>() .Named(XMLComponentReaderV210_Lorry.AUXILIARIES_READER_QUALIFIED_XSD_TYPE); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs index 8a544b337f3f843b89f6aac3740c550fa3eb4765..0800f0a56321eb4cb418d5b798bc8a267c61d405 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs @@ -333,6 +333,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl protected virtual IIEPCDeclarationInputData IEPCCreator(string version, XmlNode componentNode, string sourceFile) { + if (componentNode == null) + return null; + return Factory.CreateIEPCData(version, Vehicle, componentNode, sourceFile); } } @@ -365,7 +368,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; - public new const string XSD_TYPE = "Components_Conventional_LorryType"; //public new const string AXLE_READER_TYPE = "AxleDataDeclarationType"; public new const string AUX_READER_TYPE = "AUX_Conventional_LorryDataType"; public const string AUX_HEV_P_READER_TYPE = "AUX_HEV-P_LorryDataType"; @@ -373,7 +375,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public const string AUX_PEV_E2_READER_TYPE = "AUX_PEV_LorryDataType"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); //public new static readonly string AXLES_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AXLES_READER_TYPE); //public new static readonly string AXLE_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AXLE_READER_TYPE); //public new static readonly string GEARBOX_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, GEARBOX_READER_TYPE); @@ -512,15 +513,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; - public new const string XSD_TYPE = "Components_HEV-Px_LorryType"; + public new const string XSD_TYPE = "Components_Conventional_LorryType"; + public const string XSD_HEV_Px_TYPE = "Components_HEV-Px_LorryType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_HEV_Px_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_Px_TYPE); public XMLComponentReaderV210_HEV_PxHeavyLorry(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(vehicle, componentsNode) { } public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; + public override IIEPCDeclarationInputData IEPCInputData => null; } // --------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs index 696230b40430dfbe12e58cfd5f0566c91987c4ca..bd7eef71bbec7ac4e1eda949c94e081bded3fdb1 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs @@ -245,7 +245,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider BaseNode, DataSource.SourcePath, XMLNames.Vehicle_PTOCycle, XMLNames.Vehicle_PTOCycle_Entry, AttributeMappings.PTOCycleMap); - public TableData PTOCycleWhileDriving => null; + public virtual TableData PTOCycleWhileDriving => null; + public virtual PTOShaftGearWheel? PTOShaftGearWheel => null; + public virtual PTOOtherElement? PTOOtherElement => null; #endregion diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c974439c331b1c6607088c6260f069dc8112777 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml @@ -0,0 +1,251 @@ +<?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_Conventional_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> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_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> + <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> + <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_Conventional_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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 982515fb4fd681366192fd30bbfa0efc099e0e41..3db1b5c29d1ea30be65536a510fa61a72abb924b 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -5884,6 +5884,9 @@ <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-sample_LNG.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_heavyLorry_AMT_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\Conventional_completedBus_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs index a419a6ec918c95ed79f3f20253369284b714a5ed..7141b8a4dcd6960d5d94048e5917c57fadc41696 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs @@ -35,6 +35,7 @@ namespace TUGraz.VectoCore.Tests.XML private const string BASE_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\"; private const string ADDITONAL_TESTS_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\"; + private const string Optional_TESTS_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries"; [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml"), @@ -133,10 +134,11 @@ namespace TUGraz.VectoCore.Tests.XML return runs; } - [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml")] - public void TestConventionalHeavyLorry(string jobfile) + [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml", BASE_DIR)] + [TestCase(@"Conventional_heavyLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalHeavyLorry(string jobfile, string testDir) { - var filename = Path.Combine(BASE_DIR, jobfile); + var filename = Path.Combine(testDir, jobfile); var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); Assert.NotNull(dataProvider); @@ -144,27 +146,54 @@ namespace TUGraz.VectoCore.Tests.XML var vehicle = dataProvider.JobInputData.Vehicle; Assert.NotNull(vehicle); + TestADASData(vehicle.ADAS); Assert.IsNotNull(vehicle.Components); Assert.IsNotNull(vehicle.Components.EngineInputData); Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); Assert.IsNotNull(vehicle.Components.GearboxInputData); TestTorqueConverter(vehicle); - Assert.IsNotNull(vehicle.Components.AngledriveInputData);//optional - Assert.IsNotNull(vehicle.Components.RetarderInputData);//optional + + if (testDir == Optional_TESTS_DIR) {//optional test + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData);//optional + Assert.IsNull(vehicle.Components.RetarderInputData);//optional + Assert.IsNull(vehicle.Components.AirdragInputData);//optional + Assert.IsNull(vehicle.TorqueLimits);//optional + } else { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData);//optional + Assert.IsNotNull(vehicle.Components.RetarderInputData);//optional + Assert.IsNotNull(vehicle.Components.AirdragInputData);//optional + Assert.IsNotNull(vehicle.TorqueLimits);//optional + } Assert.IsNotNull(vehicle.Components.AxleGearInputData); Assert.IsNotNull(vehicle.Components.AxleWheels); Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); Assert.IsNull(vehicle.Components.BusAuxiliaries); - Assert.IsNotNull(vehicle.Components.AirdragInputData); Assert.IsNull(vehicle.Components.ElectricStorage); - Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + TestPTOData(vehicle.Components.PTOTransmissionInputData); Assert.IsNull(vehicle.CargoVolume); - Assert.IsNotNull(vehicle.TorqueLimits); Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits Assert.IsNull(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limits } + private void TestADASData(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + Assert.IsNotNull(adas); + Assert.AreEqual(true, adas.EngineStopStart); + Assert.AreEqual(EcoRollType.WithEngineStop, adas.EcoRoll); + Assert.AreEqual(PredictiveCruiseControlType.Option_1_2_3, adas.PredictiveCruiseControl); + } + private void TestPTOData(IPTOTransmissionInputData pto) + { + Assert.IsNotNull(pto); + Assert.AreEqual(PTOShaftGearWheel.none, pto.PTOShaftGearWheel); + Assert.AreEqual(PTOOtherElement.none, pto.PTOOtherElement); + } + [TestCase(@"MediumLorry\Conventional_mediumLorry_AMT.xml")] public void TestConventionalMediumLorry(string jobfile) {