Create Individual Battery
This commit is contained in:
parent
5dfd8e69b4
commit
8fc2b8fe9d
|
@ -36,20 +36,23 @@ internal static class Program
|
|||
private static readonly Byte[] BatteryNodes = { 2, 3, 4, 5, 6 };
|
||||
private const String BatteryTty = "/dev/ttyUSB0";
|
||||
|
||||
#if DEBUG
|
||||
private static readonly TcpChannel TruConvertAcChannel = new TcpChannel("localhost", 5001);
|
||||
private static readonly TcpChannel TruConvertDcChannel = new TcpChannel("localhost", 5002);
|
||||
private static readonly TcpChannel GridMeterChannel = new TcpChannel("localhost", 5003);
|
||||
private static readonly TcpChannel AcOutLoadChannel = new TcpChannel("localhost", 5004);
|
||||
private static readonly TcpChannel AmptChannel = new TcpChannel("localhost", 5005);
|
||||
private static readonly TcpChannel RelaysChannel = new TcpChannel("localhost", 5006);
|
||||
private static readonly TcpChannel BatteriesChannel = new TcpChannel("localhost", 5007);
|
||||
#else
|
||||
private static readonly TcpChannel RelaysChannel = new TcpChannel("10.0.1.1", 502); // "192.168.1.242";
|
||||
private static readonly TcpChannel TruConvertAcChannel = new TcpChannel("10.0.2.1", 502); // "192.168.1.2";
|
||||
private static readonly TcpChannel TruConvertDcChannel = new TcpChannel("10.0.3.1", 502); // "192.168.1.3";
|
||||
private static readonly TcpChannel GridMeterChannel = new TcpChannel("10.0.4.1", 502); // "192.168.1.241";
|
||||
private static readonly TcpChannel AcOutLoadChannel = new TcpChannel("10.0.4.2", 502); // "192.168.1.241";
|
||||
private static readonly TcpChannel AmptChannel = new TcpChannel("10.0.5.1", 502); // "192.168.1.249";
|
||||
|
||||
//private static readonly TcpChannel TruConvertAcChannel = new TcpChannel("localhost", 5001);
|
||||
//private static readonly TcpChannel TruConvertDcChannel = new TcpChannel("localhost", 5002);
|
||||
//private static readonly TcpChannel GridMeterChannel = new TcpChannel("localhost", 5003);
|
||||
//private static readonly TcpChannel AcOutLoadChannel = new TcpChannel("localhost", 5004);
|
||||
//private static readonly TcpChannel AmptChannel = new TcpChannel("localhost", 5005);
|
||||
//private static readonly TcpChannel RelaysChannel = new TcpChannel("localhost", 5006);
|
||||
//private static readonly TcpChannel BatteriesChannel = new TcpChannel("localhost", 5007);
|
||||
private static readonly TcpChannel BatteriesChannel = new TcpChannel("localhost", 5007);
|
||||
#endif
|
||||
|
||||
|
||||
private static readonly S3Config S3Config = new S3Config
|
||||
|
@ -165,7 +168,6 @@ internal static class Program
|
|||
|
||||
|
||||
Console.WriteLine("press ctrl-C to stop");
|
||||
|
||||
while (true)
|
||||
{
|
||||
sd_notify(0, "WATCHDOG=1");
|
||||
|
@ -180,16 +182,7 @@ internal static class Program
|
|||
|
||||
if (record.Relays is not null)
|
||||
record.Relays.ToCsv().WriteLine();
|
||||
|
||||
|
||||
var emuMeterRegisters = record.GridMeter;
|
||||
if (emuMeterRegisters is not null)
|
||||
{
|
||||
emuMeterRegisters.Ac.Power.Active.WriteLine("Grid Active");
|
||||
//emuMeterRegisters.Ac.Power.Reactive.WriteLine("Grid Reactive");
|
||||
}
|
||||
|
||||
|
||||
|
||||
record.ControlConstants();
|
||||
|
||||
record.ControlSystemState();
|
||||
|
@ -272,12 +265,25 @@ internal static class Program
|
|||
var flowDcBusToDcDc = Flow.Horizontal(dcdcPower);
|
||||
var flowDcDcToBattery = Flow.Horizontal(dcBatteryPower);
|
||||
|
||||
var gridBox = TextBlock.AlignLeft(gridPowerByPhase).TitleBox("Grid");
|
||||
var inverterBox = TextBlock.AlignLeft(inverterPowerByAcDc).TitleBox("Inverter");
|
||||
var dcDcBox = TextBlock.AlignLeft(dc48Voltage).TitleBox("DC/DC");
|
||||
var batteryBox = TextBlock.AlignLeft(batteryVoltage.ToDisplayString(), batterySoc.ToDisplayString(), batteryCurrent.ToDisplayString(), batteryTemp.ToDisplayString()).TitleBox("Battery");
|
||||
var gridBox = TextBlock.AlignLeft(gridPowerByPhase).TitleBox("Grid");
|
||||
var inverterBox = TextBlock.AlignLeft(inverterPowerByAcDc).TitleBox("Inverter");
|
||||
var dcDcBox = TextBlock.AlignLeft(dc48Voltage).TitleBox("DC/DC");
|
||||
var batteryAvgBox = TextBlock.AlignLeft(batteryVoltage.ToDisplayString(),
|
||||
batterySoc.ToDisplayString(),
|
||||
batteryCurrent.ToDisplayString(),
|
||||
batteryTemp.ToDisplayString())
|
||||
.TitleBox("Battery");
|
||||
|
||||
|
||||
//////////////////// Batteries /////////////////////////
|
||||
|
||||
IReadOnlyList<TextBlock> batteryBoxes = s.Battery
|
||||
.Devices
|
||||
.Select(CreateIndividualBattery)
|
||||
.ToArray(s.Battery.Devices.Count);
|
||||
|
||||
var individualBatteries = TextBlock.AlignLeft(batteryBoxes);
|
||||
|
||||
|
||||
var totalBoxes = TextBlock.CenterVertical(gridBox,
|
||||
gridBusFlow,
|
||||
|
@ -291,11 +297,25 @@ internal static class Program
|
|||
flowDcBusToDcDc,
|
||||
dcDcBox,
|
||||
flowDcDcToBattery,
|
||||
batteryBox);
|
||||
|
||||
batteryAvgBox,
|
||||
individualBatteries);
|
||||
totalBoxes.WriteLine();
|
||||
}
|
||||
|
||||
private static TextBlock CreateIndividualBattery(Battery48TlRecord battery, Int32 i)
|
||||
{
|
||||
var content = TextBlock.AlignLeft(battery.Dc.Voltage.ToDisplayString(),
|
||||
battery.Soc.ToDisplayString(),
|
||||
battery.Dc.Current.ToDisplayString(),
|
||||
battery.Temperatures.Heating);
|
||||
|
||||
var box = content.TitleBox($"Battery {i + 1}");
|
||||
|
||||
var flow = Flow.Horizontal(battery.Dc.Power);
|
||||
|
||||
return TextBlock.CenterVertical(flow, box);
|
||||
}
|
||||
|
||||
private static TextBlock ColumnBox(String pvTitle, String busTitle, String loadTitle, TextBlock dataBox)
|
||||
{
|
||||
return ColumnBox(pvTitle, busTitle, loadTitle, dataBox, 0);
|
||||
|
|
Loading…
Reference in New Issue