ModbusStructs.cin
Improved comments
This commit is contained in:
parent
eb6d28c71b
commit
f97e0c7481
1 changed files with 28 additions and 16 deletions
|
@ -1,27 +1,29 @@
|
|||
/*@!Encoding:1252*/
|
||||
variables
|
||||
{
|
||||
// according to Modbus Specification v1.1
|
||||
// Constant maximum values according to Modbus Specification v1.1
|
||||
const word gMaxBitsPerRead = 2000;
|
||||
const word gMaxRegsPerRead = 125;
|
||||
const word gMaxBitsPerWrite = 1968; // Multiple of 8!
|
||||
const word gMaxRegsPerWrite = 123;
|
||||
|
||||
// Function Codes according to Modbus Specification v1.1
|
||||
enum ModbusFuncCode
|
||||
{
|
||||
ReadBitsOut = 0x01,
|
||||
ReadBitsIn = 0x02,
|
||||
ReadRegistersOut = 0x03,
|
||||
ReadRegistersIn = 0x04,
|
||||
WriteBit = 0x05,
|
||||
WriteRegister = 0x06,
|
||||
WriteBits = 0x0F,
|
||||
WriteRegisters = 0x10,
|
||||
MaskRegister = 0x16,
|
||||
ReadWriteRegisters = 0x17
|
||||
ReadBitsOut = 0x01, // Read Coils
|
||||
ReadBitsIn = 0x02, // Read Discrete Inputs
|
||||
ReadRegistersOut = 0x03, // Read Holding Registers
|
||||
ReadRegistersIn = 0x04, // Read Input Registers
|
||||
WriteBit = 0x05, // Write Single Coil
|
||||
WriteRegister = 0x06, // Write Single Holding Register
|
||||
WriteBits = 0x0F, // Write Multiple Coils
|
||||
WriteRegisters = 0x10, // Write Multiple Holding Registers
|
||||
MaskRegister = 0x16, // Mask Write Holding Register
|
||||
ReadWriteRegisters = 0x17 // Read/Write Multiple Registers
|
||||
};
|
||||
|
||||
// A normal Modbus Application Header. Every Modbus Packet begins with these 7 (+FuncCode) Bytes
|
||||
// Modbus Application Header
|
||||
// Every Modbus Packet begins with these 7 (+FuncCode) Bytes
|
||||
_align(1) struct ModbusApHeader
|
||||
{
|
||||
word TxID;
|
||||
|
@ -30,6 +32,8 @@ variables
|
|||
byte UnitID;
|
||||
byte FuncCode;
|
||||
};
|
||||
|
||||
/// Request structures following
|
||||
// Read Data from the host. We only need the start address and the number of bits/registers we want to read
|
||||
_align(1) struct ModbusReqRead
|
||||
{
|
||||
|
@ -83,6 +87,7 @@ variables
|
|||
};
|
||||
|
||||
|
||||
/// Response structures following
|
||||
// Receive several bit values
|
||||
_align(1) struct ModbusResReceiveBits
|
||||
{
|
||||
|
@ -120,16 +125,21 @@ variables
|
|||
word Or;
|
||||
};
|
||||
|
||||
// The maximum modbus telegram size.
|
||||
// Several telegrams use this many bytes, but CAPL does not support a constant max function to let it calculate it. So we use ModbusResReceiveRegisters
|
||||
const word gModbusMaxTelegramSize = __size_of(struct ModbusResReceiveRegisters);
|
||||
|
||||
|
||||
// Some errors that may occur when sending a request
|
||||
enum ModbusRequestError
|
||||
{
|
||||
Exception,
|
||||
Timeout,
|
||||
FinalTimeout,
|
||||
NotSent
|
||||
Exception, // Modbus exception was returned
|
||||
Timeout, // Timeout occured, resending the packet
|
||||
FinalTimeout, // Timeout occured, not resending the packet
|
||||
NotSent // Sending the packet was impossible
|
||||
};
|
||||
|
||||
// Modbus exception codes according to Modbus Specification v1.1
|
||||
enum ModbusException
|
||||
{
|
||||
None = 0x00,
|
||||
|
@ -142,6 +152,8 @@ variables
|
|||
GatewayPathsNA = 0x0A,
|
||||
TargetOffline = 0x0B
|
||||
};
|
||||
|
||||
// Fatal errors that may stop the code execution
|
||||
enum FatalErrors
|
||||
{
|
||||
ParsingBuffer,
|
||||
|
|
Loading…
Reference in a new issue