diff --git a/VECTO/GUI/BatteryForm.vb b/VECTO/GUI/BatteryForm.vb index 4fef46185e2ed2620a984dd4bb13595d5f129854..c7ecaefbf743ae504aa2bb7a255f1d6fe13433cf 100644 --- a/VECTO/GUI/BatteryForm.vb +++ b/VECTO/GUI/BatteryForm.vb @@ -433,7 +433,7 @@ Public Class BatteryForm Try Dim riFile As String = If(Not String.IsNullOrWhiteSpace(_batteryFile), Path.Combine(Path.GetDirectoryName(_batteryFile), tbRiCurve.Text), tbRiCurve.Text) - If File.Exists(riFile) Then riCurve = BatteryInternalResistanceReader.Create(VectoCSVFile.Read(riFile)) + If File.Exists(riFile) Then riCurve = BatteryInternalResistanceReader.Create(VectoCSVFile.Read(riFile), false) Catch ex As Exception End Try diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/BatteryInternalResistanceReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/BatteryInternalResistanceReader.cs index 6c765c12bcb531232c4a8d9325dfca8e7a91bebf..c7f2418f8a0c728f85ba1a73b2f89b1680704b2e 100644 --- a/VectoCore/VectoCore/InputData/Reader/ComponentData/BatteryInternalResistanceReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/BatteryInternalResistanceReader.cs @@ -13,7 +13,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData { public static class BatteryInternalResistanceReader { - public static InternalResistanceMap Create(DataTable data) + public static InternalResistanceMap Create(DataTable data, bool inmOhm) { if (!(data.Columns.Count == 2 || data.Columns.Count == 4 || data.Columns.Count != 5)) { throw new VectoException( @@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData Tuple.Create(20.SI<Second>(), Fields.InternalResistance_20), }; if (data.Columns.Count == col1.Length + 1) { - return ReadInternalResistanceMap(data, col1); + return ReadInternalResistanceMap(data, col1, inmOhm); } var col2 = new[] { @@ -64,14 +64,14 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData Tuple.Create(120.SI<Second>(), Fields.InternalResistance_120) }; if (data.Columns.Count == col2.Length + 1) { - return ReadInternalResistanceMap(data, col2); + return ReadInternalResistanceMap(data, col2, inmOhm); } throw new VectoException("Failed to read InternalResistanceMap"); } - private static InternalResistanceMap ReadInternalResistanceMap(DataTable data, Tuple<Second, string>[] col1) + private static InternalResistanceMap ReadInternalResistanceMap(DataTable data, Tuple<Second, string>[] col1, bool inmOhm) { if ((!data.Columns.Contains(Fields.StateOfCharge) || !col1.All(x => data.Columns.Contains(x.Item2)))) { for (var i = 0; i < col1.Length; i++) { @@ -83,10 +83,10 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData data.Columns.Cast<DataColumn>().Select(c => c.ColumnName).Join()); } - + var factor = inmOhm ? 1000 : 1; return new InternalResistanceMap(data.Rows.Cast<DataRow>().Select(row => { var values = col1.Select(x => - row.Table.Columns.Contains(x.Item2) ? Tuple.Create(x.Item1, row.ParseDouble(x.Item2).SI<Ohm>()) : null) + row.Table.Columns.Contains(x.Item2) ? Tuple.Create(x.Item1, row.ParseDouble(x.Item2).SI<Ohm>() * factor) : null) .Where(x => x != null).ToList(); return new InternalResistanceMap.InternalResistanceMapEntry() { SoC = row.ParseDouble(Fields.StateOfCharge) / 100, @@ -111,9 +111,9 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData } - public static InternalResistanceMap Create(Stream data) + public static InternalResistanceMap Create(Stream data, bool inmOhm) { - return Create(VectoCSVFile.ReadStream(data)); + return Create(VectoCSVFile.ReadStream(data), inmOhm); } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 173d9ffc6b09da767d0bd888648085e13c7902ed..23568f436bcea11589e75b46c97c1e252715bbe9 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -848,7 +848,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter MaxCurrent = BatteryMaxCurrentReader.Create(b.MaxCurrentMap), Capacity = b.Capacity, InternalResistance = - BatteryInternalResistanceReader.Create(b.InternalResistanceCurve), + BatteryInternalResistanceReader.Create(b.InternalResistanceCurve, false), SOCMap = BatterySOCReader.Create(b.VoltageCurve), })); } diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs index 2e0bf3c6edfefa18fa9396f5b1f727d2bbd30761..09a94a6622c2ba3aa597b866a8bf2a1ba38dbe59 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs @@ -223,7 +223,7 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(0.8, engineering.JobInputData.Vehicle.InitialSOC); var bat = engineering.JobInputData.Vehicle.Components.ElectricStorage.ElectricStorageElements.First().REESSPack as IBatteryPackEngineeringInputData; - var ri = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve); + var ri = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve, false); var imax = BatteryMaxCurrentReader.Create(bat.MaxCurrentMap); Assert.NotNull(bat); diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs index c91a227eed6757803e22e7409b17c65462fd422b..abf04b17883cb5523e8b52d7fdf4fe90f17c8706 100644 --- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs +++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs @@ -49,6 +49,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric protected const string BEV_E2_Job_Cont30kW = @"TestData\BatteryElectric\GenericVehicleB2\BEV_ENG_Cont30kW.vecto"; protected const string BEV_E2_APTN_Job = @"TestData\BatteryElectric\GenericVehicleB2_APTN\BEV_B2_Group5LH_rl_APTN.vecto"; + protected const string BEV_E2_APTS_Job = @"TestData\BatteryElectric\GenericVehicleB2_AT\BEV_B2_Group5LH_rl_APTS.vecto"; protected const string BEV_E2_APTP_Job = @"TestData\BatteryElectric\GenericVehicleB2_AT\BEV_B2_Group5LH_rl_APTP.vecto"; diff --git a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs index 7acbd28b72296706620f45cacc4cd85217f5325b..0dbc656f2cd038a38be872715789ae68e9e4bc9e 100644 --- a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs +++ b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs @@ -900,7 +900,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream()), + BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs index 4a0b1e9bd816f0840df1a3ad8b55b23fedbdc42a..62d8faa17c8fe15893502db7edede2a6e55e9b99 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs @@ -224,7 +224,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }) @@ -312,7 +312,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }) @@ -409,7 +409,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -419,7 +419,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -429,7 +429,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -439,7 +439,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }) @@ -527,7 +527,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -537,7 +537,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -547,7 +547,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), }), @@ -557,7 +557,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent MaxSOC = REESS_MaxSoC, SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), InternalResistance = - BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream()), + BatteryInternalResistanceReader.Create($"SoC, Ri-2, Ri-10, Ri-20\n0, {r1}, {r2}, {r3}\n100, {r1}, {r2}, {r3}".ToStream(), false), MaxCurrent = BatteryMaxCurrentReader.Create( "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream()), })