Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 97d15d73 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

implement reading XML battery standard values, writing battery with standard values to VIF

parent 7183ffb0
No related branches found
No related tags found
No related merge requests found
......@@ -968,9 +968,9 @@ namespace TUGraz.VectoCommon.InputData
AmpereSecond Capacity { get; }
bool ConnectorsSubsystemsIncluded { get; }
bool? ConnectorsSubsystemsIncluded { get; }
bool JunctionboxIncluded { get; }
bool? JunctionboxIncluded { get; }
Kelvin TestingTemperature { get; }
......
......@@ -32,8 +32,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public BatteryType BatteryType { get; }
AmpereSecond IBatteryPackDeclarationInputData.Capacity => Body.GetEx<double>("Capacity").SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>();
public bool ConnectorsSubsystemsIncluded => Body.ContainsKey("ConnectorsSubsystemsIncluded") && Body.GetEx<bool>("ConnectorsSubsystemsIncluded");
public bool JunctionboxIncluded => Body.ContainsKey("JunctionboxIncluded") && Body.GetEx<bool>("JunctionboxIncluded");
public bool? ConnectorsSubsystemsIncluded => Body.ContainsKey("ConnectorsSubsystemsIncluded") && Body.GetEx<bool>("ConnectorsSubsystemsIncluded");
public bool? JunctionboxIncluded => Body.ContainsKey("JunctionboxIncluded") && Body.GetEx<bool>("JunctionboxIncluded");
public Kelvin TestingTemperature => Body.ContainsKey("TestingTemperature")
? Body.GetEx<double>("TestingTemperature").DegCelsiusToKelvin()
......
......@@ -4,6 +4,7 @@ using System.Xml;
using System.Xml.Linq;
using TUGraz.IVT.VectoXML;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Resources;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
......@@ -117,12 +118,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
public virtual BatteryType BatteryType => GetString(XMLNames.REESS_BatteryType).ParseEnum<BatteryType>();
public virtual AmpereSecond Capacity => GetDouble(XMLNames.REESS_RatedCapacity).SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>();
public virtual bool ConnectorsSubsystemsIncluded => GetBool(XMLNames.REESS_ConnectorsSubsystemsIncluded);
public virtual bool JunctionboxIncluded => GetBool(XMLNames.REESS_JunctionboxIncluded);
public virtual Kelvin TestingTemperature =>
ElementExists(XMLNames.REESS_TestingTemperature)
? GetDouble(XMLNames.REESS_TestingTemperature).DegCelsiusToKelvin() : null;
public virtual bool? ConnectorsSubsystemsIncluded => CertificationMethod == CertificationMethod.StandardValues
? (bool?)null
: GetBool(XMLNames.REESS_ConnectorsSubsystemsIncluded);
public virtual bool? JunctionboxIncluded => CertificationMethod == CertificationMethod.StandardValues
? (bool?)null
: GetBool(XMLNames.REESS_JunctionboxIncluded);
public virtual Kelvin TestingTemperature => CertificationMethod != CertificationMethod.StandardValues
? GetDouble(XMLNames.REESS_TestingTemperature).DegCelsiusToKelvin()
: null;
public virtual TableData InternalResistanceCurve => ReadTableData(XMLNames.REESS_InternalResistanceCurve, XMLNames.REESS_MapEntry,
AttributeMappings.InternalResistanceMap);
......
......@@ -100,8 +100,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
private XElement GetReess(IBatteryPackDeclarationInputData battery)
{
var stdValues = battery.CertificationMethod == CertificationMethod.StandardValues;
return new XElement(_vif + XMLNames.ComponentDataWrapper,
new XAttribute(_xsi + XMLNames.XSIType, "BatterySystemDataType"),
new XAttribute(_xsi + XMLNames.XSIType, stdValues ? "BatterySystemStandardValuesDataType" : "BatterySystemDataType"),
new XElement(_vif + XMLNames.Component_Manufacturer, battery.Manufacturer),
new XElement(_vif + XMLNames.Component_Model, battery.Model),
new XElement(_vif + XMLNames.Component_CertificationMethod, battery.CertificationMethod.ToXMLFormat()),
......@@ -113,11 +114,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
new XElement(_vif + XMLNames.Component_AppVersion, battery.AppVersion),
new XElement(_vif + XMLNames.REESS_BatteryType, battery.BatteryType.ToString()),
new XElement(_vif + XMLNames.REESS_RatedCapacity, battery.Capacity.AsAmpHour.ToXMLFormat(2)),
new XElement(_vif + XMLNames.REESS_ConnectorsSubsystemsIncluded, battery.ConnectorsSubsystemsIncluded),
new XElement(_vif + XMLNames.REESS_JunctionboxIncluded, battery.JunctionboxIncluded),
battery.TestingTemperature == null
? null
: new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.AsDegCelsius.ToXMLFormat(0)),
stdValues ? null : new XElement(_vif + XMLNames.REESS_ConnectorsSubsystemsIncluded, battery.ConnectorsSubsystemsIncluded),
stdValues ? null : new XElement(_vif + XMLNames.REESS_JunctionboxIncluded, battery.JunctionboxIncluded),
stdValues ? null : new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.AsDegCelsius.ToXMLFormat(0)),
GetOcv(battery.VoltageCurve),
GetCurrentLimits(battery.MaxCurrentMap)
);
......
......@@ -353,8 +353,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
public double? MaxSOC => 0.8;
public BatteryType BatteryType { get; }
public AmpereSecond Capacity { get; }
public bool ConnectorsSubsystemsIncluded { get; }
public bool JunctionboxIncluded { get; }
public bool? ConnectorsSubsystemsIncluded { get; }
public bool? JunctionboxIncluded { get; }
public Kelvin TestingTemperature => null;
public TableData InternalResistanceCurve => VectoCSVFile.ReadStream(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment