This package contains all basic tools to build your own clients.
IModbusConnection
This is the interface used on the base client to communicate with the remote device.
If you want to use a custom connection type, you should implement this interface yourself.
The IModbusConnection
is responsible to open and close the data channel in the background.
IModbusProtocol
If you want to speak a custom type of protocol with the clients, you can implement this interface.
ModbusBaseClient
This abstract base client contains all the basic methods and handlings required to communicate via Modbus Protocol.
The packages AMWD.Protocols.Modbus.Serial
and AMWD.Protocols.Modbus.Tcp
have specific derived implementations to match the communication types.
Here you have all typed enumerables defined by the Modbus Protocol.
- Error code
- Function code
- Device Identification Category (Basic, Regular, Extended, Individual)
- Device Identification Object
- ModbusObjectType (only needed when using the abstract base type
ModbusObject
instead ofCoil
, etc.)
To convert the Modbus specific types to usable values and vice-versa, there are some extensions.
- Decimal extensions for
float
(single) anddouble
- Signed extensions for signed integer values as
sbyte
,short
(int16),int
(int32) andlong
(int64) - Unsigned extensions for unsigned integer values as
byte
,ushort
(uint16),uint
(uint32) andulong
(uint64) - Some other extensions for
string
andbool
The different types handled by the Modbus Protocol.
- Coil
- Discrete Input
- Holding Register
- Input Register
In addition, you'll find the DeviceIdentification
there.
It is used for a "special" function called Read Device Identification (0x2B / 43), not supported on all devices.
The ModbusDevice
is used for the server implementations in the derived packages.
Here you have the specific default implementations for the Modbus Protocol.
- ASCII
- RTU
- TCP
- RTU over TCP
NOTE:
The implementations over serial line (RTU and ASCII) have a minimum unit ID of one (1) and maximum unit ID of 247 referring to the specification.
This validation is not implemented here due to real world experience, that some manufactures don't care about it.
Published under MIT License (see tl;drLegal)