From 075fd2b8fc33c50f29b4b3a05385b5b56ce9e35a Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 15 May 2018 15:31:57 +0200 Subject: [PATCH] generating manufacturer xml report for schema version 0.5 --- .../OutputData/XML/XMLDeclarationReport.cs | 19 +++++++++++++++++++ .../OutputData/XML/XMLManufacturerReport.cs | 11 +++++++++-- .../XSD/VectoOutputManufacturer.0.5.xsd | 2 +- VectoCore/VectoCore/VectoCore.csproj | 3 +++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 6cddaf27a9..295efdb091 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -30,6 +30,7 @@ */ using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; using System.Xml; @@ -55,6 +56,8 @@ namespace TUGraz.VectoCore.OutputData.XML { public MeterPerSecond AverageSpeed { get; private set; } + public MeterPerSecond AverageDrivingSpeed { get; private set; } + public Joule EnergyConsumptionTotal { get; private set; } public Kilogram CO2Total { get; private set; } @@ -88,6 +91,9 @@ namespace TUGraz.VectoCore.OutputData.XML public Kilogram TotalVehicleWeight { get; private set; } public CubicMeter CargoVolume { get; private set; } + public PerSecond EngineSpeedDrivingMin { get; private set; } + public PerSecond EngineSpeedDrivingAvg { get; private set; } + public PerSecond EngineSpeedDrivingMax { get; private set; } public virtual void SetResultData(VectoRunData runData, IModalDataContainer data) @@ -100,6 +106,7 @@ namespace TUGraz.VectoCore.OutputData.XML Error = data.Error; StackTrace = data.StackTrace; AverageSpeed = data.Speed(); + MinSpeed = data.MinSpeed(); MaxSpeed = data.MaxSpeed(); MaxAcceleration = data.MaxAcceleration(); @@ -107,6 +114,18 @@ namespace TUGraz.VectoCore.OutputData.XML FullLoadPercentage = data.EngineMaxLoadTimeShare(); GearshiftCount = data.GearshiftCount(); + var entriesDriving = data.GetValues( + r => new { + dt = r.Field<Second>((int)ModalResultField.simulationInterval), + v = r.Field<MeterPerSecond>((int)ModalResultField.v_act), + nEng = r.Field<PerSecond>((int)ModalResultField.n_eng_avg) + }).Where(x => x.v.IsGreater(0)).ToArray(); + var drivingTime = entriesDriving.Sum(x => x.dt); + + AverageDrivingSpeed = entriesDriving.Sum(x => x.v * x.dt) / drivingTime; + EngineSpeedDrivingAvg = (entriesDriving.Sum(x => (x.nEng * x.dt).Value()) / drivingTime.Value()).SI<PerSecond>(); + EngineSpeedDrivingMin = entriesDriving.Min(x => x.nEng); + EngineSpeedDrivingMax = entriesDriving.Max(x => x.nEng); Distance = data.Distance(); FuelConsumptionTotal = data.TimeIntegral<Kilogram>(ModalResultField.FCFinal); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs index 7ee4656e47..28a494d1a2 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs @@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.OutputData.XML { public class XMLManufacturerReport { - public const string CURRENT_SCHEMA_VERSION = "0.4"; + public const string CURRENT_SCHEMA_VERSION = "0.5"; protected XElement VehiclePart; @@ -315,6 +315,8 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement(tns + XMLNames.Report_ResultEntry_VehiclePerformance, new XElement(tns + XMLNames.Report_ResultEntry_AverageSpeed, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)), + new XElement(tns + "AverageDrivingSpeed", + new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"), result.AverageDrivingSpeed.AsKmph.ToXMLFormat(1)), new XElement(tns + XMLNames.Report_ResultEntry_MinSpeed, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"), result.MinSpeed.AsKmph.ToXMLFormat(1)), new XElement(tns + XMLNames.Report_ResultEntry_MaxSpeed, new XAttribute(XMLNames.Report_Results_Unit_Attr, "km/h"), @@ -325,7 +327,12 @@ namespace TUGraz.VectoCore.OutputData.XML new XAttribute(XMLNames.Report_Results_Unit_Attr, "m/s²"), result.MaxAcceleration.ToXMLFormat(2)), new XElement(tns + XMLNames.Report_ResultEntry_FullLoadDrivingtimePercentage, result.FullLoadPercentage.ToXMLFormat(2)), - new XElement(tns + XMLNames.Report_ResultEntry_GearshiftCount, result.GearshiftCount.ToXMLFormat(0)) + new XElement(tns + XMLNames.Report_ResultEntry_GearshiftCount, result.GearshiftCount.ToXMLFormat(0)), + new XElement(tns + "EngineSpeedDriving", + new XElement(tns + "Min", new XAttribute(XMLNames.Report_Results_Unit_Attr, "rpm"), result.EngineSpeedDrivingMin.AsRPM.ToXMLFormat(1)), + new XElement(tns + "Average", new XAttribute(XMLNames.Report_Results_Unit_Attr, "rpm"), result.EngineSpeedDrivingAvg.AsRPM.ToXMLFormat(1)), + new XElement(tns + "Max", new XAttribute(XMLNames.Report_Results_Unit_Attr, "rpm"), result.EngineSpeedDrivingMax.AsRPM.ToXMLFormat(1)) + ) ), //FC XMLDeclarationReport.GetResults(result, tns, true).Cast<object>().ToArray() diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.5.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.5.xsd index 2fbbac9c2d..b2c124bc5f 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.5.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.5.xsd @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.4"> +<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.5"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> <xs:element name="VectoOutput"> <xs:annotation> diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index d9d686776b..937990fa1e 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -446,6 +446,9 @@ <EmbeddedResource Include="Resources\XSD\VectoComponent.1.0.xsd"> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="Resources\XSD\VectoOutputManufacturer.0.5.xsd"> + <SubType>Designer</SubType> + </EmbeddedResource> <None Include="Utils\VectoVersionCore.tt"> <Generator>TextTemplatingFileGenerator</Generator> <LastGenOutput>VectoVersionCore.cs</LastGenOutput> -- GitLab