QOpcUaClient Class

QOpcUaClientはOPC UAサーバーとのやり取りを可能にします。詳細...

ヘッダー #include <QOpcUaClient>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpcUa)
target_link_libraries(mytarget PRIVATE Qt6::OpcUa)
qmake: QT += opcua
継承: QObject

パブリックな型

enum ClientError { NoError, InvalidUrl, AccessDenied, ConnectionError, UnknownError, UnsupportedAuthenticationInformation }
enum ClientState { Disconnected, Connecting, Connected, Closing }

プロパティ

  • error : const ClientError
  • state : const ClientState

公共機能

virtual ~QOpcUaClient()
bool addNode(const QOpcUaAddNodeItem &nodeToAdd)
bool addReference(const QOpcUaAddReferenceItem &referenceToAdd)
(since QtOpcUa 5.13) QOpcUaApplicationIdentity applicationIdentity() const
const QOpcUaAuthenticationInformation &authenticationInformation() const
QString backend() const
(since QtOpcUa 5.13) void connectToEndpoint(const QOpcUaEndpointDescription &endpoint)
(since 6.6) QOpcUaConnectionSettings connectionSettings() const
bool deleteNode(const QString &nodeId, bool deleteTargetReferences = true)
bool deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete)
void disconnectFromEndpoint()
QOpcUaEndpointDescription endpoint() const
QOpcUaClient::ClientError error() const
bool findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList())
bool isNamespaceAutoupdateEnabled() const
QStringList namespaceArray() const
int namespaceAutoupdateInterval() const
QOpcUaNode *node(const QOpcUaExpandedNodeId &expandedNodeId)
QOpcUaNode *node(const QString &nodeId)
(since QtOpcUa 5.13) QOpcUaPkiConfiguration pkiConfiguration() const
QOpcUaQualifiedName qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const
(since 6.3) QOpcUaHistoryReadResponse *readHistoryData(const QOpcUaHistoryReadRawRequest &request)
(since 6.7) QOpcUaHistoryReadResponse *readHistoryEvents(const QOpcUaHistoryReadEventRequest &request)
bool readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead)
(since 6.7) bool registerNodes(const QStringList &nodesToRegister)
bool requestEndpoints(const QUrl &url)
QString resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const
(since QtOpcUa 5.13) void setApplicationIdentity(const QOpcUaApplicationIdentity &identity)
void setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation)
(since 6.6) void setConnectionSettings(const QOpcUaConnectionSettings &connectionSettings)
void setNamespaceAutoupdate(bool isEnabled)
void setNamespaceAutoupdateInterval(int interval)
(since QtOpcUa 5.13) void setPkiConfiguration(const QOpcUaPkiConfiguration &config)
QOpcUaClient::ClientState state() const
(since QtOpcUa 5.14) QStringList supportedSecurityPolicies() const
(since QtOpcUa 5.14) QList<QOpcUaUserTokenPolicy::TokenType> supportedUserTokenTypes() const
(since 6.7) bool unregisterNodes(const QStringList &nodesToUnregister)
bool updateNamespaceArray()
bool writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite)

シグナル

void addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode)
void addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
(since QtOpcUa 5.13) void connectError(QOpcUaErrorState *errorState)
void connected()
void deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode)
void deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)
void disconnected()
void endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
void errorChanged(QOpcUaClient::ClientError error)
void findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)
void namespaceArrayChanged(QStringList namespaces)
void namespaceArrayUpdated(QStringList namespaces)
(since QtOpcUa 5.13) void passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid)
void readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult)
(since 6.7) void registerNodesFinished(const QStringList &nodesToRegister, const QStringList &registeredNodeIds, QOpcUa::UaStatusCode statusCode)
void stateChanged(QOpcUaClient::ClientState state)
(since 6.7) void unregisterNodesFinished(const QStringList &nodesToUnregister, QOpcUa::UaStatusCode statusCode)
void writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult)

詳細説明

QOpcUaClient

QOpcUaClient は、OPC UA対応のデバイスやアプリケーションと通信するための基本的なクライアント機能を実装しています。これには、既知のサーバーのディスカバリー・サーバーへの問い合わせ、サーバーからのエンドポイントのリストの要求、接続と切断が含まれます。

サーバーへの接続に成功した後、QOpcUaClientは、OPC UAサーバー上のノードとの更なるやり取りを可能にするQOpcUaNode オブジェクトを取得することができます。複数のノードに関する操作のために、QOpcUaClientは、サーバーへの単一のリクエストで複数のノードの複数の属性の読み取りをサポートするAPIを提供します。

QOpcUaClientは、接続成功後に作成されるサーバーのネームスペース配列のローカルコピーも保持します。この情報は、接続が継続している間、照会または更新することができます。名前空間配列のコピーは、拡張ノード ID の解決と、名前空間 URI からの修飾名の作成にも使用されます。

