QModbusDevice Class

Die Klasse QModbusDevice ist die Basisklasse für Modbus-Klassen, QModbusServer und QModbusClient. Mehr...

Kopfzeile: #include <QModbusDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Vererbt: QObject
Vererbt von:

QModbusClient und QModbusServer

Öffentliche Typen

enum ConnectionParameter { SerialPortNameParameter, SerialParityParameter, SerialBaudRateParameter, SerialDataBitsParameter, SerialStopBitsParameter, …, NetworkAddressParameter }
enum Error { NoError, ReadError, WriteError, ConnectionError, ConfigurationError, …, InvalidResponseError }
(since 6.0) enum IntermediateError { ResponseCrcError, ResponseRequestMismatch }
enum State { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

Öffentliche Funktionen

QModbusDevice(QObject *parent = nullptr)
virtual ~QModbusDevice()
bool connectDevice()
QVariant connectionParameter(QModbusDevice::ConnectionParameter parameter) const
QIODevice *device() const
void disconnectDevice()
QModbusDevice::Error error() const
QString errorString() const
void setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value)
QModbusDevice::State state() const

Signale

void errorOccurred(QModbusDevice::Error error)
void stateChanged(QModbusDevice::State state)

Geschützte Funktionen

virtual void close() = 0
virtual bool open() = 0
void setError(const QString &errorText, QModbusDevice::Error error)
void setState(QModbusDevice::State newState)

Detaillierte Beschreibung

Dokumentation der Mitgliedstypen

enum QModbusDevice::ConnectionParameter

Dieses Enum beschreibt die möglichen Werte, die für eine Modbus-Geräteverbindung festgelegt werden können.

Die Allzweckwerte (und die zugehörigen Typen) sind:

KonstanteWertBeschreibung
QModbusDevice::SerialPortNameParameter0Dieser Parameter enthält den für die Gerätekommunikation verwendeten seriellen Anschluss, z. B. COM1. QString
QModbusDevice::SerialParityParameter1Dieser Parameter gibt den Paritätsprüfungsmodus an. QSerialPort::Parity
QModbusDevice::SerialBaudRateParameter2Dieser Parameter enthält die Daten-Baudrate für die Kommunikation. QSerialPort::BaudRate
QModbusDevice::SerialDataBitsParameter3Dieser Parameter enthält die Datenbits in einem Rahmen. QSerialPort::DataBits
QModbusDevice::SerialStopBitsParameter4Dieser Parameter enthält die Anzahl der Stoppbits in einem Rahmen. QSerialPort::StopBits
QModbusDevice::NetworkPortParameter5Dieser Parameter enthält den Netzwerkanschluss. int
QModbusDevice::NetworkAddressParameter6Dieser Parameter enthält die Host-Adresse für die Netzwerkkommunikation. QString

enum QModbusDevice::Error

Diese Aufzählung beschreibt alle möglichen Fehlerzustände.

KonstanteWertBeschreibung
QModbusDevice::NoError0Es sind keine Fehler aufgetreten.
QModbusDevice::ReadError1Während eines Lesevorgangs ist ein Fehler aufgetreten.
QModbusDevice::WriteError2Während eines Schreibvorgangs ist ein Fehler aufgetreten.
QModbusDevice::ConnectionError3Beim Versuch, das Backend zu öffnen, ist ein Fehler aufgetreten.
QModbusDevice::ConfigurationError4Beim Versuch, einen Konfigurationsparameter zu setzen, ist ein Fehler aufgetreten.
QModbusDevice::TimeoutError5Während der E/A ist eine Zeitüberschreitung aufgetreten. Ein E/A-Vorgang wurde nicht innerhalb eines bestimmten Zeitrahmens abgeschlossen.
QModbusDevice::ProtocolError6Ein Modbus-spezifischer Protokollfehler ist aufgetreten.
QModbusDevice::ReplyAbortedError7Die Antwort wurde aufgrund einer Verbindungsunterbrechung des Geräts abgebrochen.
QModbusDevice::UnknownError8Ein unbekannter Fehler ist aufgetreten.
QModbusDevice::InvalidResponseError (since Qt 6.4)9Beim Parsen der Antwort ist ein Fehler aufgetreten, oder die FunctionCode wird von der aktuellen Implementierung nicht unterstützt. Im letzteren Fall kann eine benutzerdefinierte Modbus-Client-Implementierung die Methoden processResponse() und processPrivateResponse() außer Kraft setzen, um die benötigten Funktionen zu unterstützen.

[since 6.0] enum QModbusDevice::IntermediateError

Dieses Enum beschreibt mögliche Fehler, die während eines vollständigen Sende- und Empfangszyklus für eine Modbus-Antwort auftreten können.

KonstanteWertBeschreibung
QModbusDevice::ResponseCrcError0Es wurde eine Modbus-Antwort mit einem falschen CRC empfangen.
QModbusDevice::ResponseRequestMismatch1Eine Modbus-Antwort wurde empfangen, stimmte aber nicht mit der offenen Anfrage überein, wahrscheinlich weil der Funktionscode der PDU nicht übereinstimmte.

Wenn einer der oben genannten Zwischenfehler auftrat, wird der Rahmen wahrscheinlich erneut gesendet, bis die maximale Anzahl von Wiederholungen erreicht ist.

Die Liste der Zwischenfehler kann mit der Funktion QModbusReply intermediate errors eingesehen werden.

Dieses Enum wurde in Qt 6.0 eingeführt.

Siehe auch QModbusClient::numberOfRetries() und QModbusReply::intermediateErrors().

enum QModbusDevice::State

Diese Aufzählung beschreibt alle möglichen Gerätezustände.

