QOpcUaNode Class
QOpcUaNodeはOPC UAノードとのインタラクションを可能にします。詳細...
ヘッダ | #include <QOpcUaNode> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS OpcUa) target_link_libraries(mytarget PRIVATE Qt6::OpcUa) |
qmake: | QT += opcua |
を継承する: | QObject |
パブリックタイプ
パブリック関数
QVariant | attribute(QOpcUa::NodeAttribute attribute) const |
QOpcUa::UaStatusCode | attributeError(QOpcUa::NodeAttribute attribute) const |
bool | browse(const QOpcUaBrowseRequest &request) |
bool | browseChildren(QOpcUa::ReferenceTypeId referenceType = QOpcUa::ReferenceTypeId::HierarchicalReferences, QOpcUa::NodeClasses nodeClassMask = QOpcUa::NodeClass::Undefined) |
bool | callMethod(const QString &methodNodeId, const QList<QOpcUa::TypedVariant> &args = QList<QOpcUa::TypedVariant>()) |
QOpcUaClient * | client() const |
bool | disableMonitoring(QOpcUa::NodeAttributes attr) |
bool | enableMonitoring(QOpcUa::NodeAttributes attr, const QOpcUaMonitoringParameters &settings) |
bool | modifyDataChangeFilter(QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::DataChangeFilter &filter) |
bool | modifyEventFilter(const QOpcUaMonitoringParameters::EventFilter &eventFilter) |
bool | modifyMonitoring(QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameter item, const QVariant &value) |
QOpcUaMonitoringParameters | monitoringStatus(QOpcUa::NodeAttribute attr) |
QString | nodeId() const |
bool | readAttributeRange(QOpcUa::NodeAttribute attribute, const QString &indexRange) |
bool | readAttributes(QOpcUa::NodeAttributes attributes = mandatoryBaseAttributes()) |
(since 6.7) QOpcUaHistoryReadResponse * | readHistoryEvents(const QDateTime &startTime, const QDateTime &endTime, QOpcUaMonitoringParameters::EventFilter &filter, quint32 numValues = 0) |
(since 6.3) QOpcUaHistoryReadResponse * | readHistoryRaw(const QDateTime &startTime, const QDateTime &endTime, quint32 numValues, bool returnBounds) |
(since 6.7) QOpcUaHistoryReadResponse * | readHistoryRaw(const QDateTime &startTime, const QDateTime &endTime, quint32 numValues, bool returnBounds, QOpcUa::TimestampsToReturn timestampsToReturn) |
bool | readValueAttribute() |
bool | resolveBrowsePath(const QList<QOpcUaRelativePathElement> &path) |
QDateTime | serverTimestamp(QOpcUa::NodeAttribute attribute) const |
QDateTime | sourceTimestamp(QOpcUa::NodeAttribute attribute) const |
QVariant | valueAttribute() const |
QOpcUa::UaStatusCode | valueAttributeError() const |
bool | writeAttribute(QOpcUa::NodeAttribute attribute, const QVariant &value, QOpcUa::Types type = QOpcUa::Types::Undefined) |
bool | writeAttributeRange(QOpcUa::NodeAttribute attribute, const QVariant &value, const QString &indexRange, QOpcUa::Types type = QOpcUa::Types::Undefined) |
bool | writeAttributes(const QOpcUaNode::AttributeMap &toWrite, QOpcUa::Types valueAttributeType = QOpcUa::Types::Undefined) |
bool | writeValueAttribute(const QVariant &value, QOpcUa::Types type = QOpcUa::Types::Undefined) |
シグナル
void | attributeRead(QOpcUa::NodeAttributes attributes) |
void | attributeUpdated(QOpcUa::NodeAttribute attr, QVariant value) |
void | attributeWritten(QOpcUa::NodeAttribute attribute, QOpcUa::UaStatusCode statusCode) |
void | browseFinished(QList<QOpcUaReferenceDescription> children, QOpcUa::UaStatusCode statusCode) |
void | dataChangeOccurred(QOpcUa::NodeAttribute attr, QVariant value) |
void | disableMonitoringFinished(QOpcUa::NodeAttribute attr, QOpcUa::UaStatusCode statusCode) |
void | enableMonitoringFinished(QOpcUa::NodeAttribute attr, QOpcUa::UaStatusCode statusCode) |
void | eventOccurred(QVariantList eventFields) |
void | methodCallFinished(QString methodNodeId, QVariant result, QOpcUa::UaStatusCode statusCode) |
void | monitoringStatusChanged(QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameters items, QOpcUa::UaStatusCode statusCode) |
void | resolveBrowsePathFinished(QList<QOpcUaBrowsePathTarget> targets, QList<QOpcUaRelativePathElement> path, QOpcUa::UaStatusCode statusCode) |
(since 6.7) void | valueAttributeUpdated(const QVariant &value) |
静的パブリック・メンバー
QOpcUa::NodeAttributes | allBaseAttributes() |
QOpcUa::NodeAttributes | mandatoryBaseAttributes() |
詳細説明
ノードはOPC UAアドレス空間の基本的な構成要素です。ブラウズ名、値、関連プロパティなどの属性を持ち、アドレス空間内の他のノードへの参照を持つことができます。ノードはネームスペースで構成され、数値、文字列、ネームスペース固有のフォーマット(不透明)、またはグローバルに一意な識別子などのIDを持ちます。ノードは、名前空間 ID とノード ID によって識別されます。この識別子は通常、文字列として指定されます:名前空間 0 に存在し、数値識別子 42 を持つノードの識別子は、文字列ns=0;i=42
になります。文字列識別子を持つノードは、ns=0;s=myStringIdentifier
でアドレス指定できます。
このタイプのオブジェクトはユーザが所有し、不要になったら削除する必要があります。これらのオブジェクトは、それを作成したQOpcUaClient が存在する限り有効である。
属性の読み書き
readAttributes() またはreadAttributeRange() が呼び出されると、ノード属性がサーバから読み込まれます。結果はローカルにキャッシュされ、attributeRead シグナルを受信した後にattribute() を使用して取得できます。
ユーザーに必要な権限があれば、writeAttribute ()、writeAttributes ()、writeAttributeRange ()を使用して、属性を書き込むことができる。書き込み操作の成功は、attributeWritten シグナルを使用して報告される。
attributeError() には、属性に対する最後の読み取りまたは書き込み操作に関連するステータス・コードが含まれます。これは OPC UA サービスが返す低レベルのステータスコードである。このステータスコードは、QOpcUa::errorCategory() を使用してQOpcUa::ErrorCategory に変換することで簡略化できます。
サブスクリプションと監視項目
サブスクリプションはOPC UAの概念で、データの変更やイベント発生時に、ノードの変更を継続的にポーリングする代わりに通知を受け取ることができます。監視項目は、ノードの属性の変更を監視する方法を定義します。それらはサブスクリプションに追加され、それらが生成するすべての通知はサブスクリプションを介してユーザーに転送されます。更新の間隔や、監視項目とサブスクリプションの他の多くのオプションは、ユーザが設定できます。
QOpcUaNode () は、サブスクリプションと監視されたアイテムを操作するための抽象化を提供します。() は、1 つまたは複数の属性のデータ変更通知を有効にします。 シグナルには新しい値が含まれ、ローカル・キャッシュが更新されます。() は、データ変更通知を無効にします。 シグナルは、監視ステータスの変更について通知します。例えば、手動で有効化および無効化した後や、サーバーのステータスが変更された後などです。enableMonitoring dataChangeOccurred disableMonitoring monitoringStatusChanged
イベント・モニタリングは、セットアップとライフサイクル管理に同じAPIを使用します。EventNotifier 属性は、必要なイベント・フィールドを選択し、ユーザー定義の基準によって報告されるイベントをフィルタリングするEventFilter を使用して監視されなければなりません。イベントは、選択されたイベント・フィールドの値を含むQVariantList としてeventOccurred() シグナルで報告される。
サブスクリプションとモニターされる項目の設定は、modifyMonitoring() を使用して、実行時に変更することができます。
アドレス空間のブラウズ
OPC UA アドレス空間は参照で接続されたノードで構成されます。browseChildren はこれらの参照を順方向にたどり、browseFinished シグナルでQOpcUaNode のインスタンスの後ろにあるノードに接続されたすべてのノードから属性を返します。browse() はbrowseChildren() と似ていますが、ブラウズ呼び出しを設定するためのオプションがより多く用意されています。
メソッド呼び出し
OPC UAは、ユーザーが呼び出すことができるサーバー上のメソッドを指定します。QOpcUaNode は、パラメータを受け取り、methodCallFinished シグナルで呼び出しの結果を返すcallMethod を介してこれをサポートします。
ブラウズパスの解決
型記述に対するプログラミングをサポートするために、OPC UAはあるノードを起点とするブラウズ名のパスを解決し、ターゲットノードのノードIDを取得することをサポートしています。resolveBrowsePath() メソッドは、呼び出されたノードから始まるパスをたどり、その結果をresolveBrowsePathFinished() シグナルで返します。
例
クライアントをサーバに接続してQOpcUaNode オブジェクトを取得するには、QOpcUaClient を参照してください。
ノードが正常に作成されると、ルート・ノードの BrowseName がサーバーから読み取られます:
QOpcUaNode *rootNode;// 以前に作成された、QOpcUaClient ドキュメントを参照してください。// attributeRead シグナルに接続します。ラムダの代わりに QObject の互換スロットを使用できます。QObject::connect(rootNode, &QOpcUaNode::attributeRead, [rootNode,client](QOpcUa::NodeAttributes attr) { {]. qDebug() << "Signal for attributes:" << attr; if(rootNode->attributeError(QOpcUa::NodeAttribute::BrowseName)!= QOpcUa::UaStatusCode::Good) { 。 qDebug() << "Failed to read attribute:" << rootNode->attributeError(QOpcUa::NodeAttribute::BrowseName); client->disconnectFromEndpoint(); } qDebug() << "Browse name:" << rootNode->attribute(QOpcUa::NodeAttribute::BrowseName).value<QOpcUaQualifiedName>().name(); }); rootNode->readAttributes(QOpcUa::NodeAttribute::BrowseName);// ノードの BrowseName 属性の読み取り操作を開始する。
メンバ型ドキュメント
QOpcUaNode::AttributeMap
この型は、一度に複数の属性を書き込むためにwriteAttributes() で使用される。QVariant 値は、書き込まれる属性に割り当てられなければならない。
メンバ関数ドキュメント
[static constexpr]
QOpcUa::NodeAttributes QOpcUaNode::allBaseAttributes()
OPC UAベース・ノード・クラスの全ての属性を含む。
QVariant QOpcUaNode::attribute(QOpcUa::NodeAttribute attribute) const
attribute で指定された属性の値を返す。
この値は、attributeRead シグナルが発信された後にのみ有効です。その属性にキャッシュされた値がない場合は、空のQVariant が返されます。
QOpcUa::UaStatusCode QOpcUaNode::attributeError(QOpcUa::NodeAttribute attribute) const
attribute で与えられた属性のエラーコードを返す。
エラー・コードは、attributeRead またはattributeWritten シグナルが発信された後にのみ有効です。
属性キャッシュにエントリがない場合は、BadNoEntryExists が返されます。
QOpcUa::errorCategoryも参照してください 。
[signal]
void QOpcUaNode::attributeRead(QOpcUa::NodeAttributes attributes)
このシグナルは、readAttributes ()またはreadAttributeRange () 操作が終了した後に発行される。受信者は、attributes に含まれる属性のステータス・コードをチェックする必要がある。
[signal]
void QOpcUaNode::attributeUpdated(QOpcUa::NodeAttribute attr, QVariant value)
このシグナルは、サーバからのデータ変更通知、読み取りまたは書き込み操作によってアトリビュート・キャッシュ内の値が更新された後に発行されます。value には、ノード・アトリビュートattr の新しい値が格納されます。
attribute(),attributeError(),serverTimestamp(),sourceTimestamp(),valueAttributeUpdated()も参照してください 。
[signal]
void QOpcUaNode::attributeWritten(QOpcUa::NodeAttribute attribute, QOpcUa::UaStatusCode statusCode)
このシグナルは、writeAttribute()、writeAttributes()、writeAttributeRange() 操作が終了した後に発行される。
このシグナルが発行される前に、書き込みが成功すると属性キャッシュが更新されます。writeAttributes() では、書き込み呼び出しの各属性に対してシグナルが発行される。statusCode には、attribute の書き込み操作の成功情報が含まれる。
bool QOpcUaNode::browse(const QOpcUaBrowseRequest &request)
このノードからブラウズ呼び出しを開始する。
非同期呼び出しが正常にディスパッチされた場合、true
を返します。
request で指定された条件に一致するすべての参照がbrowseFinished() シグナルで返されます。
例えば、逆ブラウズ呼び出しを使用して、プロパティ・ノードの親ノードを見つけることができます:
QOpcUaBrowseRequest request; request.setBrowseDirection(QOpcUaBrowseRequest::BrowseDirection::Inverse); request.setReferenceTypeId(QOpcUa::ReferenceTypeId::HasProperty); propertyNode->browse(request);
bool QOpcUaNode::browseChildren(QOpcUa::ReferenceTypeId referenceType = QOpcUa::ReferenceTypeId::HierarchicalReferences, QOpcUa::NodeClasses nodeClassMask = QOpcUa::NodeClass::Undefined)
このメソッドが呼び出されたノードから開始するフォワード・ブラウズ呼び出しを実行します。ブラウズ操作は、ノードに接続されている子ノードに関する情報を収集し、その結果をbrowseFinished() シグナルで配信します。
非同期呼び出しが正常にディスパッチされた場合は、true
を返します。
特定のタイプの参照によってノードに接続されている子ノードのみを要求するには、referenceType をその参照タイプに設定する必要があります。例えば、referenceType にHasProperty を渡すことで、ノードのすべてのプロパティを取得することができます。nodeClassMask に設定することで、特定のノード・クラスを持つノードだけを含むように結果をフィルタリングできます。
[signal]
void QOpcUaNode::browseFinished(QList<QOpcUaReferenceDescription> children, QOpcUa::UaStatusCode statusCode)
このシグナルは、browseChildren()またはbrowse()の 操作が終了した後に発行される。
children browseChildren statusCode には、ブラウズ操作のサービス結果が含まれる。 が でない場合、渡される ベクトルは空である。statusCode Good children
QOpcUaReferenceDescriptionも参照してください 。
bool QOpcUaNode::callMethod(const QString &methodNodeId, const QList<QOpcUa::TypedVariant> &args = QList<QOpcUa::TypedVariant>())
args で与えられたパラメータで OPC UA メソッドmethodNodeId を呼び出す。結果はmethodCallFinished シグナルで返されます。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返します。
QOpcUaClient *QOpcUaNode::client() const
このノードを作成したクライアントへのポインタを返します。
[signal]
void QOpcUaNode::dataChangeOccurred(QOpcUa::NodeAttribute attr, QVariant value)
このシグナルはデータ変更通知を受信した後に発行される。value はノード属性attr の新しい値を含む。
attribute(),serverTimestamp(),sourceTimestamp()も参照してください 。
bool QOpcUaNode::disableMonitoring(QOpcUa::NodeAttributes attr)
このメソッドは、attr で指定された属性のモニタリングを無効にする。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返す。
呼び出しが終了すると、disableMonitoringFinished シグナルが発行され、monitoringStatus は、attr のステータスコード BadMonitoredItemIdIinvalid を持つデフォルトの構築された値を返します。
[signal]
void QOpcUaNode::disableMonitoringFinished(QOpcUa::NodeAttribute attr, QOpcUa::UaStatusCode statusCode)
このシグナルは、disableMonitoring()への非同期呼び出しが終了した後に発行される。statusCode には、操作によって生成されたステータス・コードが含まれる。このシグナルが発せられた後、monitoringStatus は、attr のステータスコード BadMonitoredItemIdIinvalid を持つデフォルトの構築済み値を返す。
bool QOpcUaNode::enableMonitoring(QOpcUa::NodeAttributes attr, const QOpcUaMonitoringParameters &settings)
このメソッドは、attr で指定された属性ごとにモニター項目を作成する。settings からの設定は、監視項目とサブスクリプションの作成で使用される。
非同期呼び出しが正常にディスパッチされた場合、true
を返します。
呼び出しが完了すると、enableMonitoringFinished シグナルが発行される。バッドステータスコードが生成される複数のエラーケースがある:settings で指定されたサブスクリプション ID を持つサブスクリプションが存在しない、サーバー上にノードが存在しない、要求された属性をノードが持っていない、またはサーバーの監視アイテムの最大数に達している。
イベント監視を有効にするには、同じ方法を使用します。イベントは、OPC UAのアドレス空間にある特別なオブジェクトで、発生したイベントに関する情報を含んでいます。サーバー上でイベントがトリガーされると、イベント監視項目は、イベントオブジェクトとその子ノードのノード属性の選択された値を収集します。イベント・ソースを持つすべてのノードは、イベントを監視できます。ノードのイベントを監視するには、EventFilter を使用して、EventNotifier 属性を監視する必要があります。 には、ユーザが必要とするイベント・フィールドが含まれ、オプションとして、条件によってイベントをフィルタリングするために使用される where 節が含まれます(詳細については、QOpcUaMonitoringParameters::EventFilter を参照してください)。
[signal]
void QOpcUaNode::enableMonitoringFinished(QOpcUa::NodeAttribute attr, QOpcUa::UaStatusCode statusCode)
このシグナルは、enableMonitoring ()の非同期呼び出しが終了した後に発せられる。このシグナルが発せられた後、monitoringStatus() は、attr に対する有効な情報を返す。statusCode には、操作のステータス・コードが含まれる。
[signal]
void QOpcUaNode::eventOccurred(QVariantList eventFields)
このシグナルは、新しいイベントが受信された後に発行される。
eventFields には、イベント・フィルタの 節で指定された順序で、イベント・フィールドの値が含まれる。select
[static constexpr]
QOpcUa::NodeAttributes QOpcUaNode::mandatoryBaseAttributes()
OPC UAベース・ノード・クラスの全ての必須属性を含む。
[signal]
void QOpcUaNode::methodCallFinished(QString methodNodeId, QVariant result, QOpcUa::UaStatusCode statusCode)
このシグナルは、methodNodeId のメソッド呼び出しがサーバー上で終了した後に発行される。statusCode はメソッド呼び出しのステータスコードを含み、result はメソッドの出力引数を含む。result はメソッドが出力引数を持たない場合は空、statusCode はGood ではない。result の variant は、出力引数が一つしかない場合は一つの値で、呼び出された関数が複数の出力引数を返した場合は variant のリストを含みます。
if (result.canConvert<QVariantList>()) { // handle list type } else { // handle value type }
bool QOpcUaNode::modifyDataChangeFilter(QOpcUa::NodeAttribute attr, const QOpcUaMonitoringParameters::DataChangeFilter &filter)
既存のデータ変更監視を、filter をデータ変更フィルタとして使用するように変更します。
フィルタ変更要求がバックエンドに正常にディスパッチされた場合はtrue
を返します。
monitoringStatusChanged 操作の終了後に を返します。attr
bool QOpcUaNode::modifyEventFilter(const QOpcUaMonitoringParameters::EventFilter &eventFilter)
eventFilter をイベントフィルターとして使用するように、既存のイベントモニターを変更する。
フィルタ変更リクエストがバックエンドに正常にディスパッチされた場合はtrue
を返します。
monitoringStatusChanged 操作の終了後、 。EventNotifier
bool QOpcUaNode::modifyMonitoring(QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameter item, const QVariant &value)
このメソッドはモニターされているアイテムまたはサブスクリプションの設定を 修正する。attr に関連付けられたモニターアイテムまたはサブスクリプションのパラメー タitem をvalue に設定しようとする。
非同期呼び出しが正常にディスパッチされた場合、true
を返す。
呼び出しが終了すると、monitoringStatusChanged シグナルが発行される。このシグナルには、変更されたパラメータとステータスコードが含まれる。要求された属性に関連付けられた監視項目がない場合、要求されたパラメータの変更が実装されていない場合、またはサーバーが要求された値を拒否した場合、不正なステータスコードが生成されます。
QOpcUaMonitoringParameters QOpcUaNode::monitoringStatus(QOpcUa::NodeAttribute attr)
attr 属性に関連付けられたモニタリング・パラメータを返す。これは、enableMonitoring()が成功したかどうか、またはパラメータが修正されたかどうかを確認するために使用できる。返される値は、attr に対してenableMonitoringFinished またはmonitoringStatusChanged が発信された後にのみ有効である。シグナルが発信される前にステータスが照会された場合、QOpcUaMonitoringParameters::statusCode() はBadNoEntryExists を返す。
[signal]
void QOpcUaNode::monitoringStatusChanged(QOpcUa::NodeAttribute attr, QOpcUaMonitoringParameters::Parameters items, QOpcUa::UaStatusCode statusCode)
このシグナルは、modifyMonitoring() への非同期呼び出しが終了した後に発行されます。操作が要求されたノード属性がattr に返されます。items には変更されたパラメータが含まれます。statusCode にはサーバ上の変更操作の結果が含まれます。
QString QOpcUaNode::nodeId() const
OPC UAノードのIDを返します。
bool QOpcUaNode::readAttributeRange(QOpcUa::NodeAttribute attribute, const QString &indexRange)
ノード属性attribute に対する非同期読み取り操作を開始します。indexRange は、配列の一部を選択するために使用できる文字列です。これはOPC UA 1.05 part 4の7.27で定義されています。配列の最初の要素は0、"1 "は2番目の要素、"0:9 "は最初の10個の要素、"0,1 "は2次元配列の最初の行の2番目の要素を返します。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返す。
属性値は、attributeRead シグナルが発信された後にのみ有効な情報を含む。
bool QOpcUaNode::readAttributes(QOpcUa::NodeAttributes attributes = mandatoryBaseAttributes())
attributes のノード属性に対する非同期読み取り操作を開始する。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返します。
属性値には、attributeRead シグナルが発信された後でのみ有効な情報が含まれます。
[since 6.7]
QOpcUaHistoryReadResponse *QOpcUaNode::readHistoryEvents(const QDateTime &startTime, const QDateTime &endTime, QOpcUaMonitoringParameters::EventFilter &filter, quint32 numValues = 0)
パラメータstartTime 、endTime 、filter 、numValues を使用して、このノードのイベント履歴読み取り要求を開始する。filter は、どのイベントとそのフィールドのどのセットを返すか を決定するためにサーバーが使用する。
非同期リクエストが正常にディスパッチされた場合、リクエストの状態を含むQOpcUaHistoryReadResponse を返す。結果はQOpcUaHistoryReadResponse::readHistoryEventsFinished(const QList<QOpcUaHistoryEvent> &results, QOpcUa::UaStatusCode serviceResult) シグナルで返される。
以下の例では、過去2日間の履歴イベントを検索しています。一度に最大10個のイベントが返されます。フィルタと指定された時間範囲にマッチするイベントがさらにある間は、hasMoreData()
が真となり、readMoreData() によってさらに多くのイベントを取得することができます。
QScopedPointer<QOpcUaNode>node(opcuaClient->node("ns=2;s=EventHistorian")); QVERIFY(node!=nullptr);QOpcUaMonitoringParameters::EventFilter filter; filter<<QOpcUaSimpleAttributeOperand("Message"); filter<<QOpcUaSimpleAttributeOperand("Time");const autoresponse= node->readHistoryEvents(QDateTime::currentDateTime().addDays(-2)、 QDateTime::currentDateTime(),filter, 10);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 で導入されました。
[since 6.3]
QOpcUaHistoryReadResponse *QOpcUaNode::readHistoryRaw(const QDateTime &startTime, const QDateTime &endTime, quint32 numValues, bool returnBounds)
このノードの履歴読み込み要求を開始する。これは、OPC UA 1.05 part 4, 5.10.3 に定義されている、生の履歴データを読み込むための OPC UA ReadHistory サービスのQt OPC UA 表現である。これは、startTime 、endTime 、numValues 、returnBounds のパレメンターに基づいて履歴を読み取ります。
非同期要求が正常にディスパッチされた場合、要求の状態を含むQOpcUaHistoryReadResponse を返す。結果はQOpcUaHistoryReadResponse::readHistoryDataFinished(const QList<QOpcUaHistoryData> &results, QOpcUa::UaStatusCode serviceResult) シグナルで返される。
以下の例では、ノードの過去2日間の履歴データが要求され、プリントされます。結果はノードごとに10個の値に制限されています。
QOpcUaHistoryReadResponse*レスポンス = node->readHistoryRaw()QDateTime::currentDateTime()、 QDateTime::currentDateTime().addDays(-2), 10, true);if(response) {::connect(response123,-2), 10, true). QObject::connect(response123, &)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 *QOpcUaNode::readHistoryRaw(const QDateTime &startTime, const QDateTime &endTime, quint32 numValues, bool returnBounds, QOpcUa::TimestampsToReturn timestampsToReturn)
このノードの履歴読み取り要求を開始する。追加のパラメータtimestampsToReturn は、各値に対してどのタイムスタンプを返すかを決定します。
この関数は Qt 6.7 で導入されました。
bool QOpcUaNode::readValueAttribute()
ノードの Value 属性の非同期読み取り操作を開始します。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返します。
readAttributes()も参照してください 。
bool QOpcUaNode::resolveBrowsePath(const QList<QOpcUaRelativePathElement> &path)
OPC UA 1.05 part 4の5.8.4で規定されるTranslateBrowsePathsToNodeIdsサービスを使用して、ブラウズパスpath を、このノードを起点とする一つ以上のノードIDに解決する。
非同期呼び出しが正常にディスパッチされた場合、true
を返します。
TranslateBrowsePathsToNodeIds は主に、OPC UA アドレス空間内のノードの具体的な集合ではなく、型定義に対してプログラムするために使用されます。例えば、マシンモデルの型定義は、ブラウズ名 "Machine "の開始ノードで構成され、ブラウズ名 "Fan "のコンポーネントを持ちます。Fanにはブラウズ名「RPM」のコンポーネントがあり、これはファンの現在のRPM値を保持するVariableノードです。このタイプのマシンは複数あり、それぞれのマシンはマシンタイプのオブジェクトとしてOPC UAのアドレス空間にマッピングされます。これらのマシンオブジェクトのそれぞれについて、マシンノードから「RPM」ノードへのパスは同じです。クライアントが現在の RPM 値を読み取るには、マシン・ノードを開始ノードとして resolveBrowsePath() を呼び出し、マシンから "RPM" ノードまでのブラウズ・パスを指定する必要があります:
QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=1;s=machine1")); QList<QOpcUaRelativePathElement> path; path.append(QOpcUaRelativePathElement(QOpcUaQualifiedName(1, "Fan"), QOpcUa::ReferenceTypeId::HasComponent)); path.append(QOpcUaRelativePathElement(QOpcUaQualifiedName(1, "RPM"), QOpcUa::ReferenceTypeId::HasComponent)); node->resolveBrowsePath(path);
resolveBrowsePathFinished() で返される結果には、「RPM」ノードのノード ID が含まれ、この ID を使用してノードの属性にアクセスできます:
if(!results.size()) { この結果を使用して、ノードの属性にアクセスできます。 qWarning() << "Browse path resolution failed"; return; }if(results.at(0).isFullyResolved()) {QOpcUaNode *rpmNode = client->node(results.at(0).targetId());if(!rpmNode) { {QOpcUaNode *rpmNode =client->node(results.at(0).targetId());if(!rpmNode) qWarning() << "Failed to create node"; return; }// スロットを接続し、メソッドを呼び出す}else{. qWarning() << "Browse path could not be fully resolved, the target node is on another server"; return; }
[signal]
void QOpcUaNode::resolveBrowsePathFinished(QList<QOpcUaBrowsePathTarget> targets, QList<QOpcUaRelativePathElement> path, QOpcUa::UaStatusCode statusCode)
このシグナルは、resolveBrowsePath ()の呼び出しが終了した後に発せられる。
QOpcUaBrowsePathTarget targets はマッチを含み、statusCode は操作のステータス・コードである。statusCode がGood でない場合、targets は空です。ブラウズパスpath はリクエストからのブラウズパスである。これは、リクエストと結果を関連付けるために使用できる。
QDateTime QOpcUaNode::serverTimestamp(QOpcUa::NodeAttribute attribute) const
attribute の最後の読み取りまたはデータ変更からのサーバーのタイムスタンプを返します。attributeRead またはdataChangeOccurred シグナルが少なくとも 1 つ発せられる前は、NULL の datetime が返されます。
QDateTime QOpcUaNode::sourceTimestamp(QOpcUa::NodeAttribute attribute) const
attribute の最後の読み取りまたはデータ変更からのソースタイムスタンプを返します。少なくとも 1 つのattributeRead またはdataChangeOccurred シグナルが発信される前は、NULL の datetime が返されます。
QVariant QOpcUaNode::valueAttribute() const
ノードの Value 属性の値を返します。
返される値は、Value 属性の読み取りまたは書き込みに成功した後、またはモニタからのデータ変更によって属性キャッシュが更新された後にのみ有効です。これは、Value 属性のステータス・コードGood を持つattributeRead() またはattributeWritten() シグナル、またはdataChangeOccurred() シグナルによって示されます。
属性キャッシュに値がない場合、無効なQVariant が返される。
readValueAttribute()、writeValueAttribute()、valueAttributeError()も参照 。
QOpcUa::UaStatusCode QOpcUaNode::valueAttributeError() const
ノードの Value 属性のエラー・コードを返す。ステータス・コードGood は、valueAttribute() に対する有効な戻り値を示します。属性キャッシュにエントリがない場合は、BadNoEntryExists が返されます。
[signal, since 6.7]
void QOpcUaNode::valueAttributeUpdated(const QVariant &value)
このシグナルは、属性キャッシュ内の value 属性が、サーバからのデータ変更通知、読み込み、または書き込み操作によって更新された後に発行されます。value には、value 属性の新しい値が含まれます。
この関数は Qt 6.7 で導入されました。
attribute(),attributeError(),serverTimestamp(),sourceTimestamp(),attributeUpdated()も参照してください 。
bool QOpcUaNode::writeAttribute(QOpcUa::NodeAttribute attribute, const QVariant &value, QOpcUa::Types type = QOpcUa::Types::Undefined)
type の型情報を使用して、attribute で指定された属性にvalue を書き込む。非同期呼び出しが正常にディスパッチされた場合はtrue
を返す。
type パラメータが省略された場合、バックエンドは正しい型を見つけようとします。以下のデフォルトの型が想定されています:
Qt MetaType | OPC UA タイプ |
---|---|
ブール | ブール |
UChar | バイト |
Char | バイト |
UShort | UInt16 |
ショート | Int16 |
Int | Int32 |
UInt | UInt32 |
ULongLong | UInt64 |
LongLong | Int64 |
Double | Double |
Float | Float |
QString | 文字列 |
QDateTime | 日付 |
QByteArray | バイト文字列 |
QUuid | ガイド |
bool QOpcUaNode::writeAttributeRange(QOpcUa::NodeAttribute attribute, const QVariant &value, const QString &indexRange, QOpcUa::Types type = QOpcUa::Types::Undefined)
type の型情報を使用して、attribute で指定された属性にvalue を書き込む。indexRange についてはreadAttributeRange() を参照のこと。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返す。
bool QOpcUaNode::writeAttributes(const QOpcUaNode::AttributeMap &toWrite, QOpcUa::Types valueAttributeType = QOpcUa::Types::Undefined)
toWrite で指定された属性と値の書き込み操作を実行する。
非同期呼び出しが正常にディスパッチされた場合、true
を返す。
valueAttributeType パラメータを使用して、value 属性の型情報を指定することができる。他のすべての属性は既知の型を持っています。
writeAttribute()も参照 。
bool QOpcUaNode::writeValueAttribute(const QVariant &value, QOpcUa::Types type = QOpcUa::Types::Undefined)
type からの型情報を使用してvalue をノードの Value 属性に書き込む。
非同期呼び出しが正常にディスパッチされた場合はtrue
を返す。
writeAttribute()も参照してください 。
© 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.