namespace Modbus { /// /// Defines constants related to the Modbus protocol. /// internal static class Modbus { // supported function codes public const byte ReadCoils = 1; public const byte ReadInputs = 2; public const byte ReadHoldingRegisters = 3; public const byte ReadInputRegisters = 4; public const byte WriteSingleCoil = 5; public const byte WriteSingleRegister = 6; public const byte Diagnostics = 8; public const ushort DiagnosticsReturnQueryData = 0; public const byte WriteMultipleCoils = 15; public const byte WriteMultipleRegisters = 16; public const byte ReadWriteMultipleRegisters = 23; public const int MaximumDiscreteRequestResponseSize = 2040; public const int MaximumRegisterRequestResponseSize = 127; // modbus slave exception offset that is added to the function code, to flag an exception public const byte ExceptionOffset = 128; // modbus slave exception codes public const byte Acknowledge = 5; public const byte SlaveDeviceBusy = 6; // default setting for number of retries for IO operations public const int DefaultRetries = 3; // default number of milliseconds to wait after encountering an ACKNOWLEGE or SLAVE DEVIC BUSY slave exception response. public const int DefaultWaitToRetryMilliseconds = 250; // default setting for IO timeouts in milliseconds public const int DefaultTimeout = 1000; // smallest supported message frame size (sans checksum) public const int MinimumFrameSize = 2; public const ushort CoilOn = 0xFF00; public const ushort CoilOff = 0x0000; // IP slaves should be addressed by IP public const byte DefaultIpSlaveUnitId = 0; // An existing connection was forcibly closed by the remote host public const int ConnectionResetByPeer = 10054; // Existing socket connection is being closed public const int WSACancelBlockingCall = 10004; // used by the ASCII tranport to indicate end of message public const string NewLine = "\r\n"; } }