ノードのアドレス指定

ノードとノード ID については、QOpcUaNode を参照してください。

使用方法

QOpcUaProvider を使用してQOpcUaClient を作成し、requestEndpoints を使用してサーバーからエンドポイントのリストを要求し、connectToEndpoint() を呼び出して利用可能なエンドポイントの 1 つに接続します。接続が確立されると、ルート・ノードのQOpcUaNode オブジェクトが要求されます。

QOpcUaProviderprovider;if(provider.availableBackends().isEmpty())return;QOpcUaClient *client =provider.createClient(provider.availableBackends()[0]);if(!client)return;// stateChangedシグナルに接続します。ラムダの代わりにQObjectの互換スロットを使用することができます。QObject::connect(client, &QOpcUaClient::stateChanged, [client](QOpcUaClient::ClientState state) { // stateChangedシグナルに接続する。    qDebug() << "Client state changed:" << state;
   if(state== QOpcUaClient::ClientState::Connected) { *ノード=クライアント->ノード("ns=0;i=84"); if (ノード)        QOpcUaNode*node =  client->node("ns=0;i=84");if(node)            qDebug() << "A node object has been created";
    } });QObject::connect(client, &QOpcUaClient::endpointsRequestFinished,[client](QList<QOpcUaEndpointDescription>エンドポイント)    qDebug() << "Endpoints returned:" << endpoints.count();
   if(endpoints.size()) client->connectToEndpoint(endpoints.first());// リストの最初のエンドポイントに接続}); client->requestEndpoints(QUrl("opc.tcp://127.0.0.1:4840"));// サーバからエンドポイントのリストを要求する

メンバー型ドキュメント

enum QOpcUaClient::ClientError

この列挙型は、クライアントの現在のエラー状態を指定する。

定数説明
QOpcUaClient::NoError0エラーは発生していません。
QOpcUaClient::InvalidUrl1接続先の url の指定に誤りがあるか、この url への接続に失敗しました。
QOpcUaClient::AccessDenied2ユーザ名/パスワードを使用したサーバへの接続に失敗しました。
QOpcUaClient::ConnectionError3接続でエラーが発生しました。
QOpcUaClient::UnknownError4不明なエラーが発生しました。
QOpcUaClient::UnsupportedAuthenticationInformation5指定された認証情報のタイプまたはデータはサポートされていません。

enum QOpcUaClient::ClientState

この列挙型は、クライアントの接続状態を指定する。

定数説明
QOpcUaClient::Disconnected0クライアントはサーバに接続していません。
QOpcUaClient::Connecting1クライアントはサーバに接続中です。
QOpcUaClient::Connected2クライアントはサーバに接続中です。
QOpcUaClient::Closing3クライアントはサーバーに接続しており、サーバーからの切断を要求しています。

プロパティの説明

[read-only] error : const ClientError

クライアントの現在のエラー状態を指定します。

アクセス関数:

QOpcUaClient::ClientError error() const

通知シグナル

void errorChanged(QOpcUaClient::ClientError error)

[read-only] state : const ClientState

クライアントの現在の接続状態を指定します。

アクセス関数:

QOpcUaClient::ClientState state() const

Notifier シグナル:

void stateChanged(QOpcUaClient::ClientState state)

メンバ関数ドキュメント

[virtual noexcept] QOpcUaClient::~QOpcUaClient()

QOpcUaClient インスタンスを破棄します。

bool QOpcUaClient::addNode(const QOpcUaAddNodeItem &nodeToAdd)

nodeToAdd で指定されたノードをサーバーに追加する。

非同期呼び出しが正常にディスパッチされた場合はtrue を返す。

操作の成功はaddNodeFinished() シグナルで返されます。

以下のコード例は、サーバ上に新しい Variable ノードを追加します:

QOpcUaNodeCreationAttributes attributes;
attributes.setDisplayName(QOpcUaLocalizedText("en", "My new Variable node"));
attributes.setDescription(QOpcUaLocalizedText("en", "A node which has been added at runtime"));
attributes.setValue(23.0, QOpcUa::Types::Double);
attributes.setDataTypeId(QOpcUa::ns0ID(QOpcUa::NodeIds::Namespace0::Double));
attributes.setValueRank(-2); // Scalar or array
attributes.setAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);
attributes.setUserAccessLevel(QOpcUa::AccessLevelBit::CurrentRead);

QOpcUaAddNodeItem item;
item.setParentNodeId(QOpcUaExpandedNodeId("ns=3;s=TestFolder"));
item.setReferenceTypeId(QOpcUa::nodeIdFromReferenceType(QOpcUa::ReferenceTypeId::Organizes));
item.setRequestedNewNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setBrowseName(QOpcUaQualifiedName(3, "MyNewVariableNode"));
item.setNodeClass(QOpcUa::NodeClass::Variable);
item.setNodeAttributes(attributes);

m_client->addNode(item);

