QModbusClient Class
Die Klasse „QModbusClient“ dient als Schnittstelle zum Senden von Modbus-Anfragen. Mehr...
| Header: | #include <QModbusClient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Erbt von: | QModbusDevice |
| Vererbt an: |
Öffentliche Funktionen
| QModbusClient(QObject *parent = nullptr) | |
| int | numberOfRetries() const |
| QModbusReply * | sendRawRequest(const QModbusRequest &request, int serverAddress) |
| QModbusReply * | sendReadRequest(const QModbusDataUnit &read, int serverAddress) |
| QModbusReply * | sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress) |
| QModbusReply * | sendWriteRequest(const QModbusDataUnit &write, int serverAddress) |
| void | setNumberOfRetries(int number) |
| void | setTimeout(int newTimeout) |
| int | timeout() const |
Signale
| void | timeoutChanged(int newTimeout) |
Geschützte Funktionen
| virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
| virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
Ausführliche Beschreibung
Die QModbusClient-API basiert auf einem einzigen QModbusClient-Objekt, das die allgemeinen Konfigurationen und Einstellungen für die von ihm gesendeten Anfragen enthält. Ein einziges QModbusClient-Objekt sollte für die gesamte Qt-Anwendung ausreichen.
Sobald ein QModbusClient-Objekt erstellt wurde, kann die Anwendung es zum Senden von Anfragen verwenden. Das zurückgegebene Objekt dient dazu, alle Daten abzurufen, die als Antwort auf die entsprechende Anfrage zurückgegeben werden.
QModbusClient verfügt über eine asynchrone API. Wenn der „finished“-Slot aufgerufen wird, ist der übergebene Parameter das „ QModbusReply “-Objekt, das die PDU sowie Metadaten (Adressierung usw.) enthält.
Hinweis: QModbusClient stellt die empfangenen Anfragen in eine Warteschlange. Die Anzahl der parallel ausgeführten Anfragen hängt vom Protokoll ab. Beispielsweise sendet das HTTP-Protokoll auf Desktop-Plattformen 6 Anfragen parallel für eine Host/Port-Kombination.
Dokumentation der Mitgliedsfunktionen
[explicit] QModbusClient::QModbusClient(QObject *parent = nullptr)
Erstellt ein Modbus-Client-Gerät mit dem angegebenen „ parent “.
int QModbusClient::numberOfRetries() const
Gibt die Anzahl der Wiederholungsversuche zurück, die ein Client durchführt, bevor eine Anfrage fehlschlägt. Der Standardwert ist auf „ 3 “ festgelegt.
Siehe auch ` setNumberOfRetries()`.
[virtual protected] bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
Muss durch eine benutzerdefinierte Modbus-Client-Implementierung umgesetzt werden. Die Standardimplementierung ignoriert „ response “ und „ data “. Sie gibt stets „false“ zurück, um einen Fehler anzuzeigen.
[virtual protected] bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Verarbeitet eine Modbus-Server- response und speichert die dekodierten Informationen in „ data “. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.
Hinweis: Die Standardimplementierung unterstützt nicht alle FunctionCodes. Überschreiben Sie diese Methode in einer benutzerdefinierten Modbus-Client-Implementierung, um die benötigten Funktionen zu implementieren.
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
Sendet eine Modbus-Rohanfrage ( request). Eine Rohanfrage kann alles enthalten, was in den Datenbereich der Modbus-PDU passt und einen gültigen Funktionscode aufweist. Die einzige vor dem Senden durchgeführte Prüfung ist daher die Gültigkeitsprüfung, siehe QModbusPdu::isValid. Wenn kein Fehler aufgetreten ist, gibt die Funktion einen neuen gültigen Modbus-PDU-Bezugspunkt ( QModbusReply) zurück; andernfalls nullptr. Modbus-Netzwerke können mehrere Server haben, wobei jeder Server einen eindeutigen Modbus-PDU-Bezugspunkt ( serverAddress) besitzt.
Siehe auch QModbusReply::rawResult().
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
Sendet eine Anforderung zum Lesen des Inhalts der Daten, auf die „ read “ verweist. Gibt ein neues gültiges „ QModbusReply “-Objekt zurück, wenn kein Fehler aufgetreten ist; andernfalls „nullptr“. Ein Modbus-Netzwerk kann mehrere Server umfassen, wobei jeder Server über eine eindeutige „ serverAddress “-Adresse verfügt.
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Sendet eine Anforderung zum Auslesen des Inhalts der Daten, auf die read verweist, und zum Ändern des Inhalts der Daten, auf die write verweist, unter Verwendung des Modbus-Funktionscodes QModbusPdu::ReadWriteMultipleRegisters. Gibt ein neues gültiges QModbusReply -Objekt zurück, wenn kein Fehler aufgetreten ist, andernfalls nullptr. Das Modbus-Netzwerk kann mehrere Server umfassen, wobei jeder Server über ein eindeutiges serverAddress verfügt.
Hinweis: Das Senden dieser Art von Anfrage ist nur gültig, wenn sowohl ` read ` als auch ` write ` vom Typ ` QModbusDataUnit::HoldingRegisters` sind.
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
Sendet eine Anfrage zur Änderung des Inhalts der Daten, auf die „ write “ verweist. Gibt ein neues gültiges „ QModbusReply “-Objekt zurück, wenn kein Fehler aufgetreten ist; andernfalls „nullptr“. Ein Modbus-Netzwerk kann mehrere Server umfassen, wobei jeder Server über eine eindeutige „ serverAddress “ verfügt.
void QModbusClient::setNumberOfRetries(int number)
Legt die Anzahl der Wiederholungsversuche ( number ) fest, die ein Client durchführt, bevor eine Anfrage fehlschlägt. Der Standardwert ist auf „ 3 “ gesetzt.
Hinweis: Der neue Wert muss größer oder gleich „ 0 “ sein. Eine Änderung dieser Eigenschaft wirkt sich nur auf neue Anfragen aus, nicht auf bereits geplante.
Siehe auch ` numberOfRetries()`.
void QModbusClient::setTimeout(int newTimeout)
Legt das Zeitlimit „ newTimeout “ für diese „ QModbusClient “-Instanz fest. Das Mindestzeitlimit beträgt 10 ms.
Das Timeout wird vom Client verwendet, um zu bestimmen, wie lange er auf eine Antwort vom Server wartet. Wird die Antwort nicht innerhalb des festgelegten Timeouts empfangen, wird der „ TimeoutError “ gesetzt.
Bereits aktive/laufende Timeouts sind von solchen Änderungen der Timeout-Dauer nicht betroffen.
Siehe auch „ timeout “ und „ timeoutChanged()“.
int QModbusClient::timeout() const
Gibt den von dieser „ QModbusClient “-Instanz verwendeten Timeout-Wert in Millisekunden zurück. Ein Timeout wird durch „ TimeoutError “ angegeben. Der Standardwert beträgt 1000 ms.
Siehe auch „ setTimeout “ und „ timeoutChanged()“.
[signal] void QModbusClient::timeoutChanged(int newTimeout)
Dieses Signal wird ausgelöst, wenn das von dieser „ QModbusClient “-Instanz verwendete Timeout geändert wird. Das neue Antwort-Timeout für das Gerät wird als „ newTimeout “ übergeben.
Siehe auch setTimeout().
© 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.