diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringDriverDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringDriverDataProvider.cs index d0338904eade95273f0a4e19341c76a8ae020bb8..8228067b8f8defc9e629a6a7b913682c3be77620 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringDriverDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringDriverDataProvider.cs @@ -59,7 +59,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider get { return null; } } - public IPCCEngineeringInputData PCCData { get; } + public virtual IPCCEngineeringInputData PCCData + { + get { return null; } + } public virtual IOverSpeedEngineeringInputData OverSpeedData { @@ -90,6 +93,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider protected IEcoRollEngineeringInputData _ecoRollData; + protected IPCCEngineeringInputData _pccData; + public XMLEngineeringDriverDataProviderV10( IXMLEngineeringInputData inputData, XmlNode driverDataNode, string fsBasePath) : base( @@ -111,41 +116,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider get { return _ecoRollData ?? (_ecoRollData = Reader.EcoRollData); } } - } - - internal class XMLEngineStopStartDriverDataV10 : AbstractXMLType, IXMLEngineStopStartDriverData - { - public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.ENGINEERING_DEFINITONS_NAMESPACE_V10; - - public const string XSD_TYPE = "EngineStartStopParametersEngineeringType"; - - public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, XSD_TYPE); - - public XMLEngineStopStartDriverDataV10(IXMLEngineeringDriverData driverData, XmlNode node) : base(node) { } - - #region Implementation of IXMLEngineStopStartDriverData - - public Second ActivationDelay - { - get { - return GetDouble("ActivationDelay", DeclarationData.Driver.EngineStopStart.ActivationDelay.Value()).SI<Second>(); - } - } - - public Second MaxEngineOffTimespan + + public override IPCCEngineeringInputData PCCData { - get { - return GetDouble( - "MaxEngineStopStartTimespan", - DeclarationData.Driver.EngineStopStart.MaxEngineOffTimespan.Value()).SI<Second>(); - } + get { return _pccData ?? (_pccData = Reader.PCCData); } } - - public double UtilityFactor - { - get { return GetDouble("UtilityFactor"); } - } - - #endregion } + + } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEcoRollDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEcoRollDataProvider.cs index 9b1c6786d2de123adce46e85a50c4006acf18b01..95e1fdafb73e49b5719f444f4d22b66ec844f1fd 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEcoRollDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEcoRollDataProvider.cs @@ -6,7 +6,8 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Interfaces; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Utils; -namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider { +namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider +{ internal class XMLEngineeringEcoRollDataProviderV10 : AbstractXMLType, IXMLEngineeringEcoRollData { public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.ENGINEERING_DEFINITONS_NAMESPACE_V10; @@ -31,9 +32,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider { public MeterPerSecond UnderspeedThreshold { - get { return GetDouble("UnderspeedThreshold", DeclarationData.Driver.EcoRoll.UnderspeedThreshold.AsKmph).KMPHtoMeterPerSecond(); } + get { + return GetDouble("Underspeed", DeclarationData.Driver.EcoRoll.UnderspeedThreshold.AsKmph).KMPHtoMeterPerSecond(); + } } #endregion } -} \ No newline at end of file +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineStopStartDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineStopStartDataProvider.cs index cdd5061cbf48bf12cc32e60294b984942ce04ffe..d5fd3327c1ad4236aa9f4a3eb7572b5b2b819bb6 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineStopStartDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineStopStartDataProvider.cs @@ -11,7 +11,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider { { public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.ENGINEERING_DEFINITONS_NAMESPACE_V10; - public const string XSD_TYPE = "EngineStopStartEngineeringType"; + public const string XSD_TYPE = "EngineStartStopParametersEngineeringType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, XSD_TYPE); @@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider { public virtual Second MaxEngineOffTimespan { - get { return GetDouble("MaxEngineStopStartTimespan", DeclarationData.Driver.EngineStopStart.MaxEngineOffTimespan.Value()).SI<Second>(); } + get { return GetDouble("MaxEngineOffTime", DeclarationData.Driver.EngineStopStart.MaxEngineOffTimespan.Value()).SI<Second>(); } } public virtual double UtilityFactor diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringPCCInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringPCCInputDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..0d8c253b43067e457cd654c675586ee509cf81a0 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringPCCInputDataProvider.cs @@ -0,0 +1,60 @@ +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Common; +using TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Interfaces; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider { + internal class XMLEngineeringPCCInputDataProviderV10 : AbstractXMLType, IXMLEngineeringPCCInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.ENGINEERING_DEFINITONS_NAMESPACE_V10; + + public const string XSD_TYPE = "PCCParametersType"; + + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, XSD_TYPE); + + public XMLEngineeringPCCInputDataProviderV10(IXMLEngineeringDriverData driverData, XmlNode node) : base(node) { } + + #region Implementation of IPCCEngineeringInputData + + public MeterPerSecond PCCEnabledSpeed + { + get { return GetDouble("EnablingSpeed", DeclarationData.Driver.PCC.PCCEnableSpeed.AsKmph).KMPHtoMeterPerSecond(); } + } + + public MeterPerSecond MinSpeed + { + get { return GetDouble("MinSpeed", DeclarationData.Driver.PCC.MinSpeed.AsKmph).KMPHtoMeterPerSecond(); } + } + + public Meter PreviewDistanceUseCase1 + { + get { + return GetDouble("PreviewDistanceUseCase1", DeclarationData.Driver.PCC.PreviewDistanceUseCase1.Value()).SI<Meter>(); + } + } + + public Meter PreviewDistanceUseCase2 + { + get { + return GetDouble("PreviewDistanceUseCase2", DeclarationData.Driver.PCC.PreviewDistanceUseCase2.Value()).SI<Meter>(); + } + } + + public MeterPerSecond Underspeed + { + get { return GetDouble("AllowedUnderspeed", DeclarationData.Driver.PCC.Underspeed.AsKmph).KMPHtoMeterPerSecond(); } + } + + public MeterPerSecond OverspeedUseCase3 + { + get { + return GetDouble("AllowedOverspeed", DeclarationData.Driver.PCC.OverspeedUseCase3.AsKmph).KMPHtoMeterPerSecond(); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Factory/IEngineeringReaderInjectFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Factory/IEngineeringReaderInjectFactory.cs index 25f8bcf36b454aadd933b10cc5944a95fa767200..5fba31dec95eccfb10f70da726fc4a20adc1008e 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Factory/IEngineeringReaderInjectFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Factory/IEngineeringReaderInjectFactory.cs @@ -78,8 +78,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Factory IXMLAxlesReader CreateAxlesReader(string version, IXMLEngineeringVehicleData vehicle, XmlNode componentsNode); IXMLGearboxReader CreateGearboxReader(string version, IXMLEngineeringVehicleData vehicle, XmlNode componentsNode); - IXMLEngineStopStartDriverData CreateEngineStopStartData(string version, IXMLEngineeringDriverData driverData, XmlNode node); - IXMLEngineeringEngineStopStartData CreateStopStartData(string version, IXMLEngineeringDriverData driverData, XmlNode node); - IEcoRollEngineeringInputData CreateEcoRolltData(string version, IXMLEngineeringDriverData driverData, XmlNode node); + IXMLEngineeringEngineStopStartData CreateEngineStopStartData(string version, IXMLEngineeringDriverData driverData, XmlNode node); + IXMLEngineeringEcoRollData CreateEcoRollData(string version, IXMLEngineeringDriverData driverData, XmlNode node); + + IXMLEngineeringPCCInputData CreatePCCData(string version, IXMLEngineeringDriverData driverData, XmlNode node); } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Interfaces/IXMLEngineeringPCCInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Interfaces/IXMLEngineeringPCCInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..3cf7e45356330e81ad04c10410b85a779d99c85a --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Interfaces/IXMLEngineeringPCCInputData.cs @@ -0,0 +1,5 @@ +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Interfaces { + public interface IXMLEngineeringPCCInputData : IPCCEngineeringInputData { } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/NinjectModules/XMLEngineeringReaderV10InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/NinjectModules/XMLEngineeringReaderV10InjectModule.cs index 9dc5e11aa1c578cd6ff7e82b42e57bf90ff50406..27215a632477ec7a13945d0f44700a4518ace473 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/NinjectModules/XMLEngineeringReaderV10InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/NinjectModules/XMLEngineeringReaderV10InjectModule.cs @@ -91,13 +91,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.NinjectModules Bind<IXMLDriverAcceleration>().To<XMLDriverAccelerationV10>() .Named(XMLDriverAccelerationV10.QUALIFIED_XSD_TYPE); - Bind<IXMLEngineStopStartDriverData>().To<XMLEngineStopStartDriverDataV10>() - .Named(XMLEngineStopStartDriverDataV10.QUALIFIED_XSD_TYPE); Bind<IXMLEngineeringEngineStopStartData>().To<XMLEngineeringEngineStopStartDataProviderV10>() .Named(XMLEngineeringEngineStopStartDataProviderV10.QUALIFIED_XSD_TYPE); Bind<IXMLEngineeringEcoRollData>().To<XMLEngineeringEcoRollDataProviderV10>() .Named(XMLEngineeringEcoRollDataProviderV10.QUALIFIED_XSD_TYPE); + Bind<IXMLEngineeringPCCInputData>().To<XMLEngineeringPCCInputDataProviderV10>() + .Named(XMLEngineeringPCCInputDataProviderV10.QUALIFIED_XSD_TYPE); } #endregion diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/IXMLDriverDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/IXMLDriverDataReader.cs index c939345a3dcbfe3e52106462f14eaee7db4741be..99f89b10be850c4bd842aa8fdcdf5027af65f174 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/IXMLDriverDataReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/IXMLDriverDataReader.cs @@ -15,11 +15,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Reader IGearshiftEngineeringInputData ShiftParameters { get; } IEngineStopStartEngineeringInputData EngineStopStartData { get; } IEcoRollEngineeringInputData EcoRollData { get; } - - } - public interface IXMLEngineStopStartDriverData : IEngineStopStartEngineeringInputData - { + IPCCEngineeringInputData PCCData { get; } } + } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/XMLDriverDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/XMLDriverDataReader.cs index 2393d3e8a8c5abfb274a471fef3a05fff3a7734a..7c47f89fac0dda5dc75f0c850f89501964a45b42 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/XMLDriverDataReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/Reader/Impl/XMLDriverDataReader.cs @@ -54,7 +54,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Reader.Impl { get { return CreateData( XMLNames.DriverModel_EcoRoll, - (version, node) => version == null ? null : Factory.CreateEcoRolltData(version, DriverData, node), false); + (version, node) => version == null ? null : Factory.CreateEcoRollData(version, DriverData, node), false); + } + } + + public IPCCEngineeringInputData PCCData + { + get { + return CreateData( + "PCCParameters", + (version, node) => version == null ? null : Factory.CreatePCCData(version, DriverData, node), false); } } diff --git a/VectoCore/VectoCore/Resources/XSD/VectoEngineeringDefinitions.1.0.xsd b/VectoCore/VectoCore/Resources/XSD/VectoEngineeringDefinitions.1.0.xsd index df13e8e6ad9893f5c6cad969191d38dd356585ea..f2278cb22ca233b7e56c3742bb9639fdd0034a3b 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoEngineeringDefinitions.1.0.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoEngineeringDefinitions.1.0.xsd @@ -415,11 +415,15 @@ </xs:complexContent> </xs:complexType> <xs:complexType name="EcoRollEngineeringType"> - <xs:sequence> - <xs:element name="ActivationDelay" type="tns:EcoRollActivationDelayType"/> - <xs:element name="MinSpeed" type="tns:EcoRollMinSpeedType"/> - <xs:element name="Underspeed" type="tns:EcoRollUnderSpeedType"/> - </xs:sequence> + <xs:complexContent> + <xs:extension base="tns:AbstractEcoRollEngineeringType"> + <xs:sequence> + <xs:element name="ActivationDelay" type="tns:EcoRollActivationDelayType" minOccurs="0"/> + <xs:element name="MinSpeed" type="tns:EcoRollMinSpeedType" minOccurs="0"/> + <xs:element name="Underspeed" type="tns:EcoRollUnderSpeedType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> </xs:complexType> <xs:complexType name="EngineComponentEngineeringType"> <xs:choice> @@ -692,7 +696,7 @@ <xs:complexContent> <xs:extension base="tns:AbstractPCCParametersType"> <xs:sequence> - <xs:element name="PreviewDistance" type="xs:double" minOccurs="0"/> + <xs:element name="EnablingSpeed" type="xs:double" minOccurs="0"/> <xs:element name="MinSpeed" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:double"> @@ -714,6 +718,8 @@ </xs:restriction> </xs:simpleType> </xs:element> + <xs:element name="PreviewDistanceUseCase1" type="xs:double" minOccurs="0"/> + <xs:element name="PreviewDistanceUseCase2" type="xs:double" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> @@ -2095,4 +2101,5 @@ </xs:element> </xs:sequence> </xs:group> + <xs:complexType name="PCCEngineeringT"/> </xs:schema> diff --git a/VectoCore/VectoCoreTest/TestData/XML/EngineeringJob/SampleJobEngineering1.0.xml b/VectoCore/VectoCoreTest/TestData/XML/EngineeringJob/SampleJobEngineering1.0.xml index 5bea75fdfe7a1aa4d169d563563faf36bf42a84e..b6fc75199bd5a6fbb1e09f201013922aaefd8c16 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/EngineeringJob/SampleJobEngineering1.0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/EngineeringJob/SampleJobEngineering1.0.xml @@ -146,7 +146,27 @@ </LookAheadCoasting> <Overspeed xsi:type="ve1.0:OverspeedEngineeringType"> <Enabled>false</Enabled> + <MinSpeed>50</MinSpeed> + <AllowedOverspeed>2.5</AllowedOverspeed> </Overspeed> + <EngineStopStartParameters xsi:type="EngineStartStopParametersEngineeringType"> + <ActivationDelay>2.01</ActivationDelay> + <MaxEngineOffTime>120.23</MaxEngineOffTime> + <UtilityFactor>0.834</UtilityFactor> + </EngineStopStartParameters> + <EcoRoll xsi:type="EcoRollEngineeringType"> + <ActivationDelay>2.34</ActivationDelay> + <MinSpeed>50.56</MinSpeed> + <Underspeed>5.75</Underspeed> + </EcoRoll> + <PCCParameters xsi:type="PCCParametersType"> + <EnablingSpeed>80.76</EnablingSpeed> + <MinSpeed>50.43</MinSpeed> + <AllowedUnderspeed>8.32</AllowedUnderspeed> + <AllowedOverspeed>5.74</AllowedOverspeed> + <PreviewDistanceUseCase1>1500.73</PreviewDistanceUseCase1> + <PreviewDistanceUseCase2>1000.24</PreviewDistanceUseCase2> + </PCCParameters> </DriverModel> <MissionCycles> <Cycle type="csv" file="Construction"/> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderEngineering/engineering_job-sample_FULL.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderEngineering/engineering_job-sample_FULL.xml index 3487b3517dc9b28523716d37d015d56955ae97ef..90eb0772339613125e0b93b9286a66e0c3bb4e69 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderEngineering/engineering_job-sample_FULL.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderEngineering/engineering_job-sample_FULL.xml @@ -1,10 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputEngineering xmlns="urn:tugraz:ivt:VectoAPI:EngineeringDefinitions:v0.7" xmlns:tns="urn:tugraz:ivt:VectoAPI:EngineeringInput:v0.7" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" schemaVersion="0.7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:EngineeringInput:v0.7 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoEngineeringInput.0.7.xsd"> +<tns:VectoInputEngineering schemaVersion="1.0" + xmlns="urn:tugraz:ivt:VectoAPI:EngineeringDefinitions:v1.0" + xmlns:tns="urn:tugraz:ivt:VectoAPI:EngineeringInput:v1.0" + xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:EngineeringInput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoEngineeringJob.xsd"> <EngineOnlyMode>false</EngineOnlyMode> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <Model>Generic LongHaul Truck</Model> - <Creator>Markus Quaritsch, TUG IVT</Creator> + <ManufacturerAddress>somewhere</ManufacturerAddress> + <Model>Generic LongHaul Truck</Model> + <VIN>xyz</VIN> <Date>2017-02-15T11:00:00Z</Date> <VehicleCategory>Tractor</VehicleCategory> <AxleConfiguration>4x2</AxleConfiguration> @@ -26,25 +32,22 @@ </PTOCycle> <CurbMassExtra>500</CurbMassExtra> <Loading>1500</Loading> - <AdvancedDriverAssist> - <EngineStartStop> - <Enabled>false</Enabled> - <MaxSpeed>8</MaxSpeed> - <MinOnTime>8</MinOnTime> - <ActivationDelay>8</ActivationDelay> - </EngineStartStop> + <AdvancedDriverAssist xsi:type="AdvancedDriverAssistEngineeringType"> + <EngineStopStart>true</EngineStopStart> + <EcoRoll>with engine stop</EcoRoll> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </AdvancedDriverAssist> - <Components> + <Components xsi:type="VehicleComponentsType"> <Engine> - <Data id="ENG-gooZah3D"> + <Data id="ENG-gooZah3D" xsi:type="EngineDataEngineeringType"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> - <Creator>Markus Quaritsch, TUG IVT</Creator> <Date>2017-02-15T11:00:00Z</Date> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <Inertia>0.77</Inertia> - <WHTCEngineering>1</WHTCEngineering> + <FCCorrection>1</FCCorrection> + <FuelType>Diesel CI</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="0.00" fuelConsumption="1256.00"/> @@ -177,19 +180,17 @@ </Signature> </Engine> <Gearbox> - <Data id="gbx-vi2Oak2N"> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataEngineeringType"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <Inertia>0.6</Inertia> <TractionInterruption>1.5</TractionInterruption> <Gears> - <Gear number="1"> + <Gear number="1" xsi:type="GearEngineeringType"> <Ratio>14.930</Ratio> - <MaxTorque>5000</MaxTorque> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06"/> @@ -384,10 +385,10 @@ <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> + <MaxTorque>5000</MaxTorque> </Gear> - <Gear number="2"> + <Gear number="2" xsi:type="GearEngineeringType"> <Ratio>11.640</Ratio> - <MaxTorque>5000</MaxTorque> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06"/> @@ -582,8 +583,9 @@ <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> + <MaxTorque>5000</MaxTorque> </Gear> - <Gear number="3"> + <Gear number="3" xsi:type="GearEngineeringType"> <Ratio>9.020</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -780,7 +782,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="4"> + <Gear number="4" xsi:type="GearEngineeringType"> <Ratio>7.040</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -977,7 +979,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="5"> + <Gear number="5" xsi:type="GearEngineeringType"> <Ratio>5.640</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -1174,7 +1176,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="6"> + <Gear number="6" xsi:type="GearEngineeringType"> <Ratio>4.400</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -1371,7 +1373,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="7"> + <Gear number="7" xsi:type="GearEngineeringType"> <Ratio>3.390</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -1568,7 +1570,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="8"> + <Gear number="8" xsi:type="GearEngineeringType"> <Ratio>2.650</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -1765,7 +1767,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="9"> + <Gear number="9" xsi:type="GearEngineeringType"> <Ratio>2.050</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -1962,7 +1964,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="10"> + <Gear number="10" xsi:type="GearEngineeringType"> <Ratio>1.600</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -2159,7 +2161,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="11"> + <Gear number="11" xsi:type="GearEngineeringType"> <Ratio>1.280</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06"/> @@ -2356,7 +2358,7 @@ <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> </TorqueLossMap> </Gear> - <Gear number="12"> + <Gear number="12" xsi:type="GearEngineeringType"> <Ratio>1.000</Ratio> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="6.81"/> @@ -2560,30 +2562,28 @@ </Signature> </Gearbox> <TorqueConverter> - <Data> + <Data id="TC-adsf123" xsi:type="TorqueConverterDataEngineeringType"> <Manufacturer>Generic Torqueconverter Manufacturer</Manufacturer> <Model>Generic Torqueconverter</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> <Date>2017-01-11T11:00:00Z</Date> <ReferenceRPM>1000</ReferenceRPM> + <Inertia>1.1</Inertia> + <MaxInputSpeed>1700</MaxInputSpeed> <Characteristics> <Entry speedRatio="0.0000" inputTorqueRef="300.00" torqueRatio="1.80"/> <Entry speedRatio="1.0000" inputTorqueRef="10.00" torqueRatio="1.00"/> <Entry speedRatio="2.0000" inputTorqueRef="-10.00" torqueRatio="0.90"/> </Characteristics> - <Inertia>1.1</Inertia> <ShiftPolygon> <Entry engineTorque="-200" downshiftSpeed="700" upshiftSpeed="800"/> <Entry engineTorque="1600" downshiftSpeed="700" upshiftSpeed="800"/> </ShiftPolygon> - <MaxInputSpeed>1700</MaxInputSpeed> </Data> </TorqueConverter> <Angledrive> - <Data> + <Data id="ANG-123as" xsi:type="AngledriveDataEngineeringType"> <Manufacturer>Generic Angledrive Manufacturer</Manufacturer> <Model>Generic Angledrive</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> <Date>2017-01-11T11:00:00Z</Date> <Ratio>1.200</Ratio> <TorqueLossMap> @@ -2597,10 +2597,9 @@ </Data> </Angledrive> <Retarder> - <Data id="RET-Shai9imi"> + <Data id="RET-Shai9imi" xsi:type="RetarderDataEngineeringType"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <RetarderLossMap> @@ -2635,10 +2634,9 @@ </Signature> </Retarder> <Axlegear> - <Data id="AXL-EC3ohnoh"> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataEngineeringType"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <Ratio>2.590</Ratio> @@ -3142,43 +3140,45 @@ </Signature> </Axlegear> <AxleWheels> - <Data id="WHL-mi3ooviM"> - <Axles> - <Axle axleNumber="1"> - <Manufacturer>Generic Wheels Manufacturer</Manufacturer> - <Model>Generic Wheel</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> - <Date>2017-01-11T14:00:00Z</Date> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</TwinTyres> - <Steered>true</Steered> - <Dimension>315/70 R22.5</Dimension> - <RRCISO>0.0055</RRCISO> - <FzISO>31300</FzISO> - <WeightShare>0.4</WeightShare> - <Inertia>0</Inertia> - </Axle> - <Axle axleNumber="2"> - <Manufacturer>Generic Wheels Manufacturer</Manufacturer> - <Model>Generic Wheel</Model> - <Creator>Markus Quaritsch, TUG ITI</Creator> - <Date>2017-01-11T14:00:00Z</Date> - <AxleType>VehicleDriven</AxleType> - <TwinTyres>true</TwinTyres> - <Steered>true</Steered> - <Dimension>315/70 R22.5</Dimension> - <RRCISO>0.0063</RRCISO> - <FzISO>31300</FzISO> - <WeightShare>0.4</WeightShare> - <Inertia>0</Inertia> - <DynamicTyreRadius>488.822</DynamicTyreRadius> - </Axle> - </Axles> - </Data> - </AxleWheels> +<Data xsi:type="AxleWheelsDataEngineeringType"> + <Axles> + <Axle xsi:type="AxleDataEngineeringType" axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <WeightShare>0.4</WeightShare> + <Tyre xsi:type="TyreComponentEngineeringType"> + <Data xsi:type="TyreDataEngineeringType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <Date>2017-01-11T14:00:00Z</Date> + <Dimension>315/70 R22.5</Dimension> + <RRCISO>0.0055</RRCISO> + <FzISO>31300</FzISO> + </Data> + </Tyre> + </Axle> + <Axle xsi:type="AxleDataEngineeringType" axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <WeightShare>0.6</WeightShare> + <Tyre> + <Data xsi:type="TyreDataEngineeringType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <Date>2017-01-11T14:00:00Z</Date> + <Dimension>315/70 R22.5</Dimension> + <RRCISO>0.0063</RRCISO> + <FzISO>31300</FzISO> + </Data> + </Tyre> + </Axle> + </Axles> + </Data> </AxleWheels> <Auxiliaries> - <Data> - <Auxiliary id="ES"> + <Data xsi:type="AuxiliariesDataEngineeringType"> + <Auxiliary id="ES" xsi:type="AuxiliaryEntryEngineeringType"> <TransmissionRatioToEngine>4.078</TransmissionRatioToEngine> <EfficiencyToEngine>0.96</EfficiencyToEngine> <EfficiencyAuxSupply>1</EfficiencyAuxSupply> @@ -3316,7 +3316,7 @@ <Entry auxiliarySpeed="12000" mechanicalPower="5.74" supplyPower="3.19"/> </AuxMap> </Auxiliary> - <Auxiliary id="FAN"> + <Auxiliary id="FAN" xsi:type="AuxiliaryEntryEngineeringType"> <TransmissionRatioToEngine>4.078</TransmissionRatioToEngine> <EfficiencyToEngine>0.96</EfficiencyToEngine> <EfficiencyAuxSupply>1</EfficiencyAuxSupply> @@ -3457,10 +3457,9 @@ </Data> </Auxiliaries> <AirDrag> - <Data> + <Data id="AD-asdf123asdf" xsi:type="AirDragDataEngineeringType"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> - <Creator>Markus Quaritsch, TUG IVT</Creator> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CrossWindCorrectionMode>Speed Dependent Correction Factor</CrossWindCorrectionMode> @@ -3473,8 +3472,8 @@ </AirDrag> </Components> </Vehicle> - <DriverModel> - <LookAheadCoasting> + <DriverModel xsi:type="DriverModelEngineeringType"> + <LookAheadCoasting xsi:type="LookAheadCoastingEngineeringType"> <Enabled>true</Enabled> <MinSpeed>60</MinSpeed> <PreviewDistanceFactor>3</PreviewDistanceFactor> @@ -3489,17 +3488,16 @@ <Entry velocityDrop="100" decisionFactorDrop="1"/> </VelocityDropDecisionFactor> </LookAheadCoasting> - <Overspeed> - <Mode>Overspeed</Mode> + <Overspeed xsi:type="OverspeedEngineeringType"> + <Enabled>true</Enabled> <MinSpeed>50</MinSpeed> - <AllowedOverspeed>5</AllowedOverspeed> - <AllowedUnderspeed>5</AllowedUnderspeed> + <AllowedOverspeed>2.5</AllowedOverspeed> </Overspeed> - <DriverAccelerationCurve> + <DriverAccelerationCurve xsi:type="DriverAccelerationCurveEngineeringType"> <Entry vehicleSpeed="0" maxAcceleration="1" maxDeceleration="-1"/> <Entry vehicleSpeed="100" maxAcceleration="1" maxDeceleration="-1"/> </DriverAccelerationCurve> - <ShiftStrategyParameters> + <ShiftStrategyParameters xsi:type="ShiftStrategyParametersEngineeringType"> <UpshiftMinAcceleration>0.133</UpshiftMinAcceleration> <DownshiftAfterUpshiftDelay>12</DownshiftAfterUpshiftDelay> <UpshiftAfterDownshiftDelay>13</UpshiftAfterDownshiftDelay> @@ -3512,6 +3510,24 @@ <CLUpshiftMinAcceleration>0.133</CLUpshiftMinAcceleration> <CCUpshiftMinAcceleration>0.134</CCUpshiftMinAcceleration> </ShiftStrategyParameters> + <EngineStopStartParameters xsi:type="EngineStartStopParametersEngineeringType"> + <ActivationDelay>2</ActivationDelay> + <MaxEngineOffTime>120</MaxEngineOffTime> + <UtilityFactor>0.8</UtilityFactor> + </EngineStopStartParameters> + <EcoRoll xsi:type="EcoRollEngineeringType"> + <ActivationDelay>2</ActivationDelay> + <MinSpeed>50</MinSpeed> + <Underspeed>5</Underspeed> + </EcoRoll> + <PCCParameters xsi:type="PCCParametersType"> + <EnablingSpeed>80</EnablingSpeed> + <MinSpeed>50</MinSpeed> + <AllowedUnderspeed>8</AllowedUnderspeed> + <AllowedOverspeed>5</AllowedOverspeed> + <PreviewDistanceUseCase1>1500</PreviewDistanceUseCase1> + <PreviewDistanceUseCase2>1000</PreviewDistanceUseCase2> + </PCCParameters> </DriverModel> <MissionCycles> <Cycle type="csv" file="Long_Haul+FAN+ES.vdri"/> diff --git a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs index 5836e2469995005383aa20836836e836ae9c7665..c6d9363a6eef354e61f64ccfbd07d78a68c7fcfc 100644 --- a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs @@ -897,6 +897,33 @@ namespace TUGraz.VectoCore.Tests.XML } + [TestCase] + public void TestXMLInputEngineeringVersion1_0_DriverModelParameters() + { + var inputDataProvider = XMLInputReader.CreateEngineering(EngineeringSampleFile_10_Full); + + Assert.NotNull(inputDataProvider); + + var ecoRollData = inputDataProvider.DriverInputData.EcoRollData; + Assert.AreEqual(2.34, ecoRollData.ActivationDelay.Value()); + Assert.AreEqual(50.56, ecoRollData.MinSpeed.AsKmph); + Assert.AreEqual(5.75, ecoRollData.UnderspeedThreshold.AsKmph); + + var pccData = inputDataProvider.DriverInputData.PCCData; + Assert.AreEqual(80.76, pccData.PCCEnabledSpeed.AsKmph); + Assert.AreEqual(50.43, pccData.MinSpeed.AsKmph); + Assert.AreEqual(8.32, pccData.Underspeed.AsKmph); + Assert.AreEqual(5.74, pccData.OverspeedUseCase3.AsKmph); + Assert.AreEqual(1500.73, pccData.PreviewDistanceUseCase1.Value()); + Assert.AreEqual(1000.24, pccData.PreviewDistanceUseCase2.Value()); + + var essData = inputDataProvider.DriverInputData.EngineStopStartData; + Assert.AreEqual(2.01, essData.ActivationDelay.Value()); + Assert.AreEqual(120.23, essData.MaxEngineOffTimespan.Value()); + Assert.AreEqual(0.834, essData.UtilityFactor); + } + + [TestCase] public void TestXMLInputEngineeringVersion1_0TestExtensions() {