diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs index eba4c7d3215a4b6712f2311a5b1e9fe6bc16ecb5..a75fa638f245ea254ad6eb79820ad497dc4555d9 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs @@ -26,9 +26,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation public static XNamespace Cif => XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput"); public static XNamespace Cif_0_9 => XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.9"); + public static XNamespace _di => XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"); + + protected XElement Vehicle { get; set; } protected XElement Results { get; set; } + protected XElement InputDataIntegrity { get; set; } + public abstract string OutputDataType { get; } private bool _ovc = false; @@ -52,6 +57,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation InitializeVehicleData(modelData.InputData); _ovc = modelData.VehicleData.Ocv; Results = new XElement(Cif_0_9 + "Results"); + InputDataIntegrity = new XElement(Cif_0_9 + XMLNames.Report_InputDataSignature, + modelData.InputData.XMLHash == null ? XMLHelper.CreateDummySig(_di) : new XElement(modelData.InputData.XMLHash)); } public XDocument Report { get; protected set; } @@ -75,6 +82,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation new XElement(Cif + XMLNames.Report_DataWrap, new XAttribute(xsi + XMLNames.XSIType, $"{OutputDataType}"), Vehicle, + InputDataIntegrity, new XElement(Cif_0_9 + XMLNames.Report_ResultData_Signature, resultSignature), Results, XMLHelper.GetApplicationInfo(Cif_0_9)) diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs index c59d4199e23f9b8ea21a00b44316987ee9b3215c..5014557e16b2f4b5a7bfcf94b4ccfd71ab423465 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs @@ -289,8 +289,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #region ComponentGroups Bind<IReportOutputGroup>().To<EngineGroup>().When(AccessedViaCIFFactory) .NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetEngineGroup()); - Bind<IReportOutputGroup>().To<TransmissionGroup>().When(AccessedViaCIFFactory) + Bind<IReportOutputGroup>().To<TransmissionGroupWithGearbox>().When(AccessedViaCIFFactory) .NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetTransmissionGroup()); + Bind<IReportOutputGroup>().To<TransmissionGroupWithoutGearbox>().When(AccessedViaCIFFactory) + .NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetTransmissionGroupNoGearbox()); Bind<IReportOutputGroup>().To<AxleWheelsGroup>().When(AccessedViaCIFFactory) .NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetAxleWheelsGroup()); Bind<IReportOutputGroup>().To<ElectricMachineGroup>().When(AccessedViaCIFFactory) diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/ComponentGroupWriters.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/ComponentGroupWriters.cs index f64ea0457a7520ff1bc23a01dbc1c0809ef53829..6cf94218d53f2f3d79c7b0cc0c9f1c55699a4879 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/ComponentGroupWriters.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/ComponentGroupWriters.cs @@ -9,6 +9,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter; using TUGraz.VectoCore.Utils; @@ -48,9 +49,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation } - public class TransmissionGroup : AbstractCIFGroupWriter + public class TransmissionGroupWithGearbox : AbstractCIFGroupWriter { - public TransmissionGroup(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } + public TransmissionGroupWithGearbox(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } #region Overrides of AbstractCIFGroupWriter @@ -67,6 +68,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation #endregion } + public class TransmissionGroupWithoutGearbox : AbstractCIFGroupWriter + { + public TransmissionGroupWithoutGearbox(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } + + #region Overrides of AbstractCIFGroupWriter + + public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData) + { + var gearbox = inputData.JobInputData.Vehicle.Components.GearboxInputData; + return new List<XElement>() { + new XElement(_cif + "NrOfGears", 1) + }; + } + + #endregion + } + public class AxleWheelsGroup : AbstractCIFGroupWriter { public AxleWheelsGroup(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { } @@ -137,7 +155,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation voltageLevels = new List<IElectricMotorVoltageLevel>(); var propulsionElectricMachines = inputData.JobInputData.Vehicle.Components.ElectricMachines.Entries .Where(e => e.Position != PowertrainPosition.GEN); - totalRatedPropulsionPower = propulsionElectricMachines.Sum((e => e.ElectricMachine.R85RatedPower)); + totalRatedPropulsionPower = propulsionElectricMachines.Sum((e => e.ElectricMachine.R85RatedPower * e.Count)); var groupedVoltageLevels = propulsionElectricMachines .SelectMany(electricMachine => electricMachine.ElectricMachine.VoltageLevels).GroupBy((level => level.VoltageLevel)); foreach (IGrouping<Volt, IElectricMotorVoltageLevel> electricMotorVoltageLevels in groupedVoltageLevels) { @@ -145,7 +163,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation } } - result.Add(new XElement(_cif + "TotalRatedPropulsionPower", totalRatedPropulsionPower.ValueAsUnit("kW"))); + result.Add(new XElement(_cif + "TotalRatedPropulsionPower", totalRatedPropulsionPower.ValueAsUnit("kW", 0))); var voltageLevelsXElement = new XElement(_cif + "VoltageLevels"); result.Add(voltageLevelsXElement); @@ -183,31 +201,31 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation .Select(es => es.REESSPack as ISuperCapDeclarationInputData).ToArray(); var totalStorageCapacity = - (batteries.Length > 0 ? batteries.Sum(bp => bp.Capacity) : 0.SI<AmpereSecond>()) + - (capacitors.Length > 0 ? capacitors.Sum(cap => GetStorageCapacity(cap)) : 0.SI<AmpereSecond>()); + (batteries.Length > 0 ? batteries.Sum(bp => bp.TotalStorageCapacity()) : 0.SI<WattSecond>()) + + (capacitors.Length > 0 ? capacitors.Sum(cap => GetStorageCapacity(cap)) : 0.SI<WattSecond>()); var totalUsableCapacity = (batteries.Length > 0 ? batteries.Sum(bp => bp.TotalUsableCapacityInSimulation()) - : 0.SI<AmpereSecond>()) + + : 0.SI<WattSecond>()) + (capacitors.Length > 0 ? capacitors.Sum(cap => GetTotalUsableCapacityInSimulation(cap)) - : 0.SI<AmpereSecond>()); + : 0.SI<WattSecond>()); return new List<XElement>() { - new XElement(_cif + "TotalStorageCapacity", totalUsableCapacity.ValueAsUnit("Ah", 0)), - new XElement(_cif + "UsableStorageCapacity", totalStorageCapacity.ValueAsUnit("Ah", 0)) + new XElement(_cif + "TotalStorageCapacity", totalUsableCapacity.ValueAsUnit("kWh", 0)), + new XElement(_cif + "UsableStorageCapacity", totalStorageCapacity.ValueAsUnit("kWh", 0)) }; } - private AmpereSecond GetTotalUsableCapacityInSimulation(ISuperCapDeclarationInputData cap) + private WattSecond GetTotalUsableCapacityInSimulation(ISuperCapDeclarationInputData cap) { return GetStorageCapacity(cap) * 0.8; } - private AmpereSecond GetStorageCapacity(ISuperCapDeclarationInputData cap) + private WattSecond GetStorageCapacity(ISuperCapDeclarationInputData cap) { - var voltageRange = cap.MaxVoltage - cap.MinVoltage; - var avgVoltage = (cap.MaxVoltage + cap.MinVoltage) / 2.0; - return cap.Capacity * voltageRange * voltageRange / 2.0 / avgVoltage; + var voltageRange = cap.MaxVoltage - cap.MinVoltage; + //var avgVoltage = (cap.MaxVoltage + cap.MinVoltage) / 2.0; + return cap.Capacity * voltageRange * voltageRange / 2.0; } #endregion diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleGroups.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleGroups.cs index a37ea8e21557993eacf1c39d4dfd1fb1f689447d..6bd13d560eec16b7be4afddb2cd16c4c9a603893 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleGroups.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleGroups.cs @@ -8,6 +8,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter; using TUGraz.VectoCore.Utils; @@ -35,7 +36,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation new XElement(_cif + XMLNames.Vehicle_VehicleCategory, vehicleData.LegislativeClass.ToXMLFormat()), new XElement(_cif + XMLNames.Vehicle_AxleConfiguration, vehicleData.AxleConfiguration.ToXMLFormat()), new XElement(_cif + XMLNames.Vehicle_TPMLM, XMLHelper.ValueAsUnit(vehicleData.GrossVehicleMassRating, "kg")), - new XElement(_cif + XMLNames.Report_Vehicle_VehicleGroup, vehicleData.VehicleCategory.ToXMLFormat()) + new XElement(_cif + XMLNames.Report_Vehicle_VehicleGroup, DeclarationData.GetVehicleGroupGroup(vehicleData)) }; return result; @@ -54,7 +55,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation new XElement(_cif + XMLNames.Vehicle_VehicleCategory, consolidatedVehicleData.LegislativeClass.ToXMLFormat()), new XElement(_cif + XMLNames.Vehicle_AxleConfiguration, primary.AxleConfiguration.ToXMLFormat()), new XElement(_cif + XMLNames.Vehicle_TPMLM, XMLHelper.ValueAsUnit(consolidatedVehicleData.GrossVehicleMassRating, "kg")), - new XElement(_cif + XMLNames.Report_Vehicle_VehicleGroup, consolidatedVehicleData.VehicleCategory.ToXMLFormat()) + new XElement(_cif + XMLNames.Report_Vehicle_VehicleGroup, DeclarationData.GetVehicleGroupGroup(consolidatedVehicleData)) }; return result; } @@ -168,7 +169,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation new XElement(_cif + "OffVehicleChargingCapability", ovCc) }); if (ovCc) { - result.Add(new XElement(_cif + "OffVehicleChargingMaxPower", inputData.JobInputData.Vehicle.MaxChargingPower.ValueAsUnit("kW"))); + result.Add(new XElement(_cif + "OffVehicleChargingMaxPower", inputData.JobInputData.Vehicle.MaxChargingPower.ValueAsUnit("kW", 1))); } return result; } @@ -193,7 +194,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation }); if (ovCc) { - result.Add(new XElement(_cif + "OffVehicleChargingMaxPower", inputData.JobInputData.Vehicle.MaxChargingPower.ValueAsUnit("kW"))); + result.Add(new XElement(_cif + "OffVehicleChargingMaxPower", inputData.JobInputData.Vehicle.MaxChargingPower.ValueAsUnit("kW", 1))); } return result; } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs index 1ccf10426a6923ce415775392ef990830f3bd3b6..21785ffcfdb4f23a5b71cef36f4cdaf85a473588 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs @@ -153,6 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetEngineGroup().GetElements(inputData), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), GetRetarder(inputData), GetAxleRatio(inputData), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), @@ -178,6 +179,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetEngineGroup().GetElements(inputData), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), _cifFactory.GetLorryAuxGroup().GetElements(inputData) ); @@ -200,6 +202,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetEngineGroup().GetElements(inputData), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), GetRetarder(inputData), GetAxleRatio(inputData, true), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), @@ -249,6 +252,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetPEVADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS).WithXName(_cif + "ADAS"), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), GetRetarder(inputData), GetAxleRatio(inputData), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), @@ -273,6 +277,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetPEVADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS).WithXName(_cif + "ADAS"), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), _cifFactory.GetLorryAuxGroup().GetElements(inputData) @@ -295,6 +300,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation _cifFactory.GetPEVADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS).WithXName(_cif + "ADAS"), _cifFactory.GetElectricMachineGroup().GetElements(inputData), _cifFactory.GetREESSGroup().GetElements(inputData), + _cifFactory.GetTransmissionGroupNoGearbox().GetElements(inputData), GetRetarder(inputData), GetAxleRatio(inputData, true), _cifFactory.GetAxleWheelsGroup().GetElements(inputData), diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs index 0d638e4fa482a1ae6a0fdf6513fde6ff9955c0d0..b233e2e5cc3cbbcbece2b6864f16728840276e24 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs @@ -42,6 +42,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation IReportOutputGroup GetConventionalLorryVehicleSequenceGroupWriter(); IReportOutputGroup GetEngineGroup(); IReportOutputGroup GetTransmissionGroup(); + IReportOutputGroup GetTransmissionGroupNoGearbox(); IReportOutputGroup GetAxleWheelsGroup(); IReportOutputGroup GetLorryAuxGroup(); IReportOutputGroup GetCompletedBusAuxGroup(); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs index ddeed612ee43972c60ede8055b48ec34b6904fb8..7fd5921e25303dbaf606447687ee24226f08a559 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs @@ -24,6 +24,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. public static XNamespace Mrf => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput"); public static XNamespace Mrf_0_9 => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9"); + public static XNamespace _di => XNamespace.Get("http://www.w3.org/2000/09/xmldsig#"); protected readonly IManufacturerReportFactory _mRFReportFactory; @@ -33,6 +34,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. protected XElement Results { get; set; } protected XElement Vehicle { get; set; } + protected XElement InputDataIntegrity { get; set; } + protected XElement Signature { get; set; } private VectoRunData _modelData; @@ -58,11 +61,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. _ovc = modelData.VehicleData.Ocv; _modelData = modelData; Results = new XElement(Mrf_0_9 + XMLNames.Report_Results); + InputDataIntegrity = new XElement(Mrf_0_9 + XMLNames.Report_InputDataSignature, + modelData.InputData.XMLHash == null ? XMLHelper.CreateDummySig(_di) : new XElement(modelData.InputData.XMLHash)); } public XDocument Report { get; protected set; } private List<XMLDeclarationReport.ResultEntry> results = new List<XMLDeclarationReport.ResultEntry>(); + public void WriteResult(XMLDeclarationReport.ResultEntry resultValue) { @@ -82,6 +88,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. new XElement(Mrf + XMLNames.Report_DataWrap, new XAttribute(xsi + XMLNames.XSIType, $"{OutputDataType}"), Vehicle, + InputDataIntegrity, Results, XMLHelper.GetApplicationInfo(Mrf_0_9)) ) diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/GeneralVehicleOutputXmlGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/GeneralVehicleOutputXmlGroup.cs index fffc1e784406a0a43ae8dbe26bef947e2c3cfdeb..3524d899bd36201074f619cf07c5087eb7d6ab88 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/GeneralVehicleOutputXmlGroup.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/GeneralVehicleOutputXmlGroup.cs @@ -4,10 +4,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter @@ -40,7 +43,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. new XElement(_mrf + XMLNames.Vehicle_VehicleCategory, vehicleData.LegislativeClass.ToXMLFormat()), new XElement(_mrf + XMLNames.Vehicle_AxleConfiguration, vehicleData.AxleConfiguration.ToXMLFormat()), new XElement(_mrf + XMLNames.TPMLM, vehicleData.GrossVehicleMassRating.ToXMLFormat(0)), - new XElement(_mrf + XMLNames.Report_Vehicle_VehicleGroup, vehicleData.VehicleCategory.ToXMLFormat()), + new XElement(_mrf + XMLNames.Report_Vehicle_VehicleGroup, DeclarationData.GetVehicleGroupGroup(vehicleData)), }; } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/HEV-VehicleSequenceGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/HEV-VehicleSequenceGroup.cs index abf82605827eeb9588fb4547a3cbdcfbc684be09..ebf83391a00b080d97d2a9257ddd056eb70f35df 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/HEV-VehicleSequenceGroup.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Common/HEV-VehicleSequenceGroup.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter.Vehicle.Lorry { @@ -24,7 +25,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. new XElement(_mrf + XMLNames.Vehicle_DualFuelVehicle, vehicleData.DualFuelVehicle), new XElement(_mrf + "HEVArchitecture", vehicleData.ArchitectureID.GetLabel()), new XElement(_mrf + "OffVehicleChargingCapability", vehicleData.OvcHev), - vehicleData.OvcHev ? new XElement(_mrf + "OffVehicleChargingMaxPower", vehicleData.MaxChargingPower.ToXMLFormat(0)) : null, + vehicleData.OvcHev ? new XElement(_mrf + "OffVehicleChargingMaxPower", vehicleData.MaxChargingPower.ValueAsUnit("kW", 1)) : null, }; result.Add(_mrfFactory.GetHEVADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS)); result.Add(_mrfFactory.GetBoostingLimitationsType().GetElement(inputData.JobInputData.Vehicle)); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFREESSSpecificationsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFREESSSpecificationsType.cs index f749dd7a9712f6511d03f3c64309ca760144b920..b467210b32094e1cfb89ca2d7e7715d46efd6b14 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFREESSSpecificationsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFREESSSpecificationsType.cs @@ -11,6 +11,7 @@ using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.SimulationComponent.Data.Battery; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter.Components { @@ -35,8 +36,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. new XElement(_mrf + XMLNames.Component_CertificationNumber, battery.CertificationNumber), new XElement(_mrf + XMLNames.DI_Signature_Reference_DigestValue, battery.DigestValue?.DigestValue ?? ""), new XElement(_mrf + XMLNames.BusAux_ElectricSystem_NominalVoltage, BatterySOCReader.Create(battery.VoltageCurve).Lookup(0.5).ToXMLFormat(0)), - new XElement(_mrf + "TotalStorageCapacity", battery.Capacity.AsAmpHour.ToXMLFormat(0)), - new XElement(_mrf + "TotalUsableCapacityInSimulation", battery.TotalUsableCapacityInSimulation().AsAmpHour), + new XElement(_mrf + "TotalStorageCapacity", battery.TotalStorageCapacity().ValueAsUnit("kWh", 0)), + new XElement(_mrf + "TotalUsableCapacityInSimulation", battery.TotalUsableCapacityInSimulation().ValueAsUnit("kWh"), 0), new XElement(_mrf + XMLNames.Component_CertificationMethod, battery.CertificationMethod.ToXMLFormat()) ) ); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFTorqueLimitationsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFTorqueLimitationsType.cs index 55e1b58109b4e7675826e60998931b755e7b24bb..628de75510d7bb823c12966c8b459d2ad3c1e939 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFTorqueLimitationsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/Components/MRFTorqueLimitationsType.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter { @@ -23,8 +24,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport. var maxEngineTorque = inputData.JobInputData.Vehicle.Components.EngineInputData.MaxTorqueDeclared; foreach (var torqueLimitInputData in inputData.JobInputData.Vehicle.TorqueLimits) { - - torqueLimitsElement.Add(new XElement(_mrf + "EngineTorqueLimit", new XAttribute("Gear", torqueLimitInputData.Gear), ((torqueLimitInputData.MaxTorque/maxEngineTorque)*100).ToXMLFormat(0))); + var value = (torqueLimitInputData.MaxTorque / maxEngineTorque).Value(); + torqueLimitsElement.Add(new XElement(_mrf + "EngineTorqueLimit", + new XAttribute("Gear", torqueLimitInputData.Gear), value.ValueAsUnit("%", 0) + )); } return torqueLimitsElement; diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFBoostingLimitationsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFBoostingLimitationsType.cs index 32e286734bc9df3f57a3a4ed6cae84845b0c2502..7de33a3fac3f196c114fdcd0f9516a95d7d31df4 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFBoostingLimitationsType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFBoostingLimitationsType.cs @@ -24,8 +24,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF foreach (DataRow row in boostingLimitations.Rows) { boostingLimitationsXElement.Add(new XElement(_v24 + XMLNames.BoostingLimitation_Entry, - new XAttribute(XMLNames.BoostingLimitation_BoostingTorque, row[XMLNames.BoostingLimitation_BoostingTorque]), - new XAttribute(XMLNames.BoostingLimitation_RotationalSpeed, row[XMLNames.BoostingLimitation_RotationalSpeed]))); + new XAttribute(XMLNames.BoostingLimitation_RotationalSpeed, row[XMLNames.BoostingLimitation_RotationalSpeed]), + new XAttribute(XMLNames.BoostingLimitation_BoostingTorque, row[XMLNames.BoostingLimitation_BoostingTorque]) + )); } return boostingLimitationsXElement; diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFElectricMachineSystemMeasuredType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFElectricMachineSystemMeasuredType.cs index 74879bb885a5789a5ccf9dde06e7804f31ce56bb..a050bd94ecd1ee56b76f1387a501756f90273d1e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFElectricMachineSystemMeasuredType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFElectricMachineSystemMeasuredType.cs @@ -71,15 +71,15 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF foreach (var voltageLevel in voltageLevels) { var entry = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel, - certificationMethod == CertificationMethod.StandardValues - ? null - : new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat(0)), + voltageLevels.Count > 1 + ? new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat(0)) + : null, new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageLevel.ContinuousTorque.ToXMLFormat(2)), - new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageLevel.ContinuousTorqueSpeed.ToXMLFormat(2)), - new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageLevel.OverloadTorque.ToXMLFormat(2)), - new XElement(_vif + XMLNames.ElectricMachine_TestSpeedOverloadTorque, voltageLevel.OverloadTestSpeed.ToXMLFormat(2)), - new XElement(_vif + XMLNames.ElectricMachine_OverloadDuration, voltageLevel.OverloadTime.ToXMLFormat(2)), - GetMaxTorqueCurve(voltageLevel.FullLoadCurve) + new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, + voltageLevel.ContinuousTorqueSpeed.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, + voltageLevel.OverloadTorque.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_TestSpeedOverloadTorque, + voltageLevel.OverloadTestSpeed.ToXMLFormat(2)), new XElement(_vif + XMLNames.ElectricMachine_OverloadDuration, + voltageLevel.OverloadTime.ToXMLFormat(2)), GetMaxTorqueCurve(voltageLevel.FullLoadCurve) ); result.Add(entry); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFTorqueConverterType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFTorqueConverterType.cs index 3b175196b5823f5442eb9f5990d18f1a05da401c..715819fe9ed699dc44d11d4e5c581b3f85835fcb 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFTorqueConverterType.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/PrimaryComponents/VIFTorqueConverterType.cs @@ -36,36 +36,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF torque.CertificationNumber), new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(torque.Date, XmlDateTimeSerializationMode.Utc)), - new XElement(_vif + XMLNames.Component_AppVersion, torque.AppVersion), - GetCharacteristics(torque.TCData) + new XElement(_vif + XMLNames.Component_AppVersion, torque.AppVersion) )); } - - private XElement GetCharacteristics(DataTable tcData) - { - if(tcData == null) - return null; - - var entries = new List<XElement>(); - for (int r = 0; r < tcData.Rows.Count; r++) { - - var speedRatio = tcData.Rows[r][TorqueConverterDataReader.Fields.SpeedRatio]; - var torqueRatio = tcData.Rows[r][TorqueConverterDataReader.Fields.TorqueRatio]; - var inputTorqueRef = tcData.Rows[r][TorqueConverterDataReader.Fields.CharacteristicTorque]; - - var xElement = new XElement(_vif + XMLNames.TorqueConverter_Characteristics_Entry, - new XAttribute(XMLNames.TorqueConverterData_SpeedRatio_Attr, speedRatio), - new XAttribute(XMLNames.TorqueConverterData_TorqueRatio_Attr, torqueRatio), - new XAttribute(XMLNames.TorqueConverterDataMapping_InputTorqueRef_Attr, inputTorqueRef)); - - entries.Add(xElement); - } - - return new XElement(_vif + XMLNames.TorqueConverter_Characteristics, - entries.Select(x => x)); - } - #endregion } }