diff --git a/csharp/App/SaliMax/src/Program.cs b/csharp/App/SaliMax/src/Program.cs index bfecee9c2..bb9444fee 100644 --- a/csharp/App/SaliMax/src/Program.cs +++ b/csharp/App/SaliMax/src/Program.cs @@ -173,7 +173,12 @@ internal static class Program var t = UnixTime.Now; var record = ReadStatus(); - + + var batteryTimeToToc = (3600 - record.Battery.TimeToToc / 60 ); + + record.Battery.TimeToToc.WriteLine(" : Value of register 54"); + batteryTimeToToc .WriteLine(" : Remaining time before next top of charge"); + record.ControlConstants(); record.ControlSystemState(); diff --git a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs index 973f86deb..edef861f8 100644 --- a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs +++ b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Api.cs @@ -24,7 +24,9 @@ public partial class Battery48TlRecord public Strings Alarms => ParseAlarms() .OrderBy(w => w).ToList(); public Percent Soc => _Soc; - + + public UInt16 TimeToTOC => (UInt16)_TimeToTOC; + public Current BusCurrent => _BusCurrent; public Current HeatingCurrent => _BusCurrent - _CellsCurrent; diff --git a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Modbus.cs b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Modbus.cs index 249ba4283..aad600beb 100644 --- a/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Modbus.cs +++ b/csharp/Lib/Devices/Battery48TL/Battery48TlRecord.Modbus.cs @@ -22,23 +22,23 @@ public partial class Battery48TlRecord [InputRegister(1000, Scale = 0.01, Offset = -10000)] private Double _CellsCurrent; [InputRegister(1062, Scale = 0.01, Offset = -10000)] private Double _BusCurrent; - [InputRegister(1053, Scale = 0.1)] private Double _Soc; + [InputRegister(1053, Scale = 0.1)] private Double _Soc; + [InputRegister(1052)] private Double _TimeToTOC; - [InputRegister(1014, Scale = 0.1, Offset = -400)] private Double _TemperaturesBoard; - [InputRegister(1015, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsCenter; - [InputRegister(1016, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsLeft; - [InputRegister(1017, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsRight; - [InputRegister(1003, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsAverage; - - - [InputRegister(1054)] private Double _FwVersion; - [InputRegister(1055)] private Double _SerialNum1; - [InputRegister(1056)] private Double _SerialNum2; - [InputRegister(1057)] private Double _SerialNum3; - [InputRegister(1058)] private Double _SerialNum4; - [InputRegister(1059)] private Double _LimpBitMap; - [InputRegister(1060)] private Double _BatteryState1; - [InputRegister(1061)] private Double _BatteryState2; + [InputRegister(1014, Scale = 0.1, Offset = -400)] private Double _TemperaturesBoard; + [InputRegister(1015, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsCenter; + [InputRegister(1016, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsLeft; + [InputRegister(1017, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsRight; + [InputRegister(1003, Scale = 0.1, Offset = -400)] private Double _TemperaturesCellsAverage; + + [InputRegister(1054)] private Double _FwVersion; + [InputRegister(1055)] private Double _SerialNum1; + [InputRegister(1056)] private Double _SerialNum2; + [InputRegister(1057)] private Double _SerialNum3; + [InputRegister(1058)] private Double _SerialNum4; + [InputRegister(1059)] private Double _LimpBitMap; + [InputRegister(1060)] private Double _BatteryState1; + [InputRegister(1061)] private Double _BatteryState2; private LedState ParseLed(LedColor led) => (LedState)((_LedStates >> (Int32)led) & 3); diff --git a/csharp/Lib/Devices/Battery48TL/Battery48TlRecords.cs b/csharp/Lib/Devices/Battery48TL/Battery48TlRecords.cs index 93d57fa32..21bf097bb 100644 --- a/csharp/Lib/Devices/Battery48TL/Battery48TlRecords.cs +++ b/csharp/Lib/Devices/Battery48TL/Battery48TlRecords.cs @@ -14,6 +14,7 @@ public class Battery48TlRecords public required Percent CurrentMinSoc { get; init; } public required Temperature Temperature { get; init; } public required DcPower HeatingPower { get; init; } + public required UInt16 TimeToToc { get; init; } public required IReadOnlyList Devices { get; init; } @@ -32,7 +33,8 @@ public class Battery48TlRecords CurrentMinSoc = records.Min(r => r.Soc.Value), Temperature = records.Average(b => b.Temperatures.Cells.Average.Value), HeatingPower = records.Sum(b => b.HeatingPower), - + TimeToToc = records.Min(r => r.TimeToTOC), + Dc = DcBus.FromVoltageCurrent ( records.Average(r => r.Dc.Voltage),