deleteNode()、addNodeFinished()、QOpcUaAddNodeItemも参照して ください。

[signal] void QOpcUaClient::addNodeFinished(QOpcUaExpandedNodeId requestedNodeId, QString assignedNodeId, QOpcUa::UaStatusCode statusCode)

このシグナルは、addNode()操作の終了後に発行される。requestedNodeId は、addNode()呼び出しから要求されたノードIDであり、assignedNodeId は、サーバーが新しいノードに割り当てたノードIDである。statusCode は、操作の結果を含む。結果がBad の場合、assignedNodeId は空であり、サーバーのアドレス空間にノードは追加されていない。

bool QOpcUaClient::addReference(const QOpcUaAddReferenceItem &referenceToAdd)

referenceToAdd で記述されている参照をサーバーに追加する。

非同期呼び出しが正常にディスパッチされた場合はtrue を返す。

操作の成功は、addReferenceFinished() シグナルで返されます。

以下のコード例は、"Objects" フォルダにノードへの参照を追加します:

QOpcUaAddReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setTargetNodeClass(QOpcUa::NodeClass::Variable);

m_client->addReference(item);

deleteReference()、addReferenceFinished()、QOpcUaAddReferenceItemも参照

[signal] void QOpcUaClient::addReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)

このシグナルは、addReference ()操作の終了後に発せられる。sourceNodeId referenceTypeIdtargetNodeIdisForwardReference は、addReference() 呼び出しの値である。statusCode には操作の結果が格納される。

[since QtOpcUa 5.13] QOpcUaApplicationIdentity QOpcUaClient::applicationIdentity() const

このQOpcUaClient インスタンスのアプリケーション ID を返します。

この関数は QtOpcUa 5.13 で導入されました。

setApplicationIdentity()も参照してください

const QOpcUaAuthenticationInformation &QOpcUaClient::authenticationInformation() const

現在の認証情報を返します。

setAuthenticationInformation()も参照ください

QString QOpcUaClient::backend() const

QOpcUaClient のこのインスタンスが使用するバックエンドの名前を返します。

[signal, since QtOpcUa 5.13] void QOpcUaClient::connectError(QOpcUaErrorState *errorState)

このシグナルは、接続確立中にエラーが発生したときに発せられる。パラメータerrorState にはエラーに関する情報が含まれる。

クライアント側のエラーの場合、オブジェクトに対してQOpcUaErrorState::setIgnoreError を呼び出すことで、これらのエラーを無視することができます。

このシグナルに接続されたスロットの実行中、バックエンドは停止し、すべてのスロットが戻るのを待ちます。これにより、バックエンドが処理を続行する前に、ユーザダイアログをポップアップして、例えば未知の証明書を信頼するかどうかをエンドユーザに尋ねることができます。

この関数は QtOpcUa 5.13 で導入されました。

[invokable, since QtOpcUa 5.13] void QOpcUaClient::connectToEndpoint(const QOpcUaEndpointDescription &endpoint)

endpoint で指定された OPC UA エンドポイントに接続する。

QEndpointDescription endpointDescription;
...
client->connectToEndpoint(endpointDescription);

利用可能なエンドポイントのリストは、通常QOpcUaClient::requestEndpoints() を呼び出すことで得られます。

エンドポイントがユーザー名認証を必要とする場合、少なくともQOpcUaAuthenticationInformation でユーザー名を設定する必要があります。認証情報を設定する前にこの関数を呼び出すと、匿名認証が使用されます。

QOpcUaAuthenticationInformation authInfo;
authInfo.setUsernameAuthentication("user", "password");

client->setAuthenticationInformation(authInfo);

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

この関数は QtOpcUa 5.13 で導入されました。

connected(),stateChanged(),setAuthenticationInformation(),QOpcUaEndpointDescriptionも参照してください

[signal] void QOpcUaClient::connected()

このシグナルは、接続が確立されたときに発せられる。

[since 6.6] QOpcUaConnectionSettings QOpcUaClient::connectionSettings() const

このクライアントの接続設定を返します。

この関数は Qt 6.6 で導入されました。

setConnectionSettings()も参照してください

bool QOpcUaClient::deleteNode(const QString &nodeId, bool deleteTargetReferences = true)

ノード IDnodeId を持つノードをサーバーから削除する。deleteTargetReferencesfalse の場合、ソース・ノードnodeId を持つ参照のみが削除されます。deleteTargetReferencestrue の場合、nodeId をターゲットとする参照も削除されます。

非同期呼び出しが正常にディスパッチされた場合、true を返す。

操作の成功はdeleteNodeFinished() シグナルで返されます。

以下のコード例は、サーバからノードとそのノードへの参照をすべて削除します:

