From 97055b174934e4f83c9813a171d55eb188595e47 Mon Sep 17 00:00:00 2001 From: atef Date: Fri, 10 Apr 2026 15:25:11 +0200 Subject: [PATCH] Update Modbus tcp creation file and cleane the program.cs code --- csharp/App/GrowattCommunication/Program.cs | 59 ++++++++-------------- 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/csharp/App/GrowattCommunication/Program.cs b/csharp/App/GrowattCommunication/Program.cs index 78461c1c9..01de544a2 100644 --- a/csharp/App/GrowattCommunication/Program.cs +++ b/csharp/App/GrowattCommunication/Program.cs @@ -32,7 +32,7 @@ namespace InnovEnergy.App.GrowattCommunication; public static class Program { - private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(6); + private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(10); private const UInt16 NbrOfFileToConcatenate = 15; // add this to config file private static UInt16 _fileCounter = 0; // @@ -165,6 +165,10 @@ public static class Program statusrecord.InverterRecord.BatteryOperatingMode.WriteLine(" = BatteryOperatingMode"); statusrecord.InverterRecord.OperatingMode.WriteLine(" = OperatingPriority"); // 30408 this the duration + statusrecord.InverterRecord.ExportLimitationEnabled.WriteLine(" = ExportLimitationEnabled"); + statusrecord.InverterRecord.ExportLimitationPowerRate.WriteLine(" = ExportLimitationPowerRate"); // 30408 this the duration + + statusrecord.InverterRecord.FaultMainCode.WriteLine(" = FaultMainCode"); // 30408 this the duration statusrecord.InverterRecord.FaultSubCode.WriteLine(" = FaultSubCode"); // 30408 this the duration statusrecord.InverterRecord.WarningMainCode.WriteLine(" = WarningMainCode"); // 30408 this the duration @@ -352,12 +356,7 @@ public static class Program var stateChanged = currentSalimaxState.Status != _prevSodiohomeAlarmState; var contentChanged = HasErrorsOrWarningsChanged(currentSalimaxState); var needsHeartbeat = (DateTime.Now - _lastHeartbeatTime).TotalSeconds >= HeartbeatIntervalSeconds; - Console.WriteLine($"subscribedNow={subscribedNow}"); - Console.WriteLine($"_subscribedToQueue={_subscribedToQueue}"); - Console.WriteLine($"stateChanged={stateChanged}"); - Console.WriteLine($"contentChanged={contentChanged}"); - Console.WriteLine($"needsHeartbeat={needsHeartbeat}"); - Console.WriteLine($"s3Bucket null? {s3Bucket == null}"); + if (s3Bucket == null) { @@ -423,7 +422,7 @@ public static class Program st.InverterRecord.EnableEmsCommunicationFailureTime = false; st.InverterRecord.EnableCommand = true; st.InverterRecord.ControlPermission = st.Config.ControlPermission;; - st.InverterRecord.MaxSoc = 100; //st.Config.MaxSoc; + // st.InverterRecord.MaxSoc = 100; //st.Config.MaxSoc; } private static Dictionary ConvertToModbusRegisters(Object value, String outputType, @@ -488,12 +487,10 @@ public static class Program var modbusData = new Dictionary(); // SYSTEM DATA - var result1 = - ConvertToModbusRegisters((status.Config.ModbusProtcolNumber * 10), "UInt16", - 30001); // this to be updated to modbusTCP version + var result1 = ConvertToModbusRegisters((status.Config.ModbusProtcolNumber * 10), "UInt16", 30001); // this to be updated to modbusTCP version var result2 = ConvertToModbusRegisters(status.InverterRecord.SystemDateTime.ToUnixTime(), "UInt32", 30002); - var result3 = ConvertToModbusRegisters(status.InverterRecord.SystemOperatingMode, "UInt16", 30004); - var result17 = ConvertToModbusRegisters(status.InverterRecord.OperatingMode, "UInt16", 30005); + //var result3 = ConvertToModbusRegisters(status.InverterRecord.SystemOperatingMode, "UInt16", 30005); + var result17 = ConvertToModbusRegisters(status.InverterRecord.OperatingMode, "UInt16", 30004); // BATTERY SUMMARY (assuming single battery [0]) // this to be improved @@ -505,24 +502,29 @@ public static class Program var result5 = ConvertToModbusRegisters((status.InverterRecord.Battery1Power.Value * 10), "Int32", 31006); var result7 = ConvertToModbusRegisters((status.InverterRecord.MinSoc * 100), "UInt16", 31008); - var result20 = ConvertToModbusRegisters((status.InverterRecord.ChargeCutoffSocVoltage * 100), "UInt16", 31009); - var result15 = - ConvertToModbusRegisters((status.InverterRecord.Battery1Soh * 100), "UInt16", 310010); + var result20 = ConvertToModbusRegisters((status.InverterRecord.MaxSoc * 100), "UInt16", 31009); + var result15 = ConvertToModbusRegisters((status.InverterRecord.Battery1Soh * 100), "UInt16", 31010); var result16 = ConvertToModbusRegisters((status.InverterRecord.Battery1AmbientTemperature.Value * 100), "UInt16", 31011); var result21 = ConvertToModbusRegisters((status.InverterRecord.BatteryMaxChargingCurrent * 10), "UInt16", 31012); var result22 = ConvertToModbusRegisters((status.InverterRecord.BatteryMaxDischargingCurrent * 10), "UInt16", 31013); - var result23 = ConvertToModbusRegisters((status.InverterRecord.MaxSoc * 10), "UInt16", 31014); - + + var result23 = ConvertToModbusRegisters((status.InverterRecord.ChargeCutoffSocVoltage * 10), "UInt16", 31014); var result18 = ConvertToModbusRegisters((status.InverterRecord.PvPower.Value * 10), "UInt32", 32000); var result19 = ConvertToModbusRegisters((status.InverterRecord.GridPower * 10), "Int32", 33000); + var result3 = ConvertToModbusRegisters((status.InverterRecord.Frequency * 10), "Int32", 33002); - + var result24 = ConvertToModbusRegisters((status.InverterRecord.OperatingMode ), "UInt16", 34000); + var result25 = ConvertToModbusRegisters((status.InverterRecord.InverterActivePower * 10), "Int32", 34001); + var result26 = ConvertToModbusRegisters((status.Config.GridSetPoint * 10), "Int32", 35000); + var result27 = ConvertToModbusRegisters((status.InverterRecord.ExportLimitationEnabled * 10), "Int32", 35002); + var result28 = ConvertToModbusRegisters((status.InverterRecord.ExportLimitationPowerRate * 10), "Int32", 35003); + // Merge all results into one dictionary var allResults = new[] { result1, result2, result3, result17, result4, result5, result7, result8, result12, result13, result14, result15, result16, result18, result19, result20, - result21, result22, result23 + result21, result22, result23, result24, result25, result26, result27, result28, }; foreach (var result in allResults) @@ -717,24 +719,7 @@ public static class Program return true; } - /* private static void Heartbit() - { - var s3Bucket = Config.Load().S3?.Bucket; - var tryParse = int.TryParse(s3Bucket?.Split("-")[0], out var installationId); - if (tryParse) - { - var returnedStatus = new StatusMessage - { - InstallationId = installationId, - Product = 2, - Status = _sodiohomeAlarmState, - Type = MessageType.Heartbit, - }; - if (s3Bucket != null) - RabbitMqManager.InformMiddleware(returnedStatus); - } - }*/ private static async Task SaveToLocalCompressedFallback(Byte[] compressedData, String fileNameWithoutExtension) {