QModbusTcpServer Class
Die Klasse „QModbusTcpServer“ stellt einen Modbus-Server dar, der für die Kommunikation mit dem Modbus-Client einen TCP-Server nutzt. Mehr...
| Header: | #include <QModbusTcpServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
| qmake: | QT += serialbus |
| Erbt von: | QModbusServer |
Öffentliche Funktionen
| QModbusTcpServer(QObject *parent = nullptr) | |
| virtual | ~QModbusTcpServer() |
| void | installConnectionObserver(QModbusTcpConnectionObserver *observer) |
Signale
| void | modbusClientDisconnected(QTcpSocket *modbusClient) |
Neu implementierte 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 einem einzelnen Modbus-Server. Diese Klasse stellt die Modbus-Server-Implementierung über einen TCP-Server bereit.
Modbus-TCP-Netzwerke können mehrere Server umfassen. Der Lese- und Schreibzugriff auf die Server erfolgt durch ein Client-Gerät, das durch die Klasse „ QModbusTcpClient “ repräsentiert wird.
Dokumentation der Mitgliedsfunktionen
[explicit] QModbusTcpServer::QModbusTcpServer(QObject *parent = nullptr)
Erstellt einen QModbusTcpServer mit der angegebenen „ parent “. Die Voreinstellung für „ serverAddress “ lautet „ 255 “.
[virtual noexcept] QModbusTcpServer::~QModbusTcpServer()
Löscht die Instanz von „ QModbusTcpServer “.
[override virtual protected] void QModbusTcpServer::close()
Implementiert: QModbusDevice::close().
void QModbusTcpServer::installConnectionObserver(QModbusTcpConnectionObserver *observer)
Ruft eine ` observer ` auf, mit der Benachrichtigungen abgerufen werden können, wenn ein neuer TCP-Client eine Verbindung zu dieser Serverinstanz herstellt. Darüber hinaus kann die Funktion ` observer ` verwendet werden, um die eingehende TCP-Verbindung abzulehnen.
QModbusTcpServer Übernimmt die Verantwortung für den angegebenen „ observer “. Alle zuvor festgelegten Beobachter werden gelöscht. Der Beobachter kann deinstalliert werden, indem diese Funktion mit „ nullptr “ als Parameter aufgerufen wird.
Siehe auch ` QModbusTcpConnectionObserver`.
[signal] void QModbusTcpServer::modbusClientDisconnected(QTcpSocket *modbusClient)
Dieses Signal wird ausgegeben, wenn ein aktuell verbundener TCP-basierter modbusClient die Verbindung zu diesem Modbus-TCP-Server trennt. Beachten Sie, dass möglicherweise mehrere TCP-Clients gleichzeitig verbunden sind.
Benachrichtigungen über eingehende neue Verbindungen können durch die Installation eines „ QModbusTcpConnectionObserver “ über installConnectionObserver() empfangen werden.
Siehe auch „ installConnectionObserver “.
[override virtual protected] bool QModbusTcpServer::open()
Implementiert: QModbusDevice::open().
[override virtual protected] QModbusResponse QModbusTcpServer::processRequest(const QModbusPdu &request)
Implementiert: ` QModbusServer::processRequest` (`const QModbusPdu &request`).
Verarbeitet die durch ` request ` angegebene Modbus-Client-Anfrage und gibt eine Modbus-Antwort zurück.
Die folgenden Modbus-Funktionscodes werden herausgefiltert, da sie gemäß der Modbus-Anwendungsprotokollspezifikation 1.1b nur über die serielle Schnittstelle übertragen werden dürfen:
- QModbusRequest::ReadExceptionStatus
- QModbusRequest::Diagnostics
- QModbusRequest::GetCommEventCounter
- QModbusRequest::GetCommEventLog
- QModbusRequest::ReportServerId
Eine Anfrage an den TCP-Server wird mit einer Modbus-Ausnahmeantwort mit dem Ausnahmecode QModbusExceptionResponse::IllegalFunction beantwortet.
© 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.