KonstanteWertBeschreibung
QModbusDevice::UnconnectedState0Das Gerät ist nicht angeschlossen.
QModbusDevice::ConnectingState1Das Gerät wird gerade angeschlossen.
QModbusDevice::ConnectedState2Das Gerät ist mit dem Modbus-Netzwerk verbunden.
QModbusDevice::ClosingState3Das Gerät wird gerade geschlossen.

Mitgliederfunktion Dokumentation

[explicit] QModbusDevice::QModbusDevice(QObject *parent = nullptr)

Konstruiert ein Modbus-Gerät mit der angegebenen parent.

[virtual noexcept] QModbusDevice::~QModbusDevice()

Zerstört die Instanz QModbusDevice

[pure virtual protected] void QModbusDevice::close()

Diese Funktion ist für das Schließen der Modbus-Verbindung verantwortlich. Die Implementierung muss sicherstellen, dass state() der Instanz auf QModbusDevice::UnconnectedState gesetzt ist.

Siehe auch disconnectDevice().

bool QModbusDevice::connectDevice()

Verbindet das Gerät mit dem Modbus-Netzwerk. Gibt true zurück, wenn der Verbindungsvorgang erfolgreich eingeleitet wurde; andernfalls false. Die endgültige Bestätigung des Verbindungserfolgs erfordert den Wechsel von state() zu QModbusDevice::ConnectedState.

Diese Funktion ruft open() als Teil ihrer Implementierung auf.

Siehe auch open().

QVariant QModbusDevice::connectionParameter(QModbusDevice::ConnectionParameter parameter) const

Gibt den Wert zurück, der mit der angegebenen Verbindung parameter verbunden ist. Der zurückgegebene Wert kann leer sein.

Standardmäßig ist die QModbusDevice mit einigen allgemeinen Werten initialisiert. Die Einstellungen für die serielle Schnittstelle sind gerade Parität, eine Baudrate von 19200 Bits pro Sekunde, acht Datenbits und ein Stoppbit. Die Netzwerkeinstellungen für die Hostadresse sind auf Local Host und Port auf 502 eingestellt.

Hinweis: Damit eine serielle Verbindung hergestellt werden kann, muss die SerialPortNameParameter auf einen gültigen Kommunikationsanschluss eingestellt sein. Informationen über gültige serielle Schnittstellen finden Sie unter QSerialPortInfo.

Hinweis: Wenn das Gerät bereits verbunden ist, werden die Einstellungen nach dem erneuten Verbinden des Geräts berücksichtigt.

Siehe auch setConnectionParameter() und ConnectionParameter.

QIODevice *QModbusDevice::device() const

Gibt das zugrunde liegende QIODevice zurück, das für die ModBus-Kommunikation verwendet wird, oder nullptr, wenn das Gerät noch nicht vollständig initialisiert wurde.

Hinweis: Speichern Sie keinen Zeiger auf das zugrundeliegende Gerät, da dieser zu jedem Zeitpunkt ungültig werden kann.

void QModbusDevice::disconnectDevice()

Trennt die Verbindung zum Gerät.

Diese Funktion ruft als Teil ihrer Implementierung close() auf.

QModbusDevice::Error QModbusDevice::error() const

Gibt den Fehlerstatus des Geräts zurück.

Siehe auch setError() und QModbusDevice::Error.

[signal] void QModbusDevice::errorOccurred(QModbusDevice::Error error)

Dieses Signal wird ausgegeben, wenn ein Fehler des Typs error auftritt.

QString QModbusDevice::errorString() const

Gibt einen beschreibenden Fehlertext für den Gerätefehler zurück.

Siehe auch QModbusDevice::Error.

[pure virtual protected] bool QModbusDevice::open()

Diese Funktion wird von connectDevice() aufgerufen. Unterklassen müssen eine Implementierung bereitstellen, die bei erfolgreicher Modbus-Verbindung oder Verbindungsinitiierung true zurückgibt; andernfalls false.

Die Implementierung muss sicherstellen, dass die Instanz state() bei Erfolg auf QModbusDevice::ConnectingState oder QModbusDevice::ConnectedState gesetzt wird; andernfalls QModbusDevice::UnconnectedState. Typischerweise wird QModbusDevice::ConnectingState verwendet, wenn der Verbindungsprozess asynchron zurückmeldet und QModbusDevice::ConnectedState im Falle eines synchronen Verbindungsverhaltens.

Siehe auch connectDevice().

void QModbusDevice::setConnectionParameter(QModbusDevice::ConnectionParameter parameter, const QVariant &value)

Setzt den Wert von parameter auf value. Wenn parameter bereits existiert, wird der vorherige Wert überschrieben. Eine aktive oder laufende Verbindung ist von solchen Parameteränderungen nicht betroffen.

Siehe auch ConnectionParameter und connectionParameter().

[protected] void QModbusDevice::setError(const QString &errorText, QModbusDevice::Error error)

Setzt den Fehlerstatus des Geräts. ModBus-Geräteimplementierungen müssen diese Funktion im Falle eines Fehlers verwenden, um den Typ error und eine beschreibende errorText zu setzen.

Siehe auch error() und QModbusDevice::Error.

[protected] void QModbusDevice::setState(QModbusDevice::State newState)

Setzt den Zustand des Geräts auf newState. Modbus-Geräteimplementierungen müssen diese Funktion zur Aktualisierung des Gerätezustands verwenden.

Siehe auch state().

QModbusDevice::State QModbusDevice::state() const

Gibt den aktuellen Zustand des Geräts zurück.

Siehe auch setState() und stateChanged().

[signal] void QModbusDevice::stateChanged(QModbusDevice::State state)

Dieses Signal wird jedes Mal ausgesendet, wenn sich der Zustand des Geräts ändert. Der neue Zustand wird durch state dargestellt.

Siehe auch setState() und state().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.