OPCUAクライアントがOPCUAサーバアドレス空間の構築について知らないシナリオがありますが、依然としてクライアントが接続資格情報を知っています。 OPCUAクライアントは、ネームスペースとノードIDなしでサーバーからのデータに引き続きアクセスできますか。サーバへのOPC UAクライアントデータアクセス
クライアントリクエスト中に名前空間とノードIDを指定してサーバーデータを取得しています。
OPC UAデータへのアクセス詳細については誰にも教えてください。
OPCUAクライアントがOPCUAサーバアドレス空間の構築について知らないシナリオがありますが、依然としてクライアントが接続資格情報を知っています。 OPCUAクライアントは、ネームスペースとノードIDなしでサーバーからのデータに引き続きアクセスできますか。サーバへのOPC UAクライアントデータアクセス
クライアントリクエスト中に名前空間とノードIDを指定してサーバーデータを取得しています。
OPC UAデータへのアクセス詳細については誰にも教えてください。
TL; DR;はい、Browse Serviceを使用して、サーバー内のすべてのノードのリストを取得できます。
より詳細な答え:
すべてのサーバーには、少なくとも次のノード(フォルダ)を持っている必要があります。括弧内には、仕様によって与えられる名前空間0のノードID(OPC UA基本名前空間)があります。
- Root (i=84)
- Objects (i=85)
- Types (i=86)
- Views (i=87)
OPC UA仕様パート4は、ここではOPC UA Specificationから登録後、無料でダウンロードできます。それはサービスBrowse
とBrowseNext
を定義します。これらのサービスを使用すると、開始ノード(上のノードの1つ、たとえばルート=名前空間0、ID 84)を指定して、そのすべての子を取得できます。あなたはここで、おそらくいくつかのサンプルコードを見つけることができますnode-opcua
で
をブラウズノードについては、ここに示されています: https://github.com/open62541/open62541/blob/master/examples/client.c#L55
あなたの答えをありがとう!私はブラウズノードについて知っています。例えば、私はノードの名前だけを知っています(例: 'MotorID')。値を変更するためにMotorIDの比較を見つけるためにすべてのオブジェクトをブラウズする必要がありますか、他の良い方法がありますか? (私にとって、最も簡単で効率的な方法は、(ns:i :)を知っていることです。 –
ノードの名前だけを知っていれば、すべてのノードをブラウズする必要はありません親ノード名、つまりパス(/ Objects/Stuff/MotorId)も知っていれば、 'TranslateBrowsePathToNodeId'というサービスを使うことができます。これは、特定のノードIDを与えますパス。 – SailAvid
を以下の提案は、あなたの質問に答えるならば、それを受け入れてください。参照:https://stackoverflow.com/help/someone-answers – SailAvid
[OPC UA:サーバーのルートノードを参照する最小限のコード]の複製が可能です。(https://stackoverflow.com/questions/30573689/opc- ua-minimal-code-that-browses-the-root-of-a-server) – astrowalker