m_client->deleteNode(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"), true);

addNode() およびdeleteNodeFinished()も参照してください

[signal] void QOpcUaClient::deleteNodeFinished(QString nodeId, QOpcUa::UaStatusCode statusCode)

このシグナルは、deleteNode()操作の終了後に発せられる。nodeId は、deleteNode()呼び出しのノードID。statusCode は、操作の結果を含む。

bool QOpcUaClient::deleteReference(const QOpcUaDeleteReferenceItem &referenceToDelete)

サーバーからreferenceToDelete

非同期呼び出しが正常にディスパッチされた場合はtrue を返す。

操作の成功はdeleteReferenceFinished() シグナルで返されます。

以下のコード例は、"Objects" フォルダからノードへの参照を削除します:

QOpcUaDeleteReferenceItem item;
item.setSourceNodeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ObjectsFolder));
item.setReferenceTypeId(QOpcUa::nodeIdFromInteger(0, static_cast<quint32>(QOpcUa::ReferenceTypeId::Organizes)));
item.setIsForwardReference(true);
item.setTargetNodeId(QOpcUaExpandedNodeId("ns=3;s=MyNewVariableNode"));
item.setDeleteBidirectional(true);

m_client->deleteReference(item);

addReference()、deleteReferenceFinished()、QOpcUaDeleteReferenceItemも参照して ください。

[signal] void QOpcUaClient::deleteReferenceFinished(QString sourceNodeId, QString referenceTypeId, QOpcUaExpandedNodeId targetNodeId, bool isForwardReference, QOpcUa::UaStatusCode statusCode)

このシグナルは、deleteReference ()操作の終了後に発せられる。sourceNodeId referenceTypeIdtargetNodeIdisForwardReference は、deleteReference() 呼び出しの値である。statusCode には操作の結果が格納される。

[invokable] void QOpcUaClient::disconnectFromEndpoint()

サーバとの接続を切断する。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

disconnected() およびconnectToEndpoint()参照してください。

[signal] void QOpcUaClient::disconnected()

このシグナルは、closeリクエストに従ってコネクションが閉じられたときに発せられる。

QOpcUaEndpointDescription QOpcUaClient::endpoint() const

クライアントが現在接続している、あるいは最後に接続したエンドポイント の説明を返します。

[signal] void QOpcUaClient::endpointsRequestFinished(QList<QOpcUaEndpointDescription> endpoints, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)

このシグナルは、requestEndpoints ()操作の終了後に発行される。statusCode には操作の結果が含まれる。結果がGood の場合、endpoints には、サーバーで利用可能なすべてのエンドポイントの記述が含まれます。requestUrl には、requestEndpoints() 呼び出しで使用された URL が含まれます。

QOpcUaClient::ClientError QOpcUaClient::error() const

クライアントの現在のエラー状態を返します。

注: プロパティ・エラー用のゲッター関数です。

bool QOpcUaClient::findServers(const QUrl &url, const QStringList &localeIds = QStringList(), const QStringList &serverUris = QStringList())

サーバーまたはディスカバリサーバーから既知のサーバーのリストを読み取るために、非同期のFindServersリクエストをurl で開始する。非同期呼び出しが正常にディスパッチされた場合はtrue を返します。

localeIds を使用して、リクエストによって返されるアプリケーション名の言語を選択することができます。このフォーマットは OPC UA 1.05 part 3, 8.4 に規定されており、例えば英語であれば "en"、ドイツ語(Germany)であれば "de-DE "となる。複数のロケール ID が指定された場合、サーバーは最初にマッチしたものを使用する。マッチするものがない場合や が空の場合は、デフォルトのロケールが選択される。localeIds

serverUris を使用することで、アプリケーションの説明にある applicationUri がマッチするサーバに結果を限定することができます。例えば、"MyPLC "というapplicationUriを持つサーバーの現在のURLを見つけるには、以下のように呼び出す:

client->findServers(discoveryServerUrl, QStringList(), QStringList({"MyPLC"}));

結果はfindServersFinished() シグナルで返されます。

[signal] void QOpcUaClient::findServersFinished(QList<QOpcUaApplicationDescription> servers, QOpcUa::UaStatusCode statusCode, QUrl requestUrl)

このシグナルは、findServers()操作の終了後に発行される。statusCode には操作の結果が含まれる。結果がGood の場合、servers には、クエリされたサーバーが知っている、フィルタ条件に一致するすべてのサーバーのアプリケーション記述が含まれる。requestUrl には、findServers() 呼び出しで使用された URL が含まれる。

bool QOpcUaClient::isNamespaceAutoupdateEnabled() const

名前空間配列の自動更新が有効かどうかを返します。

QStringList QOpcUaClient::namespaceArray() const

名前空間配列のキャッシュ値を返す。

この値は、namespaceArrayUpdated() シグナルが発せられた後にのみ有効である。

updateNamespaceArray() およびnamespaceArrayUpdated()も参照

[signal] void QOpcUaClient::namespaceArrayChanged(QStringList namespaces)

