QModbusClient Class

QModbusClient クラスは Modbus リクエストを送信するインターフェースです。詳細...

Header: #include <QModbusClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialBus)
target_link_libraries(mytarget PRIVATE Qt6::SerialBus)
qmake: QT += serialbus
Inherits: QModbusDevice
Inherited By:

QModbusRtuSerialClient and QModbusTcpClient

パブリック関数

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 クライアント実装によって実装されます。デフォルトの実装はresponsedata を無視します。 エラーを示すために常に 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 を持っています。

注意: :この種のリクエストの送信は、readwrite の両方が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 で示される。 デフォルト値は 1000 ミリ秒である。

setTimeout およびtimeoutChanged()も参照

[signal] void QModbusClient::timeoutChanged(int newTimeout)

このシグナルは、このQModbusClient インスタンスで使用されるタイムアウトが変更されたときに発行される。デバイスの新しい応答タイムアウトがnewTimeout として渡される。

setTimeout()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。