Innovenergy_trunk/csharp/Lib/Protocols/Modbus/Clients/ModbusClient.cs

35 lines
1.5 KiB
C#
Raw Normal View History

2023-02-16 12:57:06 +00:00
using InnovEnergy.Lib.Protocols.Modbus.Connections;
namespace InnovEnergy.Lib.Protocols.Modbus.Clients;
using Booleans = IReadOnlyList<Boolean>;
using UInt16s = IReadOnlyList<UInt16>;
2023-02-16 12:57:06 +00:00
// TODO: ModbusClient = Framer(TCP/RTU) + Connection(Serial/TCP) + Encoder(binary/ascii) + quirk(+1/0)
// Transport
public abstract class ModbusClient
{
internal ModbusConnection Connection { get; }
internal Byte SlaveId { get; }
2023-03-07 10:19:15 +00:00
2023-02-16 12:57:06 +00:00
// TODO: add additional functions: coils...
public abstract Booleans ReadCoils (UInt16 readAddress, UInt16 nValues);
public abstract Booleans ReadDiscreteInputs (UInt16 readAddress, UInt16 nValues);
public abstract UInt16s ReadInputRegisters (UInt16 readAddress, UInt16 nValues);
public abstract UInt16s ReadHoldingRegisters(UInt16 readAddress, UInt16 nValues);
public abstract UInt16 WriteCoils (UInt16 writeAddress, Booleans coils);
public abstract UInt16 WriteRegisters (UInt16 writeAddress, UInt16s values);
public abstract UInt16s ReadWriteRegisters (UInt16 readAddress,
UInt16 nbToRead,
UInt16 writeAddress,
UInt16s registersToWrite);
2023-02-16 12:57:06 +00:00
protected ModbusClient(ModbusConnection connection, Byte slaveId)
2023-02-16 12:57:06 +00:00
{
Connection = connection;
SlaveId = slaveId;
2023-02-16 12:57:06 +00:00
}
}