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()
{
Console.WriteLine(" Reading AcDC");
var acDc = acDcDevices.Read();
Console.WriteLine(" Reading dcDc");
var dcDc = dcDcDevices.Read();
Console.WriteLine(" Reading battery");
var battery = batteryDevices.Read();
Console.WriteLine(" Reading relays");
var relays = saliMaxRelaysDevice.Read();
Console.WriteLine(" loadOnAcIsland");
var loadOnAcIsland = acIslandLoadMeter.Read();
Console.WriteLine(" Reading gridMeter");
var gridMeter = gridMeterDevice.Read();
Console.WriteLine(" Reading pvOnDc");
var pvOnDc = amptDevice.Read();
var pvOnAcGrid = AcPowerDevice.Null;
@ -241,17 +254,15 @@ internal static class Program
var dcLinkVoltage = TextBlock.AlignCenterHorizontal("",
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 batteryVoltage = s.Battery.Dc.Voltage.ToDisplayString();
var batterySoc = s.Battery.Soc.ToDisplayString();
var batteryVoltage = s.Battery.Dc.Voltage.Value.RoundToSignificantDigits(3);
var batterySoc = s.Battery.Devices.Any()? s.Battery.Devices.Average(b=>b.Soc).Percent().ToDisplayString() : "0";
var batteryCurrent = s.Battery.Dc.Current.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 islandBusColumn = ColumnBox("Pv", "Island Bus", "Load" , inverterPowerByPhase, islandLoadPower);
@ -269,12 +280,15 @@ internal static class Program
var batteryAvgBox = TextBlock.AlignLeft(batteryVoltage,
batterySoc,
batteryCurrent,
batteryTemp)
batteryTemp,
batteryHeatingCurrent,
anyBatteryWarning,
anyBatteryAlarm)
.TitleBox("Battery");
//////////////////// Batteries /////////////////////////
IReadOnlyList<TextBlock> batteryBoxes = s.Battery
.Devices
.Select(CreateIndividualBattery)
@ -303,13 +317,17 @@ internal static class Program
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(),
battery.Soc.ToDisplayString(),
battery.Dc.Current.ToDisplayString(),
battery.Temperatures.Cells.Average.ToDisplayString(),
battery.BusCurrent.ToDisplayString(),
battery.HeatingCurrent.ToDisplayString());
// battery.BusCurrent.ToDisplayString(),
battery.HeatingCurrent.ToDisplayString(),
batteryWarnings,
batteryAlarms);
var box = content.TitleBox($"Battery {i + 1}");