From fce689d5511a873153e7f98e594663c141e5af25 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 27 Nov 2023 09:27:27 +0100 Subject: [PATCH 1/5] change the force calibration charge as enum instead of boolean --- .../App/SaliMax/src/SystemConfig/CalibrationChargeType.cs | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 csharp/App/SaliMax/src/SystemConfig/CalibrationChargeType.cs diff --git a/csharp/App/SaliMax/src/SystemConfig/CalibrationChargeType.cs b/csharp/App/SaliMax/src/SystemConfig/CalibrationChargeType.cs new file mode 100644 index 000000000..bbad073ce --- /dev/null +++ b/csharp/App/SaliMax/src/SystemConfig/CalibrationChargeType.cs @@ -0,0 +1,8 @@ +namespace InnovEnergy.App.SaliMax.SystemConfig; + +public enum CalibrationChargeType +{ + No, + UntilEoc, + Yes +} \ No newline at end of file From 732274933b0a129515e00d3eab2f72ccf3ba7b49 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 27 Nov 2023 09:28:07 +0100 Subject: [PATCH 2/5] Add force calibration charge to the config --- csharp/App/SaliMax/src/SystemConfig/Config.cs | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/csharp/App/SaliMax/src/SystemConfig/Config.cs b/csharp/App/SaliMax/src/SystemConfig/Config.cs index c7bd362cf..521ecea3b 100644 --- a/csharp/App/SaliMax/src/SystemConfig/Config.cs +++ b/csharp/App/SaliMax/src/SystemConfig/Config.cs @@ -14,25 +14,25 @@ public class Config //TODO: let IE choose from config files (Json) and connect t private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; - public required Double MinSoc { get; set; } - public required Boolean ForceCalibrationCharge { get; set; } - public required Boolean DisplayIndividualBatteries { get; set; } - public required Double PConstant { get; set; } - public required Double GridSetPoint { get; set; } - public required Double BatterySelfDischargePower { get; set; } - public required Double HoldSocZone { get; set; } - public required DevicesConfig IslandMode { get; set; } - public required DevicesConfig GridTie { get; set; } + public required Double MinSoc { get; set; } + public required CalibrationChargeType ForceCalibrationCharge { get; set; } + public required Boolean DisplayIndividualBatteries { get; set; } + public required Double PConstant { get; set; } + public required Double GridSetPoint { get; set; } + public required Double BatterySelfDischargePower { get; set; } + public required Double HoldSocZone { get; set; } + public required DevicesConfig IslandMode { get; set; } + public required DevicesConfig GridTie { get; set; } - public required Double MaxBatteryChargingCurrent { get; set; } - public required Double MaxBatteryDischargingCurrent { get; set; } - public required Double MaxDcPower { get; set; } + public required Double MaxBatteryChargingCurrent { get; set; } + public required Double MaxBatteryDischargingCurrent { get; set; } + public required Double MaxDcPower { get; set; } - public required Double MaxChargeBatteryVoltage { get; set; } - public required Double MinDischargeBatteryVoltage { get; set; } + public required Double MaxChargeBatteryVoltage { get; set; } + public required Double MinDischargeBatteryVoltage { get; set; } - public required DeviceConfig Devices { get; set; } - public required S3Config? S3 { get; set; } + public required DeviceConfig Devices { get; set; } + public required S3Config? S3 { get; set; } private static String? LastSavedData { get; set; } @@ -40,7 +40,7 @@ public class Config //TODO: let IE choose from config files (Json) and connect t public static Config Default => new() { MinSoc = 20, - ForceCalibrationCharge = false, + ForceCalibrationCharge = CalibrationChargeType.No, DisplayIndividualBatteries = false, PConstant = .5, GridSetPoint = 0, @@ -117,7 +117,7 @@ public class Config //TODO: let IE choose from config files (Json) and connect t public static Config Default => new() { MinSoc = 20, - ForceCalibrationCharge = false, + ForceCalibrationCharge = CalibrationChargeType.No, DisplayIndividualBatteries = false, PConstant = .5, GridSetPoint = 0, From 825a6c87bd9a4c4d9d114ab017b58255698437d7 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 27 Nov 2023 09:28:32 +0100 Subject: [PATCH 3/5] Add the new force calibration charge in the controller --- csharp/App/SaliMax/src/Ess/Controller.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/csharp/App/SaliMax/src/Ess/Controller.cs b/csharp/App/SaliMax/src/Ess/Controller.cs index 15adb1590..fb80e0230 100644 --- a/csharp/App/SaliMax/src/Ess/Controller.cs +++ b/csharp/App/SaliMax/src/Ess/Controller.cs @@ -1,3 +1,4 @@ +using InnovEnergy.App.SaliMax.SystemConfig; using InnovEnergy.Lib.Devices.Battery48TL; using InnovEnergy.Lib.Devices.Battery48TL.DataTypes; using InnovEnergy.Lib.Devices.Trumpf.TruConvertAc.DataTypes; @@ -187,18 +188,24 @@ public static class Controller } private static Boolean MustDoCalibrationCharge(this StatusRecord statusRecord) - { + { var calibrationChargeForced = statusRecord.Config.ForceCalibrationCharge; - var batteryCalibrationChargeRequested = statusRecord.Battery?.CalibrationChargeRequested?? false ; - var mustDoCalibrationCharge = batteryCalibrationChargeRequested || calibrationChargeForced; + var mustDoCalibrationCharge = batteryCalibrationChargeRequested || calibrationChargeForced == CalibrationChargeType.Yes || calibrationChargeForced == CalibrationChargeType.UntilEoc ; + if (statusRecord.Battery is not null) + { + if (calibrationChargeForced == CalibrationChargeType.UntilEoc && statusRecord.Battery.Eoc ) + { + statusRecord.Config.ForceCalibrationCharge = CalibrationChargeType.No; + } + } return mustDoCalibrationCharge; } - public static Double ControlGridPower(this StatusRecord status, Double targetPower) + private static Double ControlGridPower(this StatusRecord status, Double targetPower) { return ControlPower ( From 9cd85f1d310d2827e46cbd9edf7a3c84ea9798f5 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 27 Nov 2023 09:29:44 +0100 Subject: [PATCH 4/5] format fixed --- csharp/App/SaliMax/src/Program.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/App/SaliMax/src/Program.cs b/csharp/App/SaliMax/src/Program.cs index 253bfc1ab..d7db7f043 100644 --- a/csharp/App/SaliMax/src/Program.cs +++ b/csharp/App/SaliMax/src/Program.cs @@ -59,7 +59,7 @@ internal static class Program private static IModel? _channel; private static Boolean _subscribedToQueue = false; private static Boolean _subscribeToQueueForTheFirstTime = false; - private static SalimaxAlarmState _prevSalimaxState = SalimaxAlarmState.Green; + private static SalimaxAlarmState _prevSalimaxState = SalimaxAlarmState.Green; private static Int32 _heartBitInterval = 0; static Program() @@ -247,7 +247,7 @@ internal static class Program (record.Relays is null ? "No relay Data available" : record.Relays.FiWarning ? "Alert: Fi Warning Detected" : "No Fi Warning Detected").WriteLine(); (record.Relays is null ? "No relay Data available" : record.Relays.FiError ? "Alert: Fi Error Detected" : "No Fi Error Detected") .WriteLine(); - + record.Config.Save(); "===========================================".LogInfo(); From 0f9a4ddc4e4fc7822554fdaefa204d38b873b751 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 27 Nov 2023 09:30:07 +0100 Subject: [PATCH 5/5] change the config to be set --- csharp/App/SaliMax/src/Ess/StatusRecord.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/App/SaliMax/src/Ess/StatusRecord.cs b/csharp/App/SaliMax/src/Ess/StatusRecord.cs index bc67de3f2..780155e5c 100644 --- a/csharp/App/SaliMax/src/Ess/StatusRecord.cs +++ b/csharp/App/SaliMax/src/Ess/StatusRecord.cs @@ -25,7 +25,7 @@ public record StatusRecord public required DcPowerDevice? LoadOnDc { get; init; } public required RelaysRecord? Relays { get; init; } public required AmptStatus? PvOnDc { get; init; } - public required Config Config { get; init; } + public required Config Config { get; set; } public required SystemLog Log { get; set; } // TODO: init only public required EssControl EssControl { get; set; } // TODO: init only