diff --git a/csharp/App/DeligreenBatteryCommunication/Program.cs b/csharp/App/DeligreenBatteryCommunication/Program.cs index 469624ac4..1ca6610a2 100644 --- a/csharp/App/DeligreenBatteryCommunication/Program.cs +++ b/csharp/App/DeligreenBatteryCommunication/Program.cs @@ -1,4 +1,8 @@ -using InnovEnergy.Lib.Devices.BatteryDeligreen; +using System.Net; +using InnovEnergy.Lib.Devices.BatteryDeligreen; +using InnovEnergy.Lib.Protocols.Modbus.Channels; +using InnovEnergy.Lib.Utils; +using InnovEnergy.Lib.Utils.Net; namespace InnovEnergy.App.DeligreenBatteryCommunication; @@ -6,7 +10,7 @@ internal static class Program { private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(2); - // private static readonly Channel? BatteriesChannel; + private static Channel _relaysChannel; private const String Port = "/dev/ttyUSB0"; @@ -19,18 +23,21 @@ internal static class Program } - public static async Task Main(string[] args) + public static async Task Main(String[] args) { - var listOfBatteries = new List + var device1 = new SalimaxDevice { Host = "10.0.1.3" , Port = 502, DeviceState = DeviceState.Measured }; + + _relaysChannel = CreateChannel(device1); + + var saliMaxRelaysDevice = new RelaysDeviceAmax(_relaysChannel); + + /* var listOfBatteries = new List { new BatteryDeligreenDevice(Port, 0), - new BatteryDeligreenDevice(Port, 1), - new BatteryDeligreenDevice(Port, 2), - new BatteryDeligreenDevice(Port, 3), - new BatteryDeligreenDevice(Port, 4) + new BatteryDeligreenDevice(Port, 1) }; - var batteryDevices = new BatteryDeligreenDevices(listOfBatteries); + var batteryDevices = new BatteryDeligreenDevices(listOfBatteries);*/ Console.WriteLine("Starting Battery Communication"); @@ -40,21 +47,65 @@ internal static class Program { var startTime = DateTime.Now; Console.WriteLine("***************************** Reading Battery Data *********************************************"); - Console.WriteLine($"Start Reading all Batteries: {startTime}"); - var batteriesRecord = batteryDevices.Read(); + // Console.WriteLine($"Start Reading all Batteries: {startTime}"); + //var batteriesRecord = batteryDevices.Read(); var stopTime = DateTime.Now; - Console.WriteLine($"Finish Reading all Batteries: {stopTime}"); + //Console.WriteLine($"Finish Reading all Batteries: {stopTime}"); + var relays = saliMaxRelaysDevice.Read(); + + Console.WriteLine("***************************** Writing register 27 to true Amax *********************************************"); + + relays.K0 = true; + relays.K1 = true; + relays.R0 = true; + relays.R1 = true; + relays.R2 = true; + relays.R3 = true; + // relays.K0Input.WriteLine(" : K0input"); + saliMaxRelaysDevice.Write(relays); + + Console.WriteLine("***************************** Reading Amax *********************************************"); + + + // relays.K1GridBusIsConnectedToGrid.WriteLine(" : K1"); + + await Task.Delay(2000); + + Console.WriteLine("***************************** Writing register 27 to false Amax *********************************************"); + relays.K0 = false; + relays.K1 = false; + relays.R0 = false; + relays.R1 = false; + relays.R2 = false; + relays.R3 = false; + // relays.K0Input.WriteLine(" : K0input"); + + saliMaxRelaysDevice.Write(relays); + + Console.WriteLine("***************************** Reading Amax *********************************************"); + + + /* + Console.WriteLine("Time used for reading all batteries:" + (stopTime - startTime)); - Console.WriteLine("Average SOC " + batteriesRecord?.Soc); - Console.WriteLine("SOC Battery 0 : " + batteriesRecord?.Devices[0].BatteryDeligreenDataRecord.Soc); - Console.WriteLine("SOC Battery 1 : " + batteriesRecord?.Devices[1].BatteryDeligreenDataRecord.Soc); - Console.WriteLine("SOC Battery 2 : " + batteriesRecord?.Devices[2].BatteryDeligreenDataRecord.Soc); - Console.WriteLine("SOC Battery 3 : " + batteriesRecord?.Devices[3].BatteryDeligreenDataRecord.Soc); - Console.WriteLine("SOC Battery 4 : " + batteriesRecord?.Devices[4].BatteryDeligreenDataRecord.Soc); - Console.WriteLine("Min Soc " + batteriesRecord?.CurrentMinSoc); - Console.WriteLine("count " + batteriesRecord?.Devices.Count); + Console.WriteLine("Average SOC " + batteriesRecord?.Soc); + Console.WriteLine("Cell Alarm 1 : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.CellAlarmList[0]); + Console.WriteLine("Cell Alarm 2 : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.CellAlarmList[1]); + + Console.WriteLine("Cell Temperature Alarm 1 : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.CellTemperatureAlarm[0]); + Console.WriteLine("Cell Temperature Alarm 2 : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.CellTemperatureAlarm[1]); + + Console.WriteLine("Battery 1 EnviTemp Alarm: " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.EnviTempAlarm); + Console.WriteLine("Battery 1 Current Alarm : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.CurrentAlarm); + + Console.WriteLine("Battery 2 EnviTemp Alarm: " + batteriesRecord?.Devices[1].BatteryDeligreenAlarmRecord.EnviTempAlarm); + Console.WriteLine("Battery 2 Current Alarm : " + batteriesRecord?.Devices[1].BatteryDeligreenAlarmRecord.CurrentAlarm); + + Console.WriteLine("TotalVoltage Alarm : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.TotalVoltageAlarm); + Console.WriteLine("PowerTemp Alarm : " + batteriesRecord?.Devices[0].BatteryDeligreenAlarmRecord.PowerTempAlarm);*/ + // Wait for 2 seconds before the next reading await Task.Delay(2000); // Delay in milliseconds (2000ms = 2 seconds) @@ -66,6 +117,8 @@ internal static class Program await Task.Delay(2000); // Delay in milliseconds (2000ms = 2 seconds) } } + + Channel CreateChannel(SalimaxDevice device) => new TcpChannel(device); } } \ No newline at end of file