diff --git a/csharp/App/SaliMax/src/SaliMaxRelays/CombinedAdamRelaysRecord.cs b/csharp/App/SaliMax/src/SaliMaxRelays/CombinedAdamRelaysRecord.cs index 23f777169..d8466af49 100644 --- a/csharp/App/SaliMax/src/SaliMaxRelays/CombinedAdamRelaysRecord.cs +++ b/csharp/App/SaliMax/src/SaliMaxRelays/CombinedAdamRelaysRecord.cs @@ -31,6 +31,8 @@ public class CombinedAdamRelaysRecord : IRelaysRecord set => _recordAdam6360D.K2ConnectIslandBusToGridBus = value; } + public Boolean OldK2ConnectIslandBusToGridBus { get; set; } + public Boolean Inverter1WagoStatus => _recordAdam6360D.Inverter1WagoStatus; public Boolean Inverter2WagoStatus => _recordAdam6360D.Inverter2WagoStatus; public Boolean Inverter3WagoStatus => _recordAdam6360D.Inverter3WagoStatus; diff --git a/csharp/Lib/Devices/Amax5070/Amax5070Registers.cs b/csharp/Lib/Devices/Amax5070/Amax5070Registers.cs index ca79babe0..63bbaafa4 100644 --- a/csharp/Lib/Devices/Amax5070/Amax5070Registers.cs +++ b/csharp/Lib/Devices/Amax5070/Amax5070Registers.cs @@ -32,8 +32,8 @@ namespace InnovEnergy.Lib.Devices.Amax5070 [Coil(25)] public Boolean Relay20 { get; set; } // Relay5060 2 [Coil(26)] public Boolean Relay21 { get; set; } // Relay5060 2 - [Coil(27)] public Boolean Relay22 { get; set; } // Relay5060 2 - [Coil(28)] public Boolean Relay23 { get; set; } // Relay5060 2 + [Coil(27, writable: true)] public Boolean Relay22 { get; set; } + [Coil(28)] public Boolean Relay23 { get; set; } [Coil(33)] public Boolean Relay30 { get; set; } // Relay5060 3 [Coil(34)] public Boolean Relay31 { get; set; } // Relay5060 3 diff --git a/csharp/Lib/Protocols/Modbus/Channels/Channel.cs b/csharp/Lib/Protocols/Modbus/Channels/Channel.cs index 676025c16..b229a3c35 100644 --- a/csharp/Lib/Protocols/Modbus/Channels/Channel.cs +++ b/csharp/Lib/Protocols/Modbus/Channels/Channel.cs @@ -15,5 +15,6 @@ namespace InnovEnergy.Lib.Protocols.Modbus.Channels { public abstract IReadOnlyList Read(int nBytes); public abstract void Write(IReadOnlyList bytes); + public virtual void ClearBuffers() { } } } diff --git a/csharp/Lib/Protocols/Modbus/Reflection/Attributes/Coil.cs b/csharp/Lib/Protocols/Modbus/Reflection/Attributes/Coil.cs index 1a73e8142..df30304b8 100644 --- a/csharp/Lib/Protocols/Modbus/Reflection/Attributes/Coil.cs +++ b/csharp/Lib/Protocols/Modbus/Reflection/Attributes/Coil.cs @@ -4,7 +4,11 @@ namespace InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes; public class Coil : ModbusBoolean { - public Coil(UInt16 address) : base(address, ModbusKind.Coil) + public bool Writable { get; } + + public Coil(ushort address, bool writable = true) + : base(address, ModbusKind.Coil) { + Writable = writable; } } \ No newline at end of file diff --git a/csharp/Lib/Protocols/Modbus/Reflection/Batch.cs b/csharp/Lib/Protocols/Modbus/Reflection/Batch.cs index 7e7907c0b..dbaa1f75e 100644 --- a/csharp/Lib/Protocols/Modbus/Reflection/Batch.cs +++ b/csharp/Lib/Protocols/Modbus/Reflection/Batch.cs @@ -37,7 +37,7 @@ public static class Batches { if (CloseBatch(member)) { - //PrintBatchStart(batchMembers); + PrintBatchStart(batchMembers); yield return MakeBatch(mb, batchMembers); batchMembers = new List(); } @@ -47,7 +47,6 @@ public static class Batches if (batchMembers.Count > 0) { - //PrintBatchStart(batchMembers); yield return MakeBatch(mb, batchMembers); } @@ -74,8 +73,16 @@ public static class Batches : $"{first.StartAddress}-{last.EndAddress - 1}"; var writable = first.IsWritable ? "Writable" : "ReadOnly"; - Console.WriteLine($"๐Ÿ“ฆ New Batch: {first.Kind} [{range}] ({writable})"); + + foreach (var member in members) + { + if (member.Kind == ModbusKind.Coil) + { + Console.WriteLine($"๐Ÿ‘€ Coil: {member.StartAddress}, Name: {member.Member.Name}, Writable: {member.IsWritable}"); + } + } } + private static Batch MakeBatch(ModbusClient modbusClient, IReadOnlyList members) { @@ -86,7 +93,7 @@ public static class Batches //var isWritable = kind is ModbusKind.HoldingRegister or ModbusKind.Coil; var debugString = $"{kind}: {startAddress}" + (endAddress - 1 == startAddress ? "" : $"-{endAddress - 1}"); - var isWritable = members.Any(m => m.IsWritable); + var isWritable = kind == ModbusKind.Coil || members.Any(m => m.IsWritable); //foreach (var m in members) // Console.WriteLine($"๐Ÿงช Address {m.StartAddress} Writable: {m.IsWritable}");