QModbusRtuSerialServer Class
Die Klasse QModbusRtuSerialServer repräsentiert einen Modbus-Server, der eine serielle Schnittstelle für die Kommunikation mit dem Modbus-Client verwendet. Mehr...
Header: | #include <QModbusRtuSerialServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
Seit: | Qt 6.2 |
Vererbt: | QModbusServer |
Öffentliche Funktionen
QModbusRtuSerialServer(QObject *parent = nullptr) | |
virtual | ~QModbusRtuSerialServer() |
(since 6.2) int | interFrameDelay() const |
(since 6.2) void | setInterFrameDelay(int microseconds) |
Reimplementierte öffentliche Funktionen
virtual bool | processesBroadcast() const override |
Reimplementierte geschützte Funktionen
virtual void | close() override |
virtual bool | open() override |
virtual QModbusResponse | processRequest(const QModbusPdu &request) override |
Detaillierte Beschreibung
Die Kommunikation über Modbus erfordert die Interaktion zwischen einer einzelnen Modbus-Client-Instanz und mehreren Modbus-Servern. Diese Klasse stellt die Modbus-Server-Implementierung über eine serielle Schnittstelle bereit.
Da mehrere Modbus-Server-Instanzen gleichzeitig mit einem Modbus-Client interagieren können (über einen seriellen Bus), werden die Server durch ihre serverAddress() identifiziert.
Dokumentation der Mitgliedsfunktionen
[explicit]
QModbusRtuSerialServer::QModbusRtuSerialServer(QObject *parent = nullptr)
Konstruiert einen QModbusRtuSerialServer mit dem angegebenen parent. Die Voreinstellung serverAddress ist 1
.
[virtual noexcept]
QModbusRtuSerialServer::~QModbusRtuSerialServer()
Zerstört die Instanz QModbusRtuSerialServer.
[override virtual protected]
void QModbusRtuSerialServer::close()
Reimplements: QModbusDevice::close().
[since 6.2]
int QModbusRtuSerialServer::interFrameDelay() const
Gibt die Anzahl der Mikrosekunden für das stille Intervall zwischen zwei aufeinanderfolgenden Modbus-Nachrichten zurück.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch setInterFrameDelay().
[override virtual protected]
bool QModbusRtuSerialServer::open()
Reimplements: QModbusDevice::open().
Hinweis: Beim Aufruf dieser Funktion werden bereits gepufferte Daten von der seriellen Schnittstelle entfernt.
[override virtual protected]
QModbusResponse QModbusRtuSerialServer::processRequest(const QModbusPdu &request)
Reimplements: QModbusServer::processRequest(const QModbusPdu &request).
Verarbeitet die von request angegebene Modbus-Client-Anfrage und gibt eine Modbus-Antwort zurück.
Die Modbus-Funktion QModbusRequest::EncapsulatedInterfaceTransport mit MEI Typ 13 (0x0D) CANopen General Reference wird herausgefiltert, da es sich normalerweise nur um Modbus TCP oder Modbus serial ASCII handelt.
Eine Anfrage an den seriellen RTU-Server wird mit einer Modbus-Ausnahmeantwort mit dem Ausnahmecode QModbusExceptionResponse::IllegalFunction beantwortet.
[override virtual]
bool QModbusRtuSerialServer::processesBroadcast() const
Reimplements: QModbusServer::processesBroadcast() const.
[since 6.2]
void QModbusRtuSerialServer::setInterFrameDelay(int microseconds)
Legt die Anzahl von microseconds für das stille Intervall zwischen zwei aufeinanderfolgenden Modbus-Nachrichten fest. Standardmäßig verwendet die Klassenimplementierung einen vorberechneten Wert gemäß der Modbus-Spezifikation. Eine aktive oder laufende Verbindung ist von solchen Verzögerungsänderungen nicht betroffen.
Hinweis: Wenn microseconds auf -1 gesetzt ist oder microseconds kleiner als die vorberechnete Verzögerung ist, wird dieser vorberechnete Wert als Rahmenverzögerung verwendet.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch interFrameDelay().
© 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.