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: |
Ö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) |
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:
| Konstante | Wert | Beschreibung |
|---|---|---|
QModbusDevice::SerialPortNameParameter | 0 | Dieser Parameter enthält den für die Gerätekommunikation verwendeten seriellen Anschluss, z. B. COM1. QString |
QModbusDevice::SerialParityParameter | 1 | Dieser Parameter enthält den Modus für die Paritätsprüfung. QSerialPort::Parity |
QModbusDevice::SerialBaudRateParameter | 2 | Dieser Parameter enthält die Datenübertragungsrate für die Kommunikation. QSerialPort::BaudRate |
QModbusDevice::SerialDataBitsParameter | 3 | Dieser Parameter gibt die Datenbits in einem Frame an. QSerialPort::DataBits |
QModbusDevice::SerialStopBitsParameter | 4 | Dieser Parameter gibt die Anzahl der Stoppbits in einem Frame an. QSerialPort::StopBits |
QModbusDevice::NetworkPortParameter | 5 | Dieser Parameter enthält den Netzwerkport. int |
QModbusDevice::NetworkAddressParameter | 6 | Dieser Parameter enthält die Host-Adresse für die Netzwerkkommunikation. QString |
enum QModbusDevice::Error
Diese Enumeration beschreibt alle möglichen Fehlerzustände.
| Konstante | Wert | Beschreibung |
|---|---|---|
QModbusDevice::NoError | 0 | Es sind keine Fehler aufgetreten. |
QModbusDevice::ReadError | 1 | Bei einem Lesevorgang ist ein Fehler aufgetreten. |
QModbusDevice::WriteError | 2 | Bei einem Schreibvorgang ist ein Fehler aufgetreten. |
QModbusDevice::ConnectionError | 3 | Beim Versuch, das Backend zu öffnen, ist ein Fehler aufgetreten. |
QModbusDevice::ConfigurationError | 4 | Beim Versuch, einen Konfigurationsparameter festzulegen, ist ein Fehler aufgetreten. |
QModbusDevice::TimeoutError | 5 | Während der E/A ist ein Timeout aufgetreten. Ein E/A-Vorgang wurde nicht innerhalb eines vorgegebenen Zeitraums abgeschlossen. |
QModbusDevice::ProtocolError | 6 | Es ist ein Modbus-spezifischer Protokollfehler aufgetreten. |
QModbusDevice::ReplyAbortedError | 7 | Die Antwort wurde aufgrund einer Unterbrechung der Verbindung zum Gerät abgebrochen. |
QModbusDevice::UnknownError | 8 | Es ist ein unbekannter Fehler aufgetreten. |
QModbusDevice::InvalidResponseError (since Qt 6.4) | 9 | Beim 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QModbusDevice::ResponseCrcError | 0 | Es wurde eine Modbus-Antwort mit einem falschen CRC empfangen. |
QModbusDevice::ResponseRequestMismatch | 1 | Eine 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QModbusDevice::UnconnectedState | 0 | Das Gerät ist nicht verbunden. |
QModbusDevice::ConnectingState | 1 | Das Gerät wird gerade verbunden. |
QModbusDevice::ConnectedState | 2 | Das Gerät ist mit dem Modbus-Netzwerk verbunden. |
QModbusDevice::ClosingState | 3 | Das 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.
© 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.