Add display messages, Battery alarms and warnings

This commit is contained in:
atef 2023-07-10 10:10:39 +02:00
parent c2f32cdc95
commit 4ee7aebf95
1 changed files with 30 additions and 12 deletions

View File

@ -99,12 +99,25 @@ internal static class Program
StatusRecord ReadStatus() StatusRecord ReadStatus()
{ {
Console.WriteLine(" Reading AcDC");
var acDc = acDcDevices.Read(); var acDc = acDcDevices.Read();
Console.WriteLine(" Reading dcDc");
var dcDc = dcDcDevices.Read(); var dcDc = dcDcDevices.Read();
Console.WriteLine(" Reading battery");
var battery = batteryDevices.Read(); var battery = batteryDevices.Read();
Console.WriteLine(" Reading relays");
var relays = saliMaxRelaysDevice.Read(); var relays = saliMaxRelaysDevice.Read();
Console.WriteLine(" loadOnAcIsland");
var loadOnAcIsland = acIslandLoadMeter.Read(); var loadOnAcIsland = acIslandLoadMeter.Read();
Console.WriteLine(" Reading gridMeter");
var gridMeter = gridMeterDevice.Read(); var gridMeter = gridMeterDevice.Read();
Console.WriteLine(" Reading pvOnDc");
var pvOnDc = amptDevice.Read(); var pvOnDc = amptDevice.Read();
var pvOnAcGrid = AcPowerDevice.Null; var pvOnAcGrid = AcPowerDevice.Null;
@ -241,17 +254,15 @@ internal static class Program
var dcLinkVoltage = TextBlock.AlignCenterHorizontal("", var dcLinkVoltage = TextBlock.AlignCenterHorizontal("",
s.DcDc.Dc.Link.Voltage.ToDisplayString(), s.DcDc.Dc.Link.Voltage.ToDisplayString(),
""); "");
//var inverterPowerByPhase = new ActivePower[(Int32)s.AcDc.Ac.L1.Power.Active, (Int32)s.AcDc.Ac.L2.Power.Active, (Int32)s.AcDc.Ac.L3.Power.Active];
// Voltage Measurement Values
//var inverterVoltage = new Voltage [(Int32)s.AcDc.Ac.L1.Voltage, (Int32)s.AcDc.Ac.L2.Voltage, (Int32)s.AcDc.Ac.L3.Voltage];
//var dcLinkVoltage = s.DcDc.Dc.Link.Voltage;
var dc48Voltage = s.DcDc.Dc.Battery.Voltage.ToDisplayString(); var dc48Voltage = s.DcDc.Dc.Battery.Voltage.ToDisplayString();
var batteryVoltage = s.Battery.Dc.Voltage.ToDisplayString(); var batteryVoltage = s.Battery.Dc.Voltage.Value.RoundToSignificantDigits(3);
var batterySoc = s.Battery.Soc.ToDisplayString(); var batterySoc = s.Battery.Devices.Any()? s.Battery.Devices.Average(b=>b.Soc).Percent().ToDisplayString() : "0";
var batteryCurrent = s.Battery.Dc.Current.ToDisplayString(); var batteryCurrent = s.Battery.Dc.Current.ToDisplayString();
var batteryTemp = s.Battery.Temperature.ToDisplayString(); var batteryTemp = s.Battery.Temperature.ToDisplayString();
var batteryHeatingCurrent = s.Battery.HeatingCurrent.ToDisplayString();
var anyBatteryAlarm = s.Battery.Alarms.Any();
var anyBatteryWarning = s.Battery.Warnings.Any();
var gridBusColumn = ColumnBox("Pv", "Grid Bus", "Load" , gridVoltageByPhase , gridLoadPower); var gridBusColumn = ColumnBox("Pv", "Grid Bus", "Load" , gridVoltageByPhase , gridLoadPower);
var islandBusColumn = ColumnBox("Pv", "Island Bus", "Load" , inverterPowerByPhase, islandLoadPower); var islandBusColumn = ColumnBox("Pv", "Island Bus", "Load" , inverterPowerByPhase, islandLoadPower);
@ -269,12 +280,15 @@ internal static class Program
var batteryAvgBox = TextBlock.AlignLeft(batteryVoltage, var batteryAvgBox = TextBlock.AlignLeft(batteryVoltage,
batterySoc, batterySoc,
batteryCurrent, batteryCurrent,
batteryTemp) batteryTemp,
batteryHeatingCurrent,
anyBatteryWarning,
anyBatteryAlarm)
.TitleBox("Battery"); .TitleBox("Battery");
//////////////////// Batteries ///////////////////////// //////////////////// Batteries /////////////////////////
IReadOnlyList<TextBlock> batteryBoxes = s.Battery IReadOnlyList<TextBlock> batteryBoxes = s.Battery
.Devices .Devices
.Select(CreateIndividualBattery) .Select(CreateIndividualBattery)
@ -303,13 +317,17 @@ internal static class Program
private static TextBlock CreateIndividualBattery(Battery48TlRecord battery, Int32 i) private static TextBlock CreateIndividualBattery(Battery48TlRecord battery, Int32 i)
{ {
var batteryWarnings = battery.Warnings.Any();
var batteryAlarms = battery.Alarms.Any();
var content = TextBlock.AlignLeft(battery.Dc.Voltage.ToDisplayString(), var content = TextBlock.AlignLeft(battery.Dc.Voltage.ToDisplayString(),
battery.Soc.ToDisplayString(), battery.Soc.ToDisplayString(),
battery.Dc.Current.ToDisplayString(), battery.Dc.Current.ToDisplayString(),
battery.Temperatures.Cells.Average.ToDisplayString(), battery.Temperatures.Cells.Average.ToDisplayString(),
battery.BusCurrent.ToDisplayString(), // battery.BusCurrent.ToDisplayString(),
battery.HeatingCurrent.ToDisplayString()); battery.HeatingCurrent.ToDisplayString(),
batteryWarnings,
batteryAlarms);
var box = content.TitleBox($"Battery {i + 1}"); var box = content.TitleBox($"Battery {i + 1}");