Auf dieser Seite

QModbusDevice Class

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

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

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 zu Mitgliedstypen

enum QModbusDevice::ConnectionParameter

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

Der allgemeine Wert (und die zugehörigen Typen) lauten:

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

enum QModbusDevice::Error

Diese Enumeration beschreibt alle möglichen Fehlerzustände.

KonstanteWertBeschreibung
QModbusDevice::NoError0Es sind keine Fehler aufgetreten.
QModbusDevice::ReadError1Bei einem Lesevorgang ist ein Fehler aufgetreten.
QModbusDevice::WriteError2Bei einem Schreibvorgang ist ein Fehler aufgetreten.
QModbusDevice::ConnectionError3Beim Versuch, das Backend zu öffnen, ist ein Fehler aufgetreten.
QModbusDevice::ConfigurationError4Beim Versuch, einen Konfigurationsparameter festzulegen, ist ein Fehler aufgetreten.
QModbusDevice::TimeoutError5Während der E/A ist ein Timeout aufgetreten. Ein E/A-Vorgang wurde nicht innerhalb eines vorgegebenen Zeitraums abgeschlossen.
QModbusDevice::ProtocolError6Es ist ein Modbus-spezifischer Protokollfehler aufgetreten.
QModbusDevice::ReplyAbortedError7Die Antwort wurde aufgrund einer Unterbrechung der Verbindung zum Gerät abgebrochen.
QModbusDevice::UnknownError8Es ist ein unbekannter Fehler aufgetreten.
QModbusDevice::InvalidResponseError (since Qt 6.4)9Beim Parsen der Antwort ist ein Fehler aufgetreten, oder der „ FunctionCode “ wird von der aktuellen Implementierung nicht unterstützt. Im letzteren Fall kann eine benutzerdefinierte Modbus-Client-Implementierung die Methoden „ processResponse()“ und „ processPrivateResponse()“ überschreiben, um die erforderlichen Funktionen bereitzustellen.

[since 6.0] enum QModbusDevice::IntermediateError

Diese Enumeration 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 jedoch nicht mit der offenen Anfrage überein, wahrscheinlich weil der Funktionscode der PDU nicht übereinstimmte.

Wenn einer der oben genannten Zwischenfehler aufgetreten ist, ist der Frame wahrscheinlich so lange vorhanden, bis die maximale Anzahl an Wiederholungsversuchen erreicht ist.

Die Liste der Zwischenfehler kann über die Funktion „ QModbusReply -Zwischenfehler“ eingesehen werden.

Diese Enumeration wurde in Qt 6.0 eingeführt.

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

enum QModbusDevice::State

Diese Enumeration beschreibt alle möglichen Gerätestatus.

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

Dokumentation der Member-Funktionen

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

Erstellt ein Modbus-Gerät mit dem angegebenen „ parent “.

[virtual noexcept] QModbusDevice::~QModbusDevice()

Löscht die Instanz „ QModbusDevice “

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

Diese Funktion ist für das Schließen der Modbus-Verbindung zuständig. Die Implementierung muss sicherstellen, dass die Methode ` state()` der Instanz auf ` QModbusDevice::UnconnectedState` gesetzt wird.

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 “. Für die endgültige Bestätigung des Verbindungserfolgs muss sich der Wert von „ state()“ auf „ QModbusDevice::ConnectedState “ ändern.

Diese Funktion ruft im Rahmen ihrer Implementierung „ open()“ auf.

Siehe auch open().

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

Gibt den Wert zurück, der der angegebenen Verbindung „ parameter “ zugeordnet ist. Der zurückgegebene Wert kann leer sein.

Standardmäßig wird der „ QModbusDevice “ mit einigen gängigen Werten initialisiert. Die Einstellungen für den seriellen Anschluss lauten: gerade Parität, eine Baudrate von 19.200 Bit pro Sekunde, acht Datenbits und ein Stoppbit. Die Netzwerkeinstellungen sind auf den lokalen Host als Host-Adresse und Port 502 festgelegt.

Hinweis: Damit eine serielle Verbindung hergestellt werden kann, muss die „ SerialPortNameParameter “ auf einen gültigen Kommunikationsport eingestellt sein. Informationen zu gültigen seriellen Ports finden Sie unter QSerialPortInfo.

Hinweis: Wenn das Gerät bereits angeschlossen ist, werden die Einstellungen erst nach dem erneuten Anschließen des Geräts berücksichtigt.

Siehe auch „ setConnectionParameter()“ und „ ConnectionParameter “.

QIODevice *QModbusDevice::device() const

Gibt den zugrunde liegenden „ QIODevice “ zurück, der für die Modbus-Kommunikation verwendet wird, oder „ nullptr “, falls das Gerät noch nicht vollständig initialisiert wurde.

Hinweis: SpeichernSie keinen Zeiger auf das zugrunde liegende Gerät, da dieser jederzeit ungültig werden kann.

void QModbusDevice::disconnectDevice()

Trennt die Verbindung zum Gerät.

Diese Funktion ruft im Rahmen ihrer Implementierung die Methode ` 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 vom Typ „ 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 Verbindungsaufbau ` true ` zurückgibt; andernfalls wird ` false` zurückgegeben.

Die Implementierung muss sicherstellen, dass die Methode ` state()` der Instanz bei Erfolg auf ` QModbusDevice::ConnectingState ` oder ` QModbusDevice::ConnectedState ` gesetzt wird; andernfalls auf ` QModbusDevice::UnconnectedState`. Typischerweise wird ` QModbusDevice::ConnectingState ` verwendet, wenn der Verbindungsvorgang asynchron Rückmeldung gibt, 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 “. Falls die „ parameter “ bereits existiert, wird der bisherige 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)

Legt den Fehlerstatus des Geräts fest. Modbus-Geräteimplementierungen müssen diese Funktion im Fehlerfall verwenden, um den Typ „ error “ und den beschreibenden Wert „ errorText “ festzulegen.

Siehe auch error() und QModbusDevice::Error.

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

Setzt den Status des Geräts auf „ newState “. Modbus-Geräteimplementierungen müssen diese Funktion verwenden, um den Gerätestatus zu aktualisieren.

Siehe auch „ state()“.

QModbusDevice::State QModbusDevice::state() const

Gibt den aktuellen Status 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()“.

© 2026 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.