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: |
Ö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 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:
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 gibt den Paritätsprüfungsmodus an. QSerialPort::Parity |
QModbusDevice::SerialBaudRateParameter | 2 | Dieser Parameter enthält die Daten-Baudrate für die Kommunikation. QSerialPort::BaudRate |
QModbusDevice::SerialDataBitsParameter | 3 | Dieser Parameter enthält die Datenbits in einem Rahmen. QSerialPort::DataBits |
QModbusDevice::SerialStopBitsParameter | 4 | Dieser Parameter enthält die Anzahl der Stoppbits in einem Rahmen. QSerialPort::StopBits |
QModbusDevice::NetworkPortParameter | 5 | Dieser Parameter enthält den Netzwerkanschluss. int |
QModbusDevice::NetworkAddressParameter | 6 | Dieser Parameter enthält die Host-Adresse für die Netzwerkkommunikation. QString |
enum QModbusDevice::Error
Diese Aufzählung beschreibt alle möglichen Fehlerzustände.
Konstante | Wert | Beschreibung |
---|---|---|
QModbusDevice::NoError | 0 | Es sind keine Fehler aufgetreten. |
QModbusDevice::ReadError | 1 | Während eines Lesevorgangs ist ein Fehler aufgetreten. |
QModbusDevice::WriteError | 2 | Während eines Schreibvorgangs ist ein Fehler aufgetreten. |
QModbusDevice::ConnectionError | 3 | Beim Versuch, das Backend zu öffnen, ist ein Fehler aufgetreten. |
QModbusDevice::ConfigurationError | 4 | Beim Versuch, einen Konfigurationsparameter zu setzen, ist ein Fehler aufgetreten. |
QModbusDevice::TimeoutError | 5 | Während der E/A ist eine Zeitüberschreitung aufgetreten. Ein E/A-Vorgang wurde nicht innerhalb eines bestimmten Zeitrahmens abgeschlossen. |
QModbusDevice::ProtocolError | 6 | Ein Modbus-spezifischer Protokollfehler ist aufgetreten. |
QModbusDevice::ReplyAbortedError | 7 | Die Antwort wurde aufgrund einer Verbindungsunterbrechung des Geräts abgebrochen. |
QModbusDevice::UnknownError | 8 | Ein unbekannter Fehler ist aufgetreten. |
QModbusDevice::InvalidResponseError (since Qt 6.4) | 9 | Beim 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.
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 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.
Konstante | Wert | Beschreibung |
---|---|---|
QModbusDevice::UnconnectedState | 0 | Das Gerät ist nicht angeschlossen. |
QModbusDevice::ConnectingState | 1 | Das Gerät wird gerade angeschlossen. |
QModbusDevice::ConnectedState | 2 | Das Gerät ist mit dem Modbus-Netzwerk verbunden. |
QModbusDevice::ClosingState | 3 | Das 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.
© 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.