Implementation of the basic functionallity

This commit is contained in:
2024-02-06 19:47:06 +01:00
parent a6c7828fbe
commit f31f6f94ff
42 changed files with 6875 additions and 11 deletions

View File

@@ -0,0 +1,76 @@
using System.ComponentModel;
namespace AMWD.Protocols.Modbus.Common
{
/// <summary>
/// List of Modbus exception codes.
/// </summary>
public enum ModbusErrorCode : byte
{
/// <summary>
/// No error.
/// </summary>
[Description("No error")]
NoError = 0x00,
/// <summary>
/// Function code not valid/supported.
/// </summary>
[Description("Illegal function")]
IllegalFunction = 0x01,
/// <summary>
/// Data address not in range.
/// </summary>
[Description("Illegal data address")]
IllegalDataAddress = 0x02,
/// <summary>
/// The data value to set is not valid.
/// </summary>
[Description("Illegal data value")]
IllegalDataValue = 0x03,
/// <summary>
/// Slave device produced a failure.
/// </summary>
[Description("Slave device failure")]
SlaveDeviceFailure = 0x04,
/// <summary>
/// Ack
/// </summary>
[Description("Acknowledge")]
Acknowledge = 0x05,
/// <summary>
/// Slave device is working on another task.
/// </summary>
[Description("Slave device busy")]
SlaveDeviceBusy = 0x06,
/// <summary>
/// nAck
/// </summary>
[Description("Negative acknowledge")]
NegativeAcknowledge = 0x07,
/// <summary>
/// Momory Parity Error.
/// </summary>
[Description("Memory parity error")]
MemoryParityError = 0x08,
/// <summary>
/// Gateway of the device could not be reached.
/// </summary>
[Description("Gateway path unavailable")]
GatewayPath = 0x0A,
/// <summary>
/// Gateway device did no respond.
/// </summary>
[Description("Gateway target device failed to respond")]
GatewayTargetDevice = 0x0B
}
}

View File

@@ -0,0 +1,67 @@
using System.ComponentModel;
namespace AMWD.Protocols.Modbus.Common
{
/// <summary>
/// List of the Modbus function codes.
/// </summary>
public enum ModbusFunctionCode : byte
{
/// <summary>
/// Read coils (Fn 1).
/// </summary>
[Description("Read Coils")]
ReadCoils = 0x01,
/// <summary>
/// Read discrete inputs (Fn 2).
/// </summary>
[Description("Read Discrete Inputs")]
ReadDiscreteInputs = 0x02,
/// <summary>
/// Reads holding registers (Fn 3).
/// </summary>
[Description("Read Holding Registers")]
ReadHoldingRegisters = 0x03,
/// <summary>
/// Reads input registers (Fn 4).
/// </summary>
[Description("Read Input Registers")]
ReadInputRegisters = 0x04,
/// <summary>
/// Writes a single coil (Fn 5).
/// </summary>
[Description("Write Single Coil")]
WriteSingleCoil = 0x05,
/// <summary>
/// Writes a single register (Fn 6).
/// </summary>
[Description("Write Single Register")]
WriteSingleRegister = 0x06,
/// <summary>
/// Writes multiple coils (Fn 15).
/// </summary>
[Description("Write Multiple Coils")]
WriteMultipleCoils = 0x0F,
/// <summary>
/// Writes multiple registers (Fn 16).
/// </summary>
[Description("Write Multiple Registers")]
WriteMultipleRegisters = 0x10,
/// <summary>
/// Tunnels service requests and method invocations (Fn 43).
/// </summary>
/// <remarks>
/// This function code needs additional information about its type of request.
/// </remarks>
[Description("MODBUS Encapsulated Interface (MEI)")]
EncapsulatedInterface = 0x2B
}
}

View File

@@ -0,0 +1,28 @@
namespace AMWD.Protocols.Modbus.Common
{
/// <summary>
/// List of specific types.
/// </summary>
public enum ModbusObjectType
{
/// <summary>
/// The discrete value is a coil (read/write).
/// </summary>
Coil = 1,
/// <summary>
/// The discrete value is an input (read only).
/// </summary>
DiscreteInput = 2,
/// <summary>
/// The value is a holding register (read/write).
/// </summary>
HoldingRegister = 3,
/// <summary>
/// The value is an input register (read only).
/// </summary>
InputRegister = 4
}
}