Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

Merge pull request #37 in VECTO/vecto-dev from VECTO/mq_vecto-dev:develop to develop

* commit '9f822be7':
  adapt testcase after modifications in supercap model
  bugfix in supercap: calculation of max discharge power, ensure initial soc is higher than min soc, fix in powertrain builder calculating aux buffer in case of supercap
parents 1ffa7bc4 9f822be7
No related branches found
No related tags found
No related merge requests found
......@@ -370,12 +370,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
var es = new ElectricSystem(container);
if (data.BatteryData != null) {
if (data.BatteryData.InitialSoC < data.BatteryData.MinSOC) {
throw new VectoException("Battery: Initial SoC has to be higher than min SoC");
}
var battery = new Battery(container, data.BatteryData);
battery.Initialize(data.BatteryData.InitialSoC);
es.Connect(battery);
}
if (data.SuperCapData != null) {
if (data.SuperCapData.InitialSoC < data.SuperCapData.MinVoltage / data.SuperCapData.MaxVoltage) {
throw new VectoException("SuperCap: Initial SoC has to be higher than min SoC");
}
var superCap = new SuperCap(container, data.SuperCapData);
superCap.Initialize(data.SuperCapData.InitialSoC);
es.Connect(superCap);
......
using System;
using System.Linq;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
......@@ -57,7 +58,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var maxDischargePower = InternalVoltage * maxDischargeCurrent +
maxDischargeCurrent * ModelData.InternalResistance * maxDischargeCurrent;
var maxPower = -InternalVoltage / (4 * ModelData.InternalResistance) * InternalVoltage;
return VectoMath.Max(maxDischargePower > 0 ? -double.MaxValue.SI<Watt>():maxDischargePower, maxPower);
return VectoMath.Max(maxDischargePower, maxPower);
}
public double MinSoC
......@@ -71,8 +72,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public void Initialize(double initialSoC)
{
PreviousState.Charge = ModelData.Capacity * ((ModelData.MaxVoltage - ModelData.MinVoltage) * initialSoC +
ModelData.MinVoltage);
PreviousState.Charge = ModelData.Capacity * (ModelData.MaxVoltage * initialSoC );
}
......
......@@ -360,7 +360,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime;
BatteryDischargeEnergyThreshold = 0.SI<WattSecond>();
if (auxEnergyReserve > 0) {
var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.InitialSoC,
var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.MinVoltage / ModelData.SuperCapData.MaxVoltage,
StrategyParameters.MinSoC);
BatteryDischargeEnergyThreshold =
ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) +
......
......@@ -36,6 +36,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
InternalResistance = 0.02.SI<Ohm>(),
MinVoltage = 0.SI<Volt>(),
MaxVoltage = 330.SI<Volt>(),
MaxCurrentDischarge = -200.SI<Ampere>(),
MaxCurrentCharge = 200.SI<Ampere>()
};
var container = new MockVehicleContainer();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment