CuteHMI - Modbus (CuteHMI.Modbus.2)
cutehmi::modbus::AbstractDevice Class Referenceabstract

Abstract Modbus device. More...

#include <cutehmi/modbus/AbstractDevice.hpp>

Inheritance diagram for cutehmi::modbus::AbstractDevice:
QObject cutehmi::services::Serviceable cutehmi::modbus::AbstractClient CuteHMI::Modbus::AbstractDevice cutehmi::modbus::AbstractServer CuteHMI::Modbus::AbstractClient cutehmi::modbus::DummyClient cutehmi::modbus::RTUClient cutehmi::modbus::TCPClient CuteHMI::Modbus::AbstractServer cutehmi::modbus::RTUServer cutehmi::modbus::TCPServer CuteHMI::Modbus::DummyClient CuteHMI::Modbus::RTUClient CuteHMI::Modbus::TCPClient CuteHMI::Modbus::RTUServer CuteHMI::Modbus::TCPServer

Public Types

enum  State { OPENING, OPENED, CLOSING, CLOSED }
 
enum  Function {
  FUNCTION_INVALID = QModbusPdu::Invalid, FUNCTION_READ_COILS = QModbusPdu::ReadCoils, FUNCTION_READ_DISCRETE_INPUTS = QModbusPdu::ReadDiscreteInputs, FUNCTION_READ_HOLDING_REGISTERS = QModbusPdu::ReadHoldingRegisters,
  FUNCTION_READ_INPUT_REGISTERS = QModbusPdu::ReadInputRegisters, FUNCTION_WRITE_COIL = QModbusPdu::WriteSingleCoil, FUNCTION_WRITE_HOLDING_REGISTER = QModbusPdu::WriteSingleRegister, FUNCTION_READ_EXCEPTION_STATUS = QModbusPdu::ReadExceptionStatus,
  FUNCTION_DIAGNOSTICS = QModbusPdu::Diagnostics, FUNCTION_FETCH_COMM_EVENT_COUNTER = QModbusPdu::GetCommEventCounter, FUNCTION_FETCH_COMM_EVENT_LOG = QModbusPdu::GetCommEventLog, FUNCTION_WRITE_MULTIPLE_COILS = QModbusPdu::WriteMultipleCoils,
  FUNCTION_WRITE_MULTIPLE_HOLDING_REGISTERS = QModbusPdu::WriteMultipleRegisters, FUNCTION_REPORT_SLAVE_ID = QModbusPdu::ReportServerId, FUNCTION_READ_FILE_RECORD = QModbusPdu::ReadFileRecord, FUNCTION_WRITE_FILE_RECORD = QModbusPdu::WriteFileRecord,
  FUNCTION_MASK_WRITE_HOLDING_REGISTER = QModbusPdu::MaskWriteRegister, FUNCTION_READ_WRITE_MULTIPLE_HOLDING_REGISTERS = QModbusPdu::ReadWriteMultipleRegisters, FUNCTION_READ_FIFO_QUEUE = QModbusPdu::ReadFifoQueue, FUNCTION_UNDEFINED = QModbusPdu::UndefinedFunctionCode,
  FUNCTION_WRITE_DISCRETE_INPUT, FUNCTION_WRITE_MULTIPLE_DISCRETE_INPUTS, FUNCTION_WRITE_INPUT_REGISTER, FUNCTION_WRITE_MULTIPLE_INPUT_REGISTERS,
  FUNCTION_RAW
}
 
enum  DiagnosticsSubfunction : quint16 {
  DIAGNOSTICS_RETURN_QUERY_DATA = 0x00, DIAGNOSTICS_RESTART_COMM_OPTION = 0x01, DIAGNOSTICS_RETURN_DIAGNOSTICS_REGISTER = 0x02, DIAGNOSTICS_CHANGE_ASCII_INPUT_DELIMITER = 0x03,
  DIAGNOSTICS_FORCE_LISTEN_ONLY_MODE = 0x04, DIAGNOSTICS_CLEAR_COUNTERS_AND_DIAGNOSTICS_REGISTER = 0x0A, DIAGNOSTICS_RETURN_BUS_MESSAGE_COUNT = 0x0B, DIAGNOSTICS_RETURN_BUS_COMM_ERROR_COUNT = 0x0C,
  DIAGNOSTICS_RETURN_BUS_EXCEPTION_ERROR_COUNT = 0x0D, DIAGNOSTICS_RETURN_SLAVE_MESSAGE_COUNT = 0x0E, DIAGNOSTICS_RETURN_SLAVE_NO_RESPONSE_COUNT = 0x0F, DIAGNOSTICS_RETURN_SLAVE_NAK_COUNT = 0x10,
  DIAGNOSTICS_RETURN_SLAVE_BUSY_COUNT = 0x11, DIAGNOSTICS_RETURN_BUS_CHARACTER_OVERRUN_COUNT = 0x12, DIAGNOSTICS_RETURN_IOP_OVERRUN_COUNT = 0x13, DIAGNOSTICS_CLEAR_OVERRUN_COUNTER_AND_FLAG = 0x14,
  DIAGNOSTICS_GET_CLEAR_MODBUS_PLUS_STATISTICS = 0x15
}
 
- Public Types inherited from cutehmi::services::Serviceable
typedef QHash< QState *, QStringServiceStatuses
 

Public Slots

virtual void open ()=0
 
virtual void close ()=0
 

Signals

void stateChanged ()
 
void readyChanged ()
 
void maxReadCoilsChanged ()
 
void maxWriteCoilsChanged ()
 
void maxReadDiscreteInputsChanged ()
 
void maxWriteDiscreteInputsChanged ()
 
void maxReadHoldingRegistersChanged ()
 
void maxWriteHoldingRegistersChanged ()
 
void maxReadInputRegistersChanged ()
 
void maxWriteInputRegistersChanged ()
 
void requestCompleted (QJsonObject request, QJsonObject reply)
 

Public Member Functions

State state () const
 
bool ready () const
 Get readiness status. More...
 
int maxReadCoils () const
 
void setMaxReadCoils (int maxReadCoils)
 
int maxWriteCoils () const
 
void setMaxWriteCoils (int maxWriteCoils)
 
int maxReadDiscreteInputs () const
 
void setMaxReadDiscreteInputs (int maxReadDiscreteInputs)
 
int maxWriteDiscreteInputs () const
 
void setMaxWriteDiscreteInputs (int maxWriteDiscreteInputs)
 
int maxReadHoldingRegisters () const
 
void setMaxReadHoldingRegisters (int maxReadHoldingRegisters)
 
int maxWriteHoldingRegisters () const
 
void setMaxWriteHoldingRegisters (int maxWriteHoldingRegisters)
 
int maxReadInputRegisters () const
 
void setMaxReadInputRegisters (int maxReadInputRegisters)
 
int maxWriteInputRegisters () const
 
void setMaxWriteInputRegisters (int maxWriteInputRegisters)
 
CoilcoilAt (quint16 address)
 
DiscreteInputdiscreteInputAt (quint16 address)
 
HoldingRegisterholdingRegisterAt (quint16 address)
 
InputRegisterinputRegisterAt (quint16 address)
 
Q_INVOKABLE void requestReadCoils (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read coils request. More...
 
Q_INVOKABLE void requestWriteCoil (quint16 address, bool value, QUuid *requestId=nullptr)
 Write coils request. More...
 
Q_INVOKABLE void requestWriteMultipleCoils (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple coils request. More...
 
Q_INVOKABLE void requestReadDiscreteInputs (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read discrete inputs request. More...
 
Q_INVOKABLE void requestWriteDiscreteInput (quint16 address, bool value, QUuid *requestId=nullptr)
 Write discrete input request. More...
 
Q_INVOKABLE void requestWriteMultipleDiscreteInputs (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple discrete inputs request. More...
 
Q_INVOKABLE void requestReadHoldingRegisters (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read holding registers request. More...
 
Q_INVOKABLE void requestWriteHoldingRegister (quint16 address, quint16 value, QUuid *requestId=nullptr)
 Write holding register request. More...
 
Q_INVOKABLE void requestWriteMultipleHoldingRegisters (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple holding registers request. More...
 
Q_INVOKABLE void requestReadInputRegisters (quint16 address, quint16 amount=1, QUuid *requestId=nullptr)
 Read input registers request. More...
 
Q_INVOKABLE void requestWriteInputRegister (quint16 address, quint16 value, QUuid *requestId=nullptr)
 Write input register request. More...
 
Q_INVOKABLE void requestWriteMultipleInputRegisters (quint16 address, QJsonArray values, QUuid *requestId=nullptr)
 Write multiple input registers request. More...
 
Q_INVOKABLE void requestDiagnostics (DiagnosticsSubfunction subfunction, quint16 data, QUuid *requestId=nullptr)
 Diagonistics request. More...
 
Q_INVOKABLE void requestReadExceptionStatus (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestFetchCommEventCounter (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestFetchCommEventLog (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestReportSlaveId (QUuid *requestId=nullptr)
 Report slave id request. More...
 
Q_INVOKABLE void requestMaskWriteHoldingRegister (quint16 address, quint16 andMask, quint16 orMask, QUuid *requestId=nullptr)
 Mask write holding register request. More...
 
Q_INVOKABLE void requestReadWriteMultipleHoldingRegisters (quint16 readAddress, quint16 amount, quint16 writeAddress, QJsonArray values, QUuid *requestId=nullptr)
 Read/write multiple holding registers request. More...
 
Q_INVOKABLE void requestReadFIFOQueue (quint16 address, QUuid *requestId=nullptr)
 Read FIFO queue request. More...
 
Q_INVOKABLE QJsonObject readFileRecordSubrequest (quint16 file, quint16 address, quint16 amount)
 Generate read file record subrequest. More...
 
Q_INVOKABLE void requestReadFileRecord (QJsonArray subrequests, QUuid *requestId=nullptr)
 Read file record request. More...
 
Q_INVOKABLE QJsonObject writeFileRecordSubrequest (quint16 file, quint16 address, QJsonArray values)
 Generate write file record subrequest. More...
 
Q_INVOKABLE void requestWriteFileRecord (QJsonArray subrequests, QUuid *requestId=nullptr)
 Write file record request. More...
 
Q_INVOKABLE void request (Function function, QJsonObject payload, QUuid *requestId=nullptr)
 Modbus function request. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
virtual void * qt_metacast (const char *)
 
virtual int qt_metacall (QMetaObject::Call, int, void **)
 
 QObject (QObject *parent)
 
virtual ~QObject ()
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
- Public Member Functions inherited from cutehmi::services::Serviceable
 Serviceable ()=default
 
virtual std::unique_ptr< ServiceStatusesconfigureStarted (QState *active, const QState *idling, const QState *yielding)=0
 
virtual std::unique_ptr< ServiceStatusesconfigureStarting (QState *starting)=0
 
virtual std::unique_ptr< ServiceStatusesconfigureStopping (QState *stopping)=0
 
virtual std::unique_ptr< ServiceStatusesconfigureBroken (QState *broken)=0
 
virtual std::unique_ptr< ServiceStatusesconfigureRepairing (QState *repairing)=0
 
virtual std::unique_ptr< ServiceStatusesconfigureEvacuating (QState *evacuating)=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToStarted () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToStopped () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToBroken () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToYielding () const=0
 
virtual std::unique_ptr< QAbstractTransitiontransitionToIdling () const=0
 

Static Public Attributes

static constexpr quint16 MIN_ADDRESS = 0
 
static constexpr quint16 MAX_ADDRESS = 65535
 
static constexpr int INITIAL_MAX_READ_COILS = 16
 
static constexpr int INITIAL_MAX_WRITE_COILS = 16
 
static constexpr int INITIAL_MAX_READ_DISCRETE_INPUTS = 16
 
static constexpr int INITIAL_MAX_WRITE_DISCRETE_INPUTS = 16
 
static constexpr int INITIAL_MAX_READ_HOLDING_REGISTERS = 16
 
static constexpr int INITIAL_MAX_WRITE_HOLDING_REGISTERS = 16
 
static constexpr int INITIAL_MAX_READ_INPUT_REGISTERS = 16
 
static constexpr int INITIAL_MAX_WRITE_INPUT_REGISTERS = 16
 
static constexpr State INITIAL_STATE = CLOSED
 
static constexpr bool INITIAL_READY = false
 
Query limits.

Modbus protocol imposes following restriction on amount of data that can be read or write at once.

"The quantity of registers to be read, combined with all other fields in the expected response, must not exceed the allowable length of Modbus messages: 256 bytes."

– Modicon Modbus Protocol Reference Guide PI–MBUS–300 Rev. J


This means that Modbus message must not exceed 256 octets in size. In Modbus over TCP, device address and CRC (3 octets) are traded for 6 octet header and 1 octet unit identifier, which gives 4 octets less to store values. Theoretical maximal amounts of values for given Modbus register types, that can be queried within a single message, are defined by constants below, however particular PLCs may impose further restrictions.

static constexpr int MAX_READ_TCP_COILS = 1976
 Maximal amount of coils that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_COILS = 2008
 Maximal amount of coils that can be read at once through RTU. More...
 
static constexpr int MAX_WRITE_TCP_COILS = 1944
 Maximal amount of coils that can be written at once through TCP. More...
 
static constexpr int MAX_WRITE_RTU_COILS = 1976
 Maximal amount of coils that can be written at once through RTU. More...
 
static constexpr int MAX_READ_TCP_DISCRETE_INPUTS = 1976
 Maximal amount of discrete inputs that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_DISCRETE_INPUTS = 2008
 Maximal amount of discrete inputs that can be read at once through RTU. More...
 
static constexpr int MAX_READ_TCP_HOLDING_REGISTERS = 123
 Maximal amount of holding registers that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_HOLDING_REGISTERS = 125
 Maximal amount of holding registers that can be read at once through RTU. More...
 
static constexpr int MAX_WRITE_TCP_HOLDING_REGISTERS = 123
 Maximal amount of holding registers that can be written at once through TCP. More...
 
static constexpr int MAX_WRITE_RTU_HOLDING_REGISTERS = 125
 Maximal amount of holding registers that can be written at once through RTU. More...
 
static constexpr int MAX_READ_TCP_INPUT_REGISTERS = 123
 Maximal amount of input registers that can be read at once through TCP. More...
 
static constexpr int MAX_READ_RTU_INPUT_REGISTERS = 125
 Maximal amount of input registers that can be read at once through RTU. More...
 

Protected Types

typedef internal::RegisterTraits< internal::Coil >::Container CoilDataContainer
 
typedef internal::RegisterTraits< internal::DiscreteInput >::Container DiscreteInputDataContainer
 
typedef internal::RegisterTraits< internal::HoldingRegister >::Container HoldingRegisterDataContainer
 
typedef internal::RegisterTraits< internal::InputRegister >::Container InputRegisterDataContainer
 

Protected Slots

virtual void handleReply (QUuid requestId, QJsonObject reply)
 Reply handler. More...
 
void setState (State state)
 
void setReady (bool ready)
 

Protected Member Functions

 AbstractDevice (QObject *parent=nullptr)
 
 ~AbstractDevice () override
 Destructor. More...
 
virtual void handleRequest (const QJsonObject &request)=0
 Handle request. More...
 
const CoilDataContainercoilData () const
 
CoilDataContainercoilData ()
 
const DiscreteInputDataContainerdiscreteInputData () const
 
DiscreteInputDataContainerdiscreteInputData ()
 
const HoldingRegisterDataContainerholdingRegisterData () const
 
HoldingRegisterDataContainerholdingRegisterData ()
 
const InputRegisterDataContainerinputRegisterData () const
 
InputRegisterDataContainerinputRegisterData ()
 
QJsonObject pendingRequest (QUuid requestId) const
 
QJsonObject takePendingRequest (QUuid requestId)
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
- Protected Member Functions inherited from cutehmi::services::Serviceable
virtual ~Serviceable ()=default
 
 Serviceable (const Serviceable &other)=default
 
Serviceableoperator= (const Serviceable &other)=default
 

Properties

State state
 
bool ready
 
int maxReadCoils
 
int maxWriteCoils
 
int maxReadDiscreteInputs
 
int maxWriteDiscreteInputs
 
int maxReadHoldingRegisters
 
int maxWriteHoldingRegisters
 
int maxReadInputRegisters
 
int maxWriteInputRegisters
 
- Properties inherited from QObject
 objectName
 

Friends

class test_AbstractDevice
 
class test_AbstractServer
 
class internal::IterableTasks
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 

Detailed Description

Abstract Modbus device.

Member Typedef Documentation

◆ CoilDataContainer

◆ DiscreteInputDataContainer

◆ HoldingRegisterDataContainer

◆ InputRegisterDataContainer

Member Enumeration Documentation

◆ DiagnosticsSubfunction

Enumerator
DIAGNOSTICS_RETURN_QUERY_DATA 
DIAGNOSTICS_RESTART_COMM_OPTION 
DIAGNOSTICS_RETURN_DIAGNOSTICS_REGISTER 
DIAGNOSTICS_CHANGE_ASCII_INPUT_DELIMITER 
DIAGNOSTICS_FORCE_LISTEN_ONLY_MODE 
DIAGNOSTICS_CLEAR_COUNTERS_AND_DIAGNOSTICS_REGISTER 
DIAGNOSTICS_RETURN_BUS_MESSAGE_COUNT 
DIAGNOSTICS_RETURN_BUS_COMM_ERROR_COUNT 
DIAGNOSTICS_RETURN_BUS_EXCEPTION_ERROR_COUNT 
DIAGNOSTICS_RETURN_SLAVE_MESSAGE_COUNT 
DIAGNOSTICS_RETURN_SLAVE_NO_RESPONSE_COUNT 
DIAGNOSTICS_RETURN_SLAVE_NAK_COUNT 
DIAGNOSTICS_RETURN_SLAVE_BUSY_COUNT 
DIAGNOSTICS_RETURN_BUS_CHARACTER_OVERRUN_COUNT 
DIAGNOSTICS_RETURN_IOP_OVERRUN_COUNT 
DIAGNOSTICS_CLEAR_OVERRUN_COUNTER_AND_FLAG 
DIAGNOSTICS_GET_CLEAR_MODBUS_PLUS_STATISTICS 

◆ Function

Enumerator
FUNCTION_INVALID 
FUNCTION_READ_COILS 
FUNCTION_READ_DISCRETE_INPUTS 
FUNCTION_READ_HOLDING_REGISTERS 
FUNCTION_READ_INPUT_REGISTERS 
FUNCTION_WRITE_COIL 
FUNCTION_WRITE_HOLDING_REGISTER 
FUNCTION_READ_EXCEPTION_STATUS 
FUNCTION_DIAGNOSTICS 
FUNCTION_FETCH_COMM_EVENT_COUNTER 
FUNCTION_FETCH_COMM_EVENT_LOG 
FUNCTION_WRITE_MULTIPLE_COILS 
FUNCTION_WRITE_MULTIPLE_HOLDING_REGISTERS 
FUNCTION_REPORT_SLAVE_ID 
FUNCTION_READ_FILE_RECORD 
FUNCTION_WRITE_FILE_RECORD 
FUNCTION_MASK_WRITE_HOLDING_REGISTER 
FUNCTION_READ_WRITE_MULTIPLE_HOLDING_REGISTERS 
FUNCTION_READ_FIFO_QUEUE 
FUNCTION_UNDEFINED 
FUNCTION_WRITE_DISCRETE_INPUT 
FUNCTION_WRITE_MULTIPLE_DISCRETE_INPUTS 
FUNCTION_WRITE_INPUT_REGISTER 
FUNCTION_WRITE_MULTIPLE_INPUT_REGISTERS 
FUNCTION_RAW 

◆ State

Enumerator
OPENING 
OPENED 
CLOSING 
CLOSED 

Constructor & Destructor Documentation

◆ AbstractDevice()

cutehmi::modbus::AbstractDevice::AbstractDevice ( QObject parent = nullptr)
protected

◆ ~AbstractDevice()

cutehmi::modbus::AbstractDevice::~AbstractDevice ( )
overrideprotected

Destructor.

Warning
References to coils, discrete inputs, holding registers and input registers become invalid before QObject emits destroyed() signal.

Member Function Documentation

◆ close

virtual void cutehmi::modbus::AbstractDevice::close ( )
pure virtualslot

◆ coilAt()

Coil * cutehmi::modbus::AbstractDevice::coilAt ( quint16  address)

◆ coilData() [1/2]

CoilDataContainer& cutehmi::modbus::AbstractDevice::coilData ( )
protected

◆ coilData() [2/2]

AbstractDevice::CoilDataContainer & cutehmi::modbus::AbstractDevice::coilData ( ) const
protected

◆ discreteInputAt()

DiscreteInput * cutehmi::modbus::AbstractDevice::discreteInputAt ( quint16  address)

◆ discreteInputData() [1/2]

DiscreteInputDataContainer& cutehmi::modbus::AbstractDevice::discreteInputData ( )
protected

◆ discreteInputData() [2/2]

AbstractDevice::DiscreteInputDataContainer & cutehmi::modbus::AbstractDevice::discreteInputData ( ) const
protected

◆ handleReply

void cutehmi::modbus::AbstractDevice::handleReply ( QUuid  requestId,
QJsonObject  reply 
)
protectedvirtualslot

Reply handler.

Parameters
requestIdrequest id.
replyreply data.

Reimplemented in cutehmi::modbus::AbstractClient.

◆ handleRequest()

virtual void cutehmi::modbus::AbstractDevice::handleRequest ( const QJsonObject request)
protectedpure virtual

Handle request.

This function acts as request handler, that derived class must implement. Internally request() function creates request object and passes it to request handler of derived class. Request object is added to pending requests queue. Derived class should start processing request. Once request completes derived class is expected to prepare reply and call handleReply() function. Otherwise it has to remove request from queue by calling takePendingRequest() function and emit requestCompleted() signal.

Parameters
requestrequest object containing request header and payload.

Implemented in cutehmi::modbus::AbstractServer, and cutehmi::modbus::AbstractClient.

◆ holdingRegisterAt()

HoldingRegister * cutehmi::modbus::AbstractDevice::holdingRegisterAt ( quint16  address)

◆ holdingRegisterData() [1/2]

HoldingRegisterDataContainer& cutehmi::modbus::AbstractDevice::holdingRegisterData ( )
protected

◆ holdingRegisterData() [2/2]

AbstractDevice::HoldingRegisterDataContainer & cutehmi::modbus::AbstractDevice::holdingRegisterData ( ) const
protected

◆ inputRegisterAt()

InputRegister * cutehmi::modbus::AbstractDevice::inputRegisterAt ( quint16  address)

◆ inputRegisterData() [1/2]

InputRegisterDataContainer& cutehmi::modbus::AbstractDevice::inputRegisterData ( )
protected

◆ inputRegisterData() [2/2]

AbstractDevice::InputRegisterDataContainer & cutehmi::modbus::AbstractDevice::inputRegisterData ( ) const
protected

◆ maxReadCoils()

int cutehmi::modbus::AbstractDevice::maxReadCoils ( ) const

◆ maxReadCoilsChanged

void cutehmi::modbus::AbstractDevice::maxReadCoilsChanged ( )
signal

◆ maxReadDiscreteInputs()

int cutehmi::modbus::AbstractDevice::maxReadDiscreteInputs ( ) const

◆ maxReadDiscreteInputsChanged

void cutehmi::modbus::AbstractDevice::maxReadDiscreteInputsChanged ( )
signal

◆ maxReadHoldingRegisters()

int cutehmi::modbus::AbstractDevice::maxReadHoldingRegisters ( ) const

◆ maxReadHoldingRegistersChanged

void cutehmi::modbus::AbstractDevice::maxReadHoldingRegistersChanged ( )
signal

◆ maxReadInputRegisters()

int cutehmi::modbus::AbstractDevice::maxReadInputRegisters ( ) const

◆ maxReadInputRegistersChanged

void cutehmi::modbus::AbstractDevice::maxReadInputRegistersChanged ( )
signal

◆ maxWriteCoils()

int cutehmi::modbus::AbstractDevice::maxWriteCoils ( ) const

◆ maxWriteCoilsChanged

void cutehmi::modbus::AbstractDevice::maxWriteCoilsChanged ( )
signal

◆ maxWriteDiscreteInputs()

int cutehmi::modbus::AbstractDevice::maxWriteDiscreteInputs ( ) const

◆ maxWriteDiscreteInputsChanged

void cutehmi::modbus::AbstractDevice::maxWriteDiscreteInputsChanged ( )
signal

◆ maxWriteHoldingRegisters()

int cutehmi::modbus::AbstractDevice::maxWriteHoldingRegisters ( ) const

◆ maxWriteHoldingRegistersChanged

void cutehmi::modbus::AbstractDevice::maxWriteHoldingRegistersChanged ( )
signal

◆ maxWriteInputRegisters()

int cutehmi::modbus::AbstractDevice::maxWriteInputRegisters ( ) const

◆ maxWriteInputRegistersChanged

void cutehmi::modbus::AbstractDevice::maxWriteInputRegistersChanged ( )
signal

◆ open

virtual void cutehmi::modbus::AbstractDevice::open ( )
pure virtualslot

◆ pendingRequest()

QJsonObject cutehmi::modbus::AbstractDevice::pendingRequest ( QUuid  requestId) const
protected

◆ readFileRecordSubrequest()

QJsonObject cutehmi::modbus::AbstractDevice::readFileRecordSubrequest ( quint16  file,
quint16  address,
quint16  amount 
)

Generate read file record subrequest.

Helper function that creates JSON object for readFileRecord() function.

Parameters
filefile number.
addressstarting address.
amountamount of registers to be read.
Returns
JSON object representing read file record subrequest.
See also
readFileRecord().

◆ ready()

bool cutehmi::modbus::AbstractDevice::ready ( ) const

Get readiness status.

Indicates whether device is ready for handling requests.

Returns
readiness status. If device is ready to handle requests function returns true, otherwise it returns false.

◆ readyChanged

void cutehmi::modbus::AbstractDevice::readyChanged ( )
signal

◆ request()

void cutehmi::modbus::AbstractDevice::request ( Function  function,
QJsonObject  payload,
QUuid requestId = nullptr 
)

Modbus function request.

Parameters
functionModbus function code.
payloadrequest payload. Payload is specific to each function code. Typically it is more convenient to use one of the helper slots (requestXYZ()) rather than prepare raw payload.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestCompleted

void cutehmi::modbus::AbstractDevice::requestCompleted ( QJsonObject  request,
QJsonObject  reply 
)
signal

◆ requestDiagnostics()

void cutehmi::modbus::AbstractDevice::requestDiagnostics ( AbstractDevice::DiagnosticsSubfunction  subfunction,
quint16  data,
QUuid requestId = nullptr 
)

Diagonistics request.

Convenient function that prepares payload and calls request() with FUNCTION_DIAGNOSTICS function code.

Parameters
subfunctiondiagnostics function.
datadata to be passed to diagnostics function.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestFetchCommEventCounter()

void cutehmi::modbus::AbstractDevice::requestFetchCommEventCounter ( QUuid requestId = nullptr)

Report slave id request.

Convenient function that calls request() with FUNCTION_FETCH_COMM_EVENT_COUNTER function code.

Parameters
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestFetchCommEventLog()

void cutehmi::modbus::AbstractDevice::requestFetchCommEventLog ( QUuid requestId = nullptr)

Report slave id request.

Convenient function that calls request() with FUNCTION_FETCH_COMM_EVENT_COUNTER function code.

Parameters
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestMaskWriteHoldingRegister()

void cutehmi::modbus::AbstractDevice::requestMaskWriteHoldingRegister ( quint16  address,
quint16  andMask,
quint16  orMask,
QUuid requestId = nullptr 
)

Mask write holding register request.

Convenient function that prepares payload and calls request() with FUNCTION_MASK_WRITE_HOLDING_REGISTER function code. As a result a holding register is modified according to the following formula: holdingRegister[address] = (holdingRegister[address] AND andMask) OR ( orMask AND ! andMask).

Parameters
addressaddress of the holding register to mask.
andMaskmask to be used as AND mask.
orMaskmask to be used as OR mask.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadCoils()

void cutehmi::modbus::AbstractDevice::requestReadCoils ( quint16  address,
quint16  amount = 1,
QUuid requestId = nullptr 
)

Read coils request.

Convenient function that prepares request payload and calls request() with FUNCTION_READ_COILS function code.

Parameters
addressstarting address.
amountnumber of coils to query. Note that Modbus specification expects it to be 16 bit unsigned value, so 65535 is maximal number of coils that can be queried at once (Modbus address range 0-65535 contains 65536 addresses). Modbus message size imposes further restriction - see query limits.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadDiscreteInputs()

void cutehmi::modbus::AbstractDevice::requestReadDiscreteInputs ( quint16  address,
quint16  amount = 1,
QUuid requestId = nullptr 
)

Read discrete inputs request.

Convenient function that prepares request payload and calls request() with FUNCTION_READ_DISCRETE_INPUTS function code.

Parameters
addressstarting address.
amountnumber of inputs to query. Note that Modbus specification expects it to be 16 bit unsigned value, so 65535 is maximal number of inputs that can be queried at once (Modbus address range 0-65535 contains 65536 addresses). Modbus message size imposes further restriction - see query limits.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadExceptionStatus()

void cutehmi::modbus::AbstractDevice::requestReadExceptionStatus ( QUuid requestId = nullptr)

Report slave id request.

Convenient function that calls request() with FUNCTION_READ_EXCEPTION_STATUS function code.

Parameters
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadFIFOQueue()

void cutehmi::modbus::AbstractDevice::requestReadFIFOQueue ( quint16  address,
QUuid requestId = nullptr 
)

Read FIFO queue request.

Convenient function that prepares payload and calls request() with FUNCTION_READ_FIFO_QUEUE function code.

Parameters
addressstarting address to be read from FIFO queue.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadFileRecord()

void cutehmi::modbus::AbstractDevice::requestReadFileRecord ( QJsonArray  subrequests,
QUuid requestId = nullptr 
)

Read file record request.

Convenient function that prepares payload and calls request() with FUNCTION_READ_FILE_RECORD function code.

Parameters
subrequestsarray of subrequests. Each array element should be a JSON object, which can be created with readFileRecordSubrequest() function.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.
See also
readFileRecordSubrequest().

◆ requestReadHoldingRegisters()

void cutehmi::modbus::AbstractDevice::requestReadHoldingRegisters ( quint16  address,
quint16  amount = 1,
QUuid requestId = nullptr 
)

Read holding registers request.

Convenient function that prepares request payload and calls request() with FUNCTION_READ_HOLDING_REGISTERS function code.

Parameters
addressstarting address.
amountnumber of registers to query. Note that Modbus specification expects it to be 16 bit unsigned value, so 65535 is maximal number of registers that can be queried at once (Modbus address range 0-65535 contains 65536 addresses). Modbus message size imposes further restriction - see query limits.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadInputRegisters()

void cutehmi::modbus::AbstractDevice::requestReadInputRegisters ( quint16  address,
quint16  amount = 1,
QUuid requestId = nullptr 
)

Read input registers request.

Convenient function that prepares request payload and calls request() with FUNCTION_READ_INPUT_REGISTERS function code.

Parameters
addressstarting address.
amountnumber of registers to query. Note that Modbus specification expects it to be 16 bit unsigned value, so 65535 is maximal number of registers that can be queried at once (Modbus address range 0-65535 contains 65536 addresses). Modbus message size imposes further restriction - see query limits.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReadWriteMultipleHoldingRegisters()

void cutehmi::modbus::AbstractDevice::requestReadWriteMultipleHoldingRegisters ( quint16  readAddress,
quint16  amount,
quint16  writeAddress,
QJsonArray  values,
QUuid requestId = nullptr 
)

Read/write multiple holding registers request.

Convenient function that prepares payload and calls request() with FUNCTION_READ_WRITE_MULTIPLE_HOLDING_REGISTERS function code.

Parameters
readAddressstarting address of registers to be read from.
amountamount of registers to be read.
writeAddressstarting address of registers to be written to.
valuesvalues to be written.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestReportSlaveId()

void cutehmi::modbus::AbstractDevice::requestReportSlaveId ( QUuid requestId = nullptr)

Report slave id request.

Convenient function that calls request() with FUNCTION_REPORT_SLAVE_ID function code.

Parameters
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteCoil()

void cutehmi::modbus::AbstractDevice::requestWriteCoil ( quint16  address,
bool  value,
QUuid requestId = nullptr 
)

Write coils request.

Convenient function that prepares request payload and calls request(FUNCTION_WRITE_COIL, payload).

Parameters
addressaddress of the coil.
valuevalue to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteDiscreteInput()

void cutehmi::modbus::AbstractDevice::requestWriteDiscreteInput ( quint16  address,
bool  value,
QUuid requestId = nullptr 
)

Write discrete input request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_DISCRETE_INPUT function code.

Parameters
addressaddress of the discrete input.
valuevalue to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteFileRecord()

void cutehmi::modbus::AbstractDevice::requestWriteFileRecord ( QJsonArray  subrequests,
QUuid requestId = nullptr 
)

Write file record request.

Convenient function that prepares payload and calls request() with FUNCTION_WRITE_FILE_RECORD function code.

Parameters
subrequestsarray of subrequests. Each array element should be a JSON object, which can be created with writeFileRecordSubrequest() function.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.
See also
writeFileRecordSubrequest().

◆ requestWriteHoldingRegister()

void cutehmi::modbus::AbstractDevice::requestWriteHoldingRegister ( quint16  address,
quint16  value,
QUuid requestId = nullptr 
)

Write holding register request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_HOLDING_REGISTER function code.

Parameters
addressaddress of the coil.
valuevalue to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteInputRegister()

void cutehmi::modbus::AbstractDevice::requestWriteInputRegister ( quint16  address,
quint16  value,
QUuid requestId = nullptr 
)

Write input register request.

Convenient function that prepares request payload and calls request(FUNCTION_WRITE_INPUT_REGISTER).

Parameters
addressaddress of the input register.
valuevalue to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteMultipleCoils()

void cutehmi::modbus::AbstractDevice::requestWriteMultipleCoils ( quint16  address,
QJsonArray  values,
QUuid requestId = nullptr 
)

Write multiple coils request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_MULTIPLE_COILS function code.

Parameters
addressaddress of the first coil.
valuesarray containing values to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteMultipleDiscreteInputs()

void cutehmi::modbus::AbstractDevice::requestWriteMultipleDiscreteInputs ( quint16  address,
QJsonArray  values,
QUuid requestId = nullptr 
)

Write multiple discrete inputs request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_MULTIPLE_DISCRETE_INPUTS function code.

Parameters
addressaddress of the first discrete input.
valuesarray containing values to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteMultipleHoldingRegisters()

void cutehmi::modbus::AbstractDevice::requestWriteMultipleHoldingRegisters ( quint16  address,
QJsonArray  values,
QUuid requestId = nullptr 
)

Write multiple holding registers request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_MULTIPLE_HOLDING_REGISTERS function code.

Parameters
addressaddress of the first holding register.
valuesarray containing values to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ requestWriteMultipleInputRegisters()

void cutehmi::modbus::AbstractDevice::requestWriteMultipleInputRegisters ( quint16  address,
QJsonArray  values,
QUuid requestId = nullptr 
)

Write multiple input registers request.

Convenient function that prepares request payload and calls request() with FUNCTION_WRITE_MULTIPLE_INPUT_REGISTERS function code.

Parameters
addressaddress of the first input register.
valuesarray containing values to be set.
requestIdrequest id. If not nullptr, function will set pointee to generated request id before handling the request.

◆ setMaxReadCoils()

void cutehmi::modbus::AbstractDevice::setMaxReadCoils ( int  maxReadCoils)

◆ setMaxReadDiscreteInputs()

void cutehmi::modbus::AbstractDevice::setMaxReadDiscreteInputs ( int  maxReadDiscreteInputs)

◆ setMaxReadHoldingRegisters()

void cutehmi::modbus::AbstractDevice::setMaxReadHoldingRegisters ( int  maxReadHoldingRegisters)

◆ setMaxReadInputRegisters()

void cutehmi::modbus::AbstractDevice::setMaxReadInputRegisters ( int  maxReadInputRegisters)

◆ setMaxWriteCoils()

void cutehmi::modbus::AbstractDevice::setMaxWriteCoils ( int  maxWriteCoils)

◆ setMaxWriteDiscreteInputs()

void cutehmi::modbus::AbstractDevice::setMaxWriteDiscreteInputs ( int  maxWriteDiscreteInputs)

◆ setMaxWriteHoldingRegisters()

void cutehmi::modbus::AbstractDevice::setMaxWriteHoldingRegisters ( int  maxWriteHoldingRegisters)

◆ setMaxWriteInputRegisters()

void cutehmi::modbus::AbstractDevice::setMaxWriteInputRegisters ( int  maxWriteInputRegisters)

◆ setReady

void cutehmi::modbus::AbstractDevice::setReady ( bool  ready)
protectedslot

◆ setState

void cutehmi::modbus::AbstractDevice::setState ( AbstractDevice::State  state)
protectedslot

◆ state()

State cutehmi::modbus::AbstractDevice::state ( ) const

◆ stateChanged

void cutehmi::modbus::AbstractDevice::stateChanged ( )
signal

◆ takePendingRequest()

QJsonObject cutehmi::modbus::AbstractDevice::takePendingRequest ( QUuid  requestId)
protected

◆ writeFileRecordSubrequest()

QJsonObject cutehmi::modbus::AbstractDevice::writeFileRecordSubrequest ( quint16  file,
quint16  address,
QJsonArray  values 
)

Generate write file record subrequest.

Helper function that creates JSON object for writeFileRecord() function.

Parameters
filefile number.
addressstarting address.
valuesvalues to be written.
Returns
JSON object representing write file record subrequest.
See also
writeFileRecord().

Friends And Related Function Documentation

◆ internal::IterableTasks

friend class internal::IterableTasks
friend

◆ test_AbstractDevice

friend class test_AbstractDevice
friend

◆ test_AbstractServer

friend class test_AbstractServer
friend

Member Data Documentation

◆ INITIAL_MAX_READ_COILS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_READ_COILS = 16
staticconstexpr

◆ INITIAL_MAX_READ_DISCRETE_INPUTS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_READ_DISCRETE_INPUTS = 16
staticconstexpr

◆ INITIAL_MAX_READ_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_READ_HOLDING_REGISTERS = 16
staticconstexpr

◆ INITIAL_MAX_READ_INPUT_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_READ_INPUT_REGISTERS = 16
staticconstexpr

◆ INITIAL_MAX_WRITE_COILS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_WRITE_COILS = 16
staticconstexpr

◆ INITIAL_MAX_WRITE_DISCRETE_INPUTS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_WRITE_DISCRETE_INPUTS = 16
staticconstexpr

◆ INITIAL_MAX_WRITE_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_WRITE_HOLDING_REGISTERS = 16
staticconstexpr

◆ INITIAL_MAX_WRITE_INPUT_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::INITIAL_MAX_WRITE_INPUT_REGISTERS = 16
staticconstexpr

◆ INITIAL_READY

constexpr bool cutehmi::modbus::AbstractDevice::INITIAL_READY = false
staticconstexpr

◆ INITIAL_STATE

constexpr AbstractDevice::State cutehmi::modbus::AbstractDevice::INITIAL_STATE = CLOSED
staticconstexpr

◆ MAX_ADDRESS

constexpr quint16 cutehmi::modbus::AbstractDevice::MAX_ADDRESS = 65535
staticconstexpr

◆ MAX_READ_RTU_COILS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_RTU_COILS = 2008
staticconstexpr

Maximal amount of coils that can be read at once through RTU.

◆ MAX_READ_RTU_DISCRETE_INPUTS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_RTU_DISCRETE_INPUTS = 2008
staticconstexpr

Maximal amount of discrete inputs that can be read at once through RTU.

◆ MAX_READ_RTU_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_RTU_HOLDING_REGISTERS = 125
staticconstexpr

Maximal amount of holding registers that can be read at once through RTU.

◆ MAX_READ_RTU_INPUT_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_RTU_INPUT_REGISTERS = 125
staticconstexpr

Maximal amount of input registers that can be read at once through RTU.

◆ MAX_READ_TCP_COILS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_TCP_COILS = 1976
staticconstexpr

Maximal amount of coils that can be read at once through TCP.

◆ MAX_READ_TCP_DISCRETE_INPUTS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_TCP_DISCRETE_INPUTS = 1976
staticconstexpr

Maximal amount of discrete inputs that can be read at once through TCP.

◆ MAX_READ_TCP_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_TCP_HOLDING_REGISTERS = 123
staticconstexpr

Maximal amount of holding registers that can be read at once through TCP.

◆ MAX_READ_TCP_INPUT_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_READ_TCP_INPUT_REGISTERS = 123
staticconstexpr

Maximal amount of input registers that can be read at once through TCP.

◆ MAX_WRITE_RTU_COILS

constexpr int cutehmi::modbus::AbstractDevice::MAX_WRITE_RTU_COILS = 1976
staticconstexpr

Maximal amount of coils that can be written at once through RTU.

◆ MAX_WRITE_RTU_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_WRITE_RTU_HOLDING_REGISTERS = 125
staticconstexpr

Maximal amount of holding registers that can be written at once through RTU.

◆ MAX_WRITE_TCP_COILS

constexpr int cutehmi::modbus::AbstractDevice::MAX_WRITE_TCP_COILS = 1944
staticconstexpr

Maximal amount of coils that can be written at once through TCP.

◆ MAX_WRITE_TCP_HOLDING_REGISTERS

constexpr int cutehmi::modbus::AbstractDevice::MAX_WRITE_TCP_HOLDING_REGISTERS = 123
staticconstexpr

Maximal amount of holding registers that can be written at once through TCP.

◆ MIN_ADDRESS

constexpr quint16 cutehmi::modbus::AbstractDevice::MIN_ADDRESS = 0
staticconstexpr

Property Documentation

◆ maxReadCoils

int cutehmi::modbus::AbstractDevice::maxReadCoils
readwrite

◆ maxReadDiscreteInputs

int cutehmi::modbus::AbstractDevice::maxReadDiscreteInputs
readwrite

◆ maxReadHoldingRegisters

int cutehmi::modbus::AbstractDevice::maxReadHoldingRegisters
readwrite

◆ maxReadInputRegisters

int cutehmi::modbus::AbstractDevice::maxReadInputRegisters
readwrite

◆ maxWriteCoils

int cutehmi::modbus::AbstractDevice::maxWriteCoils
readwrite

◆ maxWriteDiscreteInputs

int cutehmi::modbus::AbstractDevice::maxWriteDiscreteInputs
readwrite

◆ maxWriteHoldingRegisters

int cutehmi::modbus::AbstractDevice::maxWriteHoldingRegisters
readwrite

◆ maxWriteInputRegisters

int cutehmi::modbus::AbstractDevice::maxWriteInputRegisters
readwrite

◆ ready

bool cutehmi::modbus::AbstractDevice::ready
read

◆ state

AbstractDevice::State cutehmi::modbus::AbstractDevice::state
read