我有OPCUA客戶端不瞭解OPCUA服務器地址空間構造的情況,客戶端仍然知道連接憑證。 OPCUA客戶端是否仍然可以從服務器訪問沒有名稱空間和節點ID的數據。OPC UA客戶端數據訪問服務器
我一直通過在客戶端請求期間指定名稱空間和節點ID來獲取服務器數據。
任何人都可以幫助我知道OPC UA數據訪問的詳細信息?
我有OPCUA客戶端不瞭解OPCUA服務器地址空間構造的情況,客戶端仍然知道連接憑證。 OPCUA客戶端是否仍然可以從服務器訪問沒有名稱空間和節點ID的數據。OPC UA客戶端數據訪問服務器
我一直通過在客戶端請求期間指定名稱空間和節點ID來獲取服務器數據。
任何人都可以幫助我知道OPC UA數據訪問的詳細信息?
TL; DR;是的,您可以使用瀏覽服務獲取服務器內所有節點的列表。
更詳細的解答:
每個服務器至少應該有以下節點(文件夾)。括號中是規範給出的名稱空間0(OPC UA基本名稱空間)中的節點ID。
- Root (i=84)
- Objects (i=85)
- Types (i=86)
- Views (i=87)
OPC UA規範第4部分可以從這裏註冊後免費下載OPC UA Specification。它定義了服務Browse
和BrowseNext
。使用這些服務,您可以指定一個起始節點(即上面的一個節點,例如Root = namespace 0,ID 84)並獲取其所有子節點。
在node-opcua
您可以在這裏也許可以找到一些示例代碼:https://github.com/node-opcua/node-opcua/blob/fd5e48bac996625aaa7c177d1f8ed0c40ee92fbc/test/end_to_end/u_test_e2e_BrowseRequest.js
在open62541的例子爲瀏覽節點如下所示: 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/some one-answers – SailAvid
[OPC UA:瀏覽服務器根節點的最小代碼]的可能重複(https://stackoverflow.com/questions/30573689/opc- ua-minimal-code-that-browses-the-root-node-of-a-server) – astrowalker