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

Skip to content
Snippets Groups Projects
Commit a6380287 authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

correcting generated XMLS

parent 38fd6df2
No related branches found
No related tags found
No related merge requests found
Showing
with 60 additions and 44 deletions
......@@ -25,7 +25,7 @@ namespace TUGraz.VectoCommon.InputData {
public static class PowertrainPositionHelper
{
public const string HybridPrefix = "Hybrid";
public const string BatteryElectriPrefix = "BatteryElectric";
public const string BatteryElectricPrefix = "BatteryElectric";
public static PowertrainPosition Parse(string prefix, string pos)
{
......@@ -58,7 +58,7 @@ namespace TUGraz.VectoCommon.InputData {
public static string GetName(this PowertrainPosition pos)
{
return pos.ToString().Replace(HybridPrefix, "").Replace(BatteryElectriPrefix, "").Replace("_", ".");
return pos.ToString().Replace(HybridPrefix, "").Replace(BatteryElectricPrefix, "").Replace("_", ".");
}
public static string GetLabel(this PowertrainPosition pos)
......@@ -75,7 +75,7 @@ namespace TUGraz.VectoCommon.InputData {
case PowertrainPosition.GEN:
return nameof(PowertrainPosition.GEN);
}
return pos.ToString().Replace(BatteryElectriPrefix, "").Replace("B", "E");
return pos.ToString().Replace(BatteryElectricPrefix, "").Replace("B", "E");
}
public static bool IsBatteryElectric(this PowertrainPosition pos)
......@@ -130,7 +130,7 @@ namespace TUGraz.VectoCommon.InputData {
private static string GetPositionWithoutPrefix(string position)
{
return position.Replace(BatteryElectriPrefix, "").Replace("E", "").Replace(HybridPrefix, "").Replace("P", "")
return position.Replace(BatteryElectricPrefix, "").Replace("E", "").Replace(HybridPrefix, "").Replace("P", "")
.Replace("_", ".");
}
public static bool IsSerialHybrid(this PowertrainPosition pos)
......
......@@ -87,6 +87,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
case "APT-N":
case "APT-P":
case "AT - PowerSplit": return GearboxType.ATPowerSplit;
case "IHPC Type 1": return GearboxType.IHPC;
}
throw new ArgumentOutOfRangeException("GearboxType", value);
......
......@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
protected override List<ElectricMachineEntry<IElectricMotorDeclarationInputData>> GetEntries()
{
var machineEntry = new ElectricMachineEntry<IElectricMotorDeclarationInputData> {
Position = PowertrainPositionHelper.Parse(((XMLDeclarationMultistage_Conventional_PrimaryVehicleBusDataProviderV01)_vehicle).PowertrainPositionPrefix +
Position = PowertrainPositionHelper.Parse(((XMLDeclarationMultistage_Conventional_PrimaryVehicleBusDataProviderV01)_vehicle).PowertrainPositionPrefix,
GetString(XMLNames.ElectricMachine_PowertrainPosition)),
Count = XmlConvert.ToInt32(GetString(XMLNames.ElectricMachine_Count)),
ElectricMachine = ElectricMachineSystemReader.CreateElectricMachineSystem(GetNode(XMLNames.ElectricMachineSystem)),
......
......@@ -153,7 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
foreach (var electricMotorVoltageLevel in voltageLevels)
{
var voltageLevel = new XElement(_cif + XMLNames.ElectricMachine_VoltageLevel,
new XAttribute("voltage", electricMotorVoltageLevel.VoltageLevel.ToXMLFormat(0)),
voltageLevels.Count > 1 ? new XAttribute("voltage", electricMotorVoltageLevel.VoltageLevel.ToXMLFormat(0)) : null,
new XElement(_cif + "MaxContinuousPropulsionPower",
(electricMotorVoltageLevel.ContinuousTorque * electricMotorVoltageLevel.ContinuousTorqueSpeed)
.ToXMLFormat(0)));
......@@ -178,16 +178,38 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
var reess = inputData.JobInputData.Vehicle.Components.ElectricStorage;
var batteries = reess.ElectricStorageElements
.Where(es => es.REESSPack.StorageType == REESSType.Battery)
.Select(es => es.REESSPack as IBatteryPackDeclarationInputData);
var totalStorageCapacity = batteries
.Sum(bp => bp.Capacity);
var totalUsableCapacity = batteries.Sum(bp => bp.TotalUsableCapacityInSimulation());
.Select(es => es.REESSPack as IBatteryPackDeclarationInputData).ToArray();
var capacitors = reess.ElectricStorageElements.Where(es => es.REESSPack.StorageType == REESSType.SuperCap)
.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>());
var totalUsableCapacity = (batteries.Length > 0
? batteries.Sum(bp => bp.TotalUsableCapacityInSimulation())
: 0.SI<AmpereSecond>()) +
(capacitors.Length > 0
? capacitors.Sum(cap => GetTotalUsableCapacityInSimulation(cap))
: 0.SI<AmpereSecond>());
return new List<XElement>() {
new XElement(_cif + "TotalStorageCapacity", totalUsableCapacity.ValueAsUnit("Ah", 0)),
new XElement(_cif + "UsableStorageCapacity", totalStorageCapacity.ValueAsUnit("Ah", 0))
};
}
private AmpereSecond GetTotalUsableCapacityInSimulation(ISuperCapDeclarationInputData cap)
{
return GetStorageCapacity(cap) * 0.8;
}
private AmpereSecond 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;
}
#endregion
}
......
......@@ -41,12 +41,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
var voltageLevels = new XElement(_mrf + "VoltageLevels");
electricMachineSystem.Add(voltageLevels);
foreach (var electricMotorVoltageLevel in electricMachine.ElectricMachine.VoltageLevels)
{
foreach (var electricMotorVoltageLevel in electricMachine.ElectricMachine.VoltageLevels) {
var voltageLevel = new XElement(_mrf + XMLNames.ElectricMachine_VoltageLevel,
new XAttribute("voltage", electricMotorVoltageLevel.VoltageLevel.ToXMLFormat(0)),
electricMachine.ElectricMachine.VoltageLevels.Count > 1
? new XAttribute("voltage", electricMotorVoltageLevel.VoltageLevel.ToXMLFormat(0))
: null,
new XElement(_mrf + "MaxContinuousPower",
(electricMotorVoltageLevel.ContinuousTorque * electricMotorVoltageLevel.ContinuousTorqueSpeed)
(electricMotorVoltageLevel.ContinuousTorque *
electricMotorVoltageLevel.ContinuousTorqueSpeed)
.ToXMLFormat(0)));
......@@ -56,7 +58,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
electricMachineElement.Add(electricMachineSystem);
if (electricMachine.ADC != null) {
var adc = electricMachine.ADC;
result.Add(new XElement(_mrf + XMLNames.Component_ADC,
electricMachineElement.Add(new XElement(_mrf + XMLNames.Component_ADC,
new XElement(_mrf + XMLNames.Component_Model, adc.Model),
new XElement(_mrf + XMLNames.Component_CertificationNumber, adc.CertificationNumber),
new XElement(_mrf + XMLNames.DI_Signature_Reference_DigestValue, adc.DigestValue?.DigestValue ?? ""),
......
......@@ -40,16 +40,18 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
new XElement(_mrf + XMLNames.Component_CertificationMethod, battery.CertificationMethod.ToXMLFormat())
)
);
}else if (electricStorage.REESSPack.StorageType == REESSType.SuperCap &&
} else if (electricStorage.REESSPack.StorageType == REESSType.SuperCap &&
electricStorage.REESSPack is ISuperCapDeclarationInputData superCap) {
result.Add(new XElement(_mrf + XMLNames.ElectricEnergyStorage_Capacitor),
new XElement(_mrf + XMLNames.Component_Model, superCap.Model),
new XElement(_mrf + XMLNames.Component_CertificationNumber, superCap.CertificationNumber),
new XElement(_mrf + XMLNames.Capacitor_Capacitance, superCap.Capacity.ToXMLFormat()),
new XElement(_mrf + XMLNames.Capacitor_MinVoltage, superCap.MinVoltage),
new XElement(_mrf + XMLNames.Capacitor_MaxVoltage, superCap.MinVoltage),
new XElement(_mrf + XMLNames.DI_Signature_Reference_DigestValue, superCap.DigestValue?.DigestValue ?? "")
);
result.Add(new XElement(_mrf + XMLNames.ElectricEnergyStorage_Capacitor,
new XElement(_mrf + XMLNames.Component_Model, superCap.Model),
new XElement(_mrf + XMLNames.Component_CertificationNumber, superCap.CertificationNumber),
new XElement(_mrf + XMLNames.DI_Signature_Reference_DigestValue,
superCap.DigestValue?.DigestValue ?? ""),
new XElement(_mrf + XMLNames.Capacitor_Capacitance, superCap.Capacity.ToXMLFormat()),
new XElement(_mrf + XMLNames.Capacitor_MinVoltage, superCap.MinVoltage.ToXMLFormat(2)),
new XElement(_mrf + XMLNames.Capacitor_MaxVoltage, superCap.MaxVoltage.ToXMLFormat(2))
)
);
} else {
throw new VectoException("Invalid REESS type");
}
......
......@@ -34,10 +34,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
private XElement GetElectricMachineGENType(ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineData)
{
return new XElement(_vif + XMLNames.Component_ElectricMachineGEN,
new XElement(_vif + XMLNames.ElectricMachine_PowertrainPosition, electricMachineData.Position.ToXmlFormat()),
new XElement(_vif + XMLNames.ElectricMachine_PowertrainPosition,
electricMachineData.Position.ToXmlFormat()),
new XElement(_vif + XMLNames.ElectricMachine_Count, electricMachineData.Count),
_vifFactory.GetElectricMachineSystemType().GetElement(electricMachineData.ElectricMachine),
GetADC(electricMachineData.ADC));
GetADC(electricMachineData.ADC)
);
}
protected virtual XElement GetADC(IADCDeclarationInputData adcData)
......@@ -45,31 +47,16 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
if (adcData == null)
return null;
var lossEntries = new List<XElement>();
foreach (DataRow row in adcData.LossMap.Rows) {
var inputSpeed = row[XMLNames.ADC_TorqueLossMap_InputSpeed].ToString().ToDouble();
var inputTorque = row[XMLNames.ADC_TorqueLossMap_InputTorque];
var torqueLoss = row[XMLNames.ADC_TorqueLossMap_TorqueLoss].ToString().ToDouble();
lossEntries.Add(new XElement(_vif + XMLNames.ADC_TorqueLossMap_Entry,
new XAttribute(XMLNames.ADC_TorqueLossMap_InputSpeed, inputSpeed.ToXMLFormat(2)),
new XAttribute(XMLNames.ADC_TorqueLossMap_InputTorque, inputTorque),
new XAttribute(XMLNames.ADC_TorqueLossMap_TorqueLoss, torqueLoss.ToXMLFormat(2))));
}
return new XElement(_vif + XMLNames.Component_ADC,
new XElement(_vif + XMLNames.ComponentDataWrapper,
new XAttribute(_xsi + XMLNames.XSIType, "ADCDataDeclarationType"),
new XAttribute("id", adcData.DigestValue.Reference),
new XElement(_vif + XMLNames.Component_Manufacturer, adcData.Manufacturer),
new XElement(_vif + XMLNames.Component_Model, adcData.Model),
new XElement(_vif + XMLNames.Report_Component_CertificationNumber, adcData.CertificationNumber),
new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(adcData.Date, XmlDateTimeSerializationMode.Utc)),
new XElement(_vif + XMLNames.Component_AppVersion, adcData.AppVersion),
new XElement(_vif + XMLNames.ADC_Ratio, adcData.Ratio.ToXMLFormat(3)),
new XElement(_vif + XMLNames.Component_CertificationMethod, adcData.CertificationMethod.ToXMLFormat()),
new XElement(_vif + XMLNames.ADC_TorqueLossMap, lossEntries)
new XElement(_vif + XMLNames.Component_CertificationMethod, adcData.CertificationMethod.ToXMLFormat())
)
);
}
......
......@@ -32,11 +32,13 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
private XElement GetElectricMachineType(ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineData)
{
return new XElement(_vif + XMLNames.Component_ElectricMachine,
new XElement(_vif + XMLNames.ElectricMachine_PowertrainPosition,
electricMachineData.Position.ToXmlFormat()),
new XElement(_vif + XMLNames.ElectricMachine_Count, electricMachineData.Count),
_vifFactory.GetElectricMachineSystemType().GetElement(electricMachineData.ElectricMachine),
Get25GearRatio(electricMachineData.RatioPerGear),
GetADC(electricMachineData.ADC),
new XElement(_vif + XMLNames.ElectricMachine_PowertrainPosition, electricMachineData.Position.ToXmlFormat()));
Get25GearRatio(electricMachineData.RatioPerGear)
);
}
private XElement Get25GearRatio(double[] gearRatios)
......
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