using NModbus; using System.Net.Sockets; namespace TestApp { internal class Program { private static EnergyManager _EnergyManager; static async Task Main(string[] args) { _EnergyManager = await EnergyManager.Create(); while (true) { try { ConnectToModBus(); } catch (Exception ex) { Console.WriteLine($"Error connecting to ModBus slave: {ex.Message}"); Thread.Sleep(5000); } } } private static void ConnectToModBus() { var factory = new ModbusFactory(); var tcpClient = new TcpClient("192.168.188.21", 502); var master = factory.CreateMaster(tcpClient); Console.WriteLine("ModBus TCP Connection established!"); while (tcpClient.Connected) { try { var currentWirkleistung = _EnergyManager.ActivePowerPositive; ushort input = master.ReadHoldingRegisters(1, 1000, 1)[0]; ushort output = (ushort)(input + currentWirkleistung); master.WriteMultipleRegisters(1, 1100, new ushort[] { output }); Thread.Sleep(100); } catch (Exception e) { Console.WriteLine($"Error updating ModBus registers: {e.Message}"); Thread.Sleep(1000); } } } } }