このシグナルは、名前空間配列が変更された後に発行される。namespaces には、サーバーの名前空間テーブルの内容が格納されている。namespaces のエントリのインデックスは、ノード ID で使用される名前空間インデックスに対応します。

namespaceArrayUpdated() およびupdateNamespaceArray()も参照してください

[signal] void QOpcUaClient::namespaceArrayUpdated(QStringList namespaces)

このシグナルは、updateNamespaceArray の操作が終了した後に発せられる。namespaces には、サーバーの名前空間テーブルの内容が格納されている。namespaces のエントリのインデックスは、ノード ID で使用される名前空間インデックスに対応します。

名前空間配列の内容が更新後も変わらない場合、このシグナルは発生しません。

namespaceArrayChanged() およびupdateNamespaceArray()も参照してください

int QOpcUaClient::namespaceAutoupdateInterval() const

名前空間配列の現在の更新間隔を返します。

setNamespaceAutoupdateInterval(int interval)も参照

QOpcUaNode *QOpcUaClient::node(const QOpcUaExpandedNodeId &expandedNodeId)

expandedNodeId で識別される OPC UA ノードに関連付けられたQOpcUaNode オブジェクトを返す。呼び出し元がノードオブジェクトの所有者となる。

ノードが現在接続されているサーバ上にない場合、名前空間が解決できない場合、ノード ID が不正な場合、またはクライアントが接続されていない場合、nullptr が返されます。

updateNamespaceArray()も参照してください

QOpcUaNode *QOpcUaClient::node(const QString &nodeId)

nodeId で識別される OPC UA ノードに関連付けられたQOpcUaNode オブジェクトを返す。呼び出し元がノード・オブジェクトの所有者となる。

クライアントが接続されていない場合、nullptr が返されます。バックエンドは、その他のエラー・ケース(例えば、不正なノード ID の場合)についてもnullptr を返すことがあります。

[signal, since QtOpcUa 5.13] void QOpcUaClient::passwordForPrivateKeyRequired(QString keyFilePath, QString *password, bool previousTryWasInvalid)

このシグナルは、暗号化された秘密鍵のパスワードが必要なときに発せられる。パラメータkeyFilePath には、使用する鍵のファイルパスが格納される。パラメータpreviousTryWasInvalid は、以前に鍵の復号化に失敗した(パスワードが無効であった)場合に真となる。パラメータpasswordQString を指し、鍵の実際のパスワードを入力する必要がある。前の試行が失敗した場合、このパラメータには前に使用されたパスワードが格納される。

このシグナルに接続されたスロットの実行中、バックエンドは停止し、すべてのスロットが戻るのを待ちます。これにより、エンドユーザにパスワードを尋ねるユーザダイアログをポップアップすることができます。

この関数は QtOpcUa 5.13 で導入されました。

[since QtOpcUa 5.13] QOpcUaPkiConfiguration QOpcUaClient::pkiConfiguration() const

このQOpcUaClient インスタンスのアプリケーションの PKI 構成を返します。

この関数は QtOpcUa 5.13 で導入されました。

setPkiConfiguration()も参照してください

QOpcUaQualifiedName QOpcUaClient::qualifiedNameFromNamespaceUri(const QString &namespaceUri, const QString &name, bool *ok = nullptr) const

namespaceUri と名前文字列name から修飾名を作成しようとします。結果の修飾名を返す。namespaceUri が解決できない場合は、空の修飾名が返されます。

ok 名前空間 URI の解決に成功した場合は、 に設定されます。名前空間 URI を解決できなかった場合は、 に が設定されます。true ok false

[since 6.3] QOpcUaHistoryReadResponse *QOpcUaClient::readHistoryData(const QOpcUaHistoryReadRawRequest &request)

1つまたは複数のノードに対して、生履歴の読み取りrequest を開始します。これは、OPC UA 1.05 part 4の5.10.3で定義されている、生の履歴データを読み込むOPC UA ReadHistoryサービスのQt OPC UA

開始タイムスタンプ、終了タイムスタンプ、ノードあたりの値数、returnBounds、および読み込むノードは、QOpcUaHistoryReadRawRequest で指定できます。

非同期リクエストのディスパッチが成功した場合、リクエストの状態を含むQOpcUaHistoryReadResponse を返す。結果はQOpcUaHistoryReadResponse::readHistoryDataFinished(const QList<QOpcUaHistoryData> &results, QOpcUa::UaStatusCode serviceResult) シグナルで返される。

以下の例では,2つのノードの過去2日間の履歴データが要求され,プリントされます.結果は1ノードあたり10個の値に制限されます。

