QModbusClient Class
QModbusClient クラスは Modbus リクエストを送信するインターフェースです。詳細...
ヘッダー | #include <QModbusClient> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialBus) target_link_libraries(mytarget PRIVATE Qt6::SerialBus) |
qmake: | QT += serialbus |
を継承する: | QModbusDevice |
によって継承される: |
パブリック関数
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 |
シグナル
void | timeoutChanged(int newTimeout) |
保護された関数
virtual bool | processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data) |
virtual bool | processResponse(const QModbusResponse &response, QModbusDataUnit *data) |
詳細説明
QModbusClient API は 1 つの QModbusClient オブジェクトを中心に構築され、共通のコンフィギュレーションと送信リクエストの設定を保持します。1 つの QModbusClient で Qt アプリケーション全体には十分です。
QModbusClient オブジェクトが作成されると、アプリケーションはそれを使用してリク エストを送信することができます。返されたオブジェクトは、対応するリクエストのレスポンスとして返されたデータを取得するために使用されます。
QModbusClient は非同期 API を持っています。完了スロットが呼び出されると、パラメータとして PDU とメタデータ(アドレス指定など)を含むQModbusReply オブジェクトを受け取ります。
注意:QModbusClient は受信したリクエストをキューに入れます。並列に実行されるリクエスト数はプロトコルに依存します。例えば、デスクトッ プ・プラットフォームの HTTP プロトコルは、1 つのホスト/ポートの組み合わせに対して 6 つのリク エストを並列に発行します。
メンバー関数ドキュメント
[explicit]
QModbusClient::QModbusClient(QObject *parent = nullptr)
指定されたparent で Modbus クライアント・デバイスを構築します。
int QModbusClient::numberOfRetries() const
リクエストが失敗するまでにクライアントが行う再試行回数を返す。デフォルト値は3
です。
setNumberOfRetries()も参照 。
[virtual protected]
bool QModbusClient::processPrivateResponse(const QModbusResponse &response, QModbusDataUnit *data)
カスタムの Modbus クライアント実装によって実装される。デフォルトの実装はresponse とdata を無視します。 エラーを示すために常に false を返します。
[virtual protected]
bool QModbusClient::processResponse(const QModbusResponse &response, QModbusDataUnit *data)
Modbus サーバーresponse を処理し、デコードされた情報をdata に格納する。成功した場合はtrue
を返し、そうでない場合はfalse
を返します。
注: デフォルトの実装では、すべてのFunctionCodeをサポートしていません。カスタムの Modbus クライアント実装でこのメソッドをオーバーライドして、必要な機能を処理します。
QModbusReply *QModbusClient::sendRawRequest(const QModbusRequest &request, int serverAddress)
生の Modbusrequest を送信します。生リクエストは Modbus PDU データ・セクションに適合し、有効なファンクション・コード を持つものであれば何でも含むことができます。送信前に行われる唯一のチェックは、QModbusPdu::isValid を参照してください。エラーがなければ、関数は新しい有効なQModbusReply を返します。Modbus ネットワークは複数のサーバーを持つことができ、各サーバーはユニークなserverAddress を持っています。
QModbusReply::rawResult()も参照してください 。
QModbusReply *QModbusClient::sendReadRequest(const QModbusDataUnit &read, int serverAddress)
read が指すデータの内容を読み取るリクエストを送る。エラーが発生しなければ新しい有効なQModbusReply オブジェクトを返し、そうでなければ nullptr を返します。Modbus ネットワークには複数のサーバーがあり、各サーバーは一意のserverAddress を持っています。
QModbusReply *QModbusClient::sendReadWriteRequest(const QModbusDataUnit &read, const QModbusDataUnit &write, int serverAddress)
Modbus ファンクション・コードQModbusPdu::ReadWriteMultipleRegisters を使用して、read が指 すデータの内容を読み、write が指すデータの内容を変更する要求を送 信する。エラーが発生しなければ新しい有効なQModbusReply オブジェクトを返し、そうでなければ nullptr を返します。Modbus ネットワークには複数のサーバーがあり、各サーバーはユニークなserverAddress を持っています。
注意: :この種のリクエストの送信は、read とwrite の両方がQModbusDataUnit::HoldingRegisters タイプである場合にのみ有効です。
QModbusReply *QModbusClient::sendWriteRequest(const QModbusDataUnit &write, int serverAddress)
write が指すデータの内容を変更するリクエストを送る。エラーが発生しなければ新しい有効なQModbusReply オブジェクトを返し、そうでなければ nullptr を返します。Modbus ネットワークには複数のサーバーがあり、各サーバーは一意のserverAddress を持っています。
void QModbusClient::setNumberOfRetries(int number)
リクエストが失敗するまでにクライアントが実行する再試行回数number を設定する。デフォルト値は3
に設定されています。
注意: 新しい値は0
以上でなければなりません。このプロパティを変更すると、新しいリクエストにのみ影響し、 すでにスケジュールされているリクエストには影響しません。
numberOfRetries()も参照のこと 。
void QModbusClient::setTimeout(int newTimeout)
このQModbusClient インスタンスのnewTimeout を設定する。タイムアウトの最小値は10ミリ秒である。
タイムアウトは、クライアントがサーバからの応答を待つ時間を決定するために使用される。必要なタイムアウト時間内に応答が受信されない場合、TimeoutError が設定される。
すでにアクティブ/実行中のタイムアウトは、このようなタイムアウト時間の 変更の影響を受けない。
timeout およびtimeoutChanged()も参照の こと。
int QModbusClient::timeout() const
このQModbusClient インスタンスが使用するタイムアウト値を ms 単位で返す。タイムアウトはTimeoutError で示される。 デフォルト値は1000msである。
setTimeout およびtimeoutChanged()も参照してください 。
[signal]
void QModbusClient::timeoutChanged(int newTimeout)
このシグナルは、このQModbusClient インスタンスで使用されるタイムアウトが変更されたときに発行される。デバイスの新しい応答タイムアウトはnewTimeout として渡される。
setTimeout()も参照 。
© 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.