QOpcUaHistoryReadRawRequestrequest( { QOpcUaReadItem("ns=1;s=myValue1")QOpcUaReadItem("ns=1;s=myValue2")}QDateTime::currentDateTime()QDateTime::currentDateTime().addDays(-2), 10, true);QOpcUaHistoryReadResponse*レスポンス =  m_client->readHistoryData(request);if(response) { ::connect(response, &myvalue2) { ::currentDateTime().addDays(-2), 10, true.   QObject::connect(response, &)QOpcUaHistoryReadResponse::readHistoryDataFinished, [](QList<QOpcUaHistoryData>results, QOpcUa::UaStatusCode serviceResult) {if(serviceResult!= QOpcUa::UaStatusCode::Good) {if(serviceResult!= QOpcUa::UaStatusCode::Good)                            qWarning() << "Fetching historical data failed with:" << serviceResult;
                        }else{for(const  auto&result : results) {.                                qInfo() << "NodeId:" << result.nodeId();
                               for(const auto &dataValue: result.result())                                    qInfo() << "Value:" << dataValue.value();
                            } }); }

この関数はQt 6.3で導入されました。

[since 6.7] QOpcUaHistoryReadResponse *QOpcUaClient::readHistoryEvents(const QOpcUaHistoryReadEventRequest &request)

request にパラメータを指定して、1 つまたは複数のノード ID に対するイベント履歴の読み取り要求を開始します。

非同期リクエストが正常にディスパッチされた場合、リクエストの状態を含むQOpcUaHistoryReadResponse を返します。結果はQOpcUaHistoryReadResponse::readHistoryEventsFinished(const QList<QOpcUaHistoryEvent> &results, QOpcUa::UaStatusCode serviceResult) シグナルで返されます。

以下の例は、2つのノードの過去2日間の履歴イベントを取得します。1つのノードにつき最大10個のイベントが一度に返されます。フィルタと指定された時間範囲に一致するイベントがさらにある間は、hasMoreData() が真になり、readMoreData() によってさらに多くのイベントを取得できます。

QOpcUaMonitoringParameters::EventFilter filter; filter<<QOpcUaSimpleAttributeOperand("Message"); filter<<QOpcUaSimpleAttributeOperand("Time");constQOpcUaHistoryReadEventRequestrequest({ QOpcUaReadItem("ns=2;s=EventHistorian")QOpcUaReadItem("ns=2;s=EventHistorian2")}QDateTime::currentDateTime().addDays(-2)QDateTime::currentDateTime(),filter, 10);// 必要なデータがすべて取得された後、レスポンスオブジェクトはユーザーによって解放されなければならないconst autoresponse=  opcuaClient->readHistoryEvents(request);QObject::connect(response, &)QOpcUaHistoryReadResponse::readHistoryEventsFinished, this, [response](constQList<QOpcUaHistoryEvent> &results, QOpcUa::UaStatusCode serviceResult) {if(serviceResult!= QOpcUa::UaStatusCode::Good) {if(serviceResult!= QOpcUa::UaStatusCode::Good)        qDebug() << "Service call failed with" << serviceResult;
       return; }// これまでに得たものを表示する for(const auto &result: response->events()) {.        qDebug() << "Results for" << result.nodeId() << result.statusCode();
       for(const auto &event: result.events())            qDebug() << "    Event:" << event;
    }if(response->hasMoreData()) response->readMoreData(); });

この関数は Qt 6.7 で導入されました。

bool QOpcUaClient::readNodeAttributes(const QList<QOpcUaReadItem> &nodesToRead)

異なるノードの複数の属性の読み取りを開始する。nodesToRead の各エントリに対して、ノード ID、属性、およびインデックス範囲を指定できます。

非同期要求が正常にディスパッチされた場合、true を返します。結果はreadNodeAttributesFinished() シグナルで返されます。

この読み取り関数は、異なるノード上の多数のノード属性の値を読み取る必要があるシナリオで、値の変更の監視などQOpcUaNode ベースの API の他の機能を必要とせずに使用できる、ノードの属性を読み取る代替方法を提供します。リクエストのすべての読み取り項目は、単一のリクエストでサーバーに送信され、単一のreadNodeAttributesFinished() シグナルを生成する単一のレスポンスで応答される。これにより、多くの異なるノードが関与している場合、ネットワークのオーバーヘッドとシグナルスロット接続の数が削減される。

以下の例では、同じノードのvalue属性のdisplay name属性と2つのインデックス範囲「0:2」と「5:7」、および2番目のノードのvalue属性全体が、1回のサービス呼び出しで読み取られています:

QList<QOpcUaReadItem> request;
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::DisplayName));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::Value, "0:2"));
request.push_back(QOpcUaReadItem("ns=1;s=MyArrayNode",
                                 QOpcUa::NodeAttribute::Value, "5:7"));
request.push_back(QOpcUaReadItem("ns=1;s=MyScalarNode));
m_client->readNodeAttributes(request);

QOpcUaReadItem およびreadNodeAttributesFinished()も参照してください

[signal] void QOpcUaClient::readNodeAttributesFinished(QList<QOpcUaReadResult> results, QOpcUa::UaStatusCode serviceResult)

このシグナルは、readNodeAttributes()操作が終了した後に発せられる。

results のエレメントはリクエストのエレメントと同じ順序である。results serviceResult には OPC UA Read サービスからのステータスコードが含まれます。

readNodeAttributes(),QOpcUaReadResult,QOpcUaReadItemも参照してください

[since 6.7] bool QOpcUaClient::registerNodes(const QStringList &nodesToRegister)

nodesToRegister のノードIDをサーバーに登録し、リクエストが正常にディスパッチされた場合にtrue を返す。結果はregisterNodesFinished() シグナルで返されます。

ノード登録サービスは、ノードが頻繁にアクセスされることをサーバに知らせるために使用され、サーバは外部リソースへの接続をオープンに保つなどの操作を実行できます。また、サーバはエイリアスのノード ID を返すことがありますが、これは数値であることが推奨されます。これは長い文字列の識別子ノードIDを持つノードが多くのリクエストで使われる場合に便利です。実際のパフォーマンス向上は(もしあれば)サーバーの実装に依存します。

登録されたノードIDは現在のセッションでのみ有効であることが保証されます。サーバーが関連リソースを解放できるように、不要になった登録はできるだけ早く登録を解除する必要があります。

この関数は Qt 6.7 で導入されました。

unregisterNodes()も参照してください

[signal, since 6.7] void QOpcUaClient::registerNodesFinished(const QStringList &nodesToRegister, const QStringList &registeredNodeIds, QOpcUa::UaStatusCode statusCode)

このシグナルは、registerNodes()操作が終了した後に発行される。nodesToRegister には、相関のためにリクエストのノードIDが含まれる。サーバから返されたノード ID はregisteredNodeIds にあり、リクエストの ID と同じ順序です。statusCode は、操作が成功したかどうかを示します。

この関数は Qt 6.7 で導入されました。

registerNodes()も参照してください

bool QOpcUaClient::requestEndpoints(const QUrl &url)

url にあるサーバーから利用可能なエンドポイントのリストを読み込むための非同期リクエストGetEndpoints を開始します。非同期呼び出しが正常にディスパッチされた場合はtrue を返します。

エンドポイント情報はendpointsRequestFinished() シグナルで返されます。

QString QOpcUaClient::resolveExpandedNodeId(const QOpcUaExpandedNodeId &expandedNodeId, bool *ok = nullptr) const

expandedNodeId を数値名前空間インデックスを持つノード ID 文字列に解決しようとします。変換に成功した場合はノード ID 文字列を返します。

名前空間インデックスを解決できない場合、または展開されたノード ID の識別子部分が不正な場合、空の文字列が返される。変換に成功した場合、oktrue に設定される。展開されたノード ID が解決できなかった場合、okfalse に設定されます。

[since QtOpcUa 5.13] void QOpcUaClient::setApplicationIdentity(const QOpcUaApplicationIdentity &identity)

このQOpcUaClient インスタンスのアプリケーション ID をidentity に設定します。

この関数は QtOpcUa 5.13 で導入されました。

applicationIdentity()も参照してください

void QOpcUaClient::setAuthenticationInformation(const QOpcUaAuthenticationInformation &authenticationInformation)

このクライアントの認証情報をauthenticationInformation に設定する。

authenticationInformation() およびconnectToEndpoint()も参照

[since 6.6] void QOpcUaClient::setConnectionSettings(const QOpcUaConnectionSettings &connectionSettings)

このクライアントの接続設定をconnectionSettings に設定します。

例:

QOpcUaConnectionSettings settings;
// Ask the server to give localized texts in german with french as fallback
settings.setSessionLocaleIds({ "de", "fr" });
// We need to call some long running methods, increase the request timeout
settings.setRequestTimeout(std::chrono::minutes(2));
opcuaClient->setConnectionSettings(settings);

この時点以降の新しい接続には、connectionSettings の値が適用されます。

この関数は Qt 6.6 で導入されました。

connectionSettings()も参照してください

void QOpcUaClient::setNamespaceAutoupdate(bool isEnabled)

名前空間テーブルの自動更新を有効にします。

これを有効にすると、名前空間テーブルのローカルコピーが自動的に更新され続けます。namespaceArrayUpdated は、配列が変更されたときに発行されます。isEnabled は、自動更新が有効か無効かを決定します。

サブスクリプションは、変更を追跡するためにサーバ上のノードで作成されます。サーバーがサブスクリプションをサポートしていない場合、これは動作せず、isNamespaceAutoupdateEnabledfalse を返します。

namespaceArray() およびnamespaceArrayUpdated()も参照のこと

void QOpcUaClient::setNamespaceAutoupdateInterval(int interval)

ネームスペース・テーブルのサブスクリプションの間隔を設定します。

サブスクリプションはサーバによって変更されることがあります。

interval は、変更をチェックする間隔をミリ秒単位で決定します。デフォルトは 1 秒に 1 回です。

namespaceAutoupdateInterval() およびQOpcUaClient::setNamespaceAutoupdate(bool isEnabled)も参照してください

[since QtOpcUa 5.13] void QOpcUaClient::setPkiConfiguration(const QOpcUaPkiConfiguration &config)

このQOpcUaClient インスタンスのアプリケーション PKI 構成をconfig に設定します。

この関数は、QtOpcUa 5.13 で導入されました。

pkiConfiguration()も参照してください

[since QtOpcUa 5.14] QStringList QOpcUaClient::supportedSecurityPolicies() const

使用するバックエンドがサポートするセキュリティポリシーを返します。

この関数は現在技術プレビューとして提供されているため、API や提供される機能は予告なく変更される可能性があります。

この関数は QtOpcUa 5.14 で導入されました。

[since QtOpcUa 5.14] QList<QOpcUaUserTokenPolicy::TokenType> QOpcUaClient::supportedUserTokenTypes() const

使用するバックエンドがサポートするユーザートークンタイプを返します。

この関数は現在技術プレビューとして提供されているため、API や提供される機能は予告なく変更される可能性があります。

この関数は QtOpcUa 5.14 で導入されました。

QOpcUaUserTokenPolicy::TokenTypeも参照して ください。

[since 6.7] bool QOpcUaClient::unregisterNodes(const QStringList &nodesToUnregister)

サーバー上のnodesToUnregister のノード ID の登録を解除し、リクエストが正常にディスパッチされた場合はtrue を返す。結果はunregisterNodesFinished() シグナルで返される。

nodesToUnregister で渡すノード ID は、registerNodes() で取得している必要があります。

この関数は Qt 6.7 で導入されました。

registerNodes()も参照してください

[signal, since 6.7] void QOpcUaClient::unregisterNodesFinished(const QStringList &nodesToUnregister, QOpcUa::UaStatusCode statusCode)

このシグナルは、unregisterNodes()操作が終了した後に発行されます。nodesToUnregister には、相関のためにリクエストのノード ID が含まれます。statusCode は、操作が成功したかどうかを示します。

この関数は Qt 6.7 で導入されました。

unregisterNodes()も参照してください

bool QOpcUaClient::updateNamespaceArray()

サーバに名前空間配列の更新を要求する。操作が正常にディスパッチされた場合はtrue を返します。

操作が終了するとnamespaceArrayUpdated() シグナルが発行されます。

namespaceArray() およびnamespaceArrayUpdated()も参照

bool QOpcUaClient::writeNodeAttributes(const QList<QOpcUaWriteItem> &nodesToWrite)

異なるノード上の複数の属性に対して書き込みを開始する。nodesToWrite の各エントリに対して、ノード ID、属性、値、値タイプ、およびインデックス範囲を指定できます。

非同期要求が正常にディスパッチされた場合はtrue を返します。結果はwriteNodeAttributesFinished() シグナルで返される。

この書き込み関数は、異なるノード上の多数のノード属性の値を書き込む必要があるシナリオで、値の変更の監視などQOpcUaNode ベースの API の他の機能を必要とせずに使用できる、ノードの属性を書き込む代替方法を提供します。リクエストのすべての書き込み項目は、単一のリクエストでサーバーに送信され、単一のwriteNodeAttributesFinished() シグナルを生成する単一のレスポンスで応答される。これにより、多くの異なるノードが関与している場合、ネットワークのオーバーヘッドとシグナルスロット接続の数が削減される。

以下の例では、2つの異なるノードのValues属性が1回の呼び出しで書き込まれます。2 番目のノードには配列値があり、最初の 2 要素のみが上書きされます:

QList<QOpcUaWriteItem> request;

request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Scalar.Double", QOpcUa::NodeAttribute::Value,
                                  23.0, QOpcUa::Types::Double));
request.append(QOpcUaWriteItem("ns=2;s=Demo.Static.Arrays.UInt32", QOpcUa::NodeAttribute::Value,
                                  QVariantList({0, 1, 2}), QOpcUa::Types::UInt32, "0:2"));

m_client->writeNodeAttributes(request);

QOpcUaWriteItem およびwriteNodeAttributesFinished()も参照してください

[signal] void QOpcUaClient::writeNodeAttributesFinished(QList<QOpcUaWriteResult> results, QOpcUa::UaStatusCode serviceResult)

このシグナルは、writeNodeAttributes ()操作が終了した後に発せられる。

results の要素は、書き込み要求の要素と同じ順序です。これらの要素には、サーバーから受信した値、タイムスタンプ、ステータスコード、および書き込みアイテムのノードID、属性、インデックス範囲が含まれます。これにより、結果とリクエストのマッチングが容易になります。

serviceResult は、OPC UA Write サービスからのステータスコードである。 が でない場合、 の項目も無効なステータスコードを持つため、使用してはならない。serviceResult Good results

writeNodeAttributes() およびQOpcUaWriteResultも参照のこと

© 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.