2017-08-07 171 views
1

我有OPCUA客户端不了解OPCUA服务器地址空间构造的情况,客户端仍然知道连接凭证。 OPCUA客户端是否仍然可以从服务器访问没有名称空间和节点ID的数据。OPC UA客户端数据访问服务器

我一直通过在客户端请求期间指定名称空间和节点ID来获取服务器数据。

任何人都可以帮助我知道OPC UA数据访问的详细信息?

+0

如果下面的建议,回答你的问题,请接受它。另请参阅:https://stackoverflow.com/help/some one-answers – SailAvid

+0

[OPC UA:浏览服务器根节点的最小代码]的可能重复(https://stackoverflow.com/questions/30573689/opc- ua-minimal-code-that-browses-the-root-node-of-a-server) – astrowalker

回答

2

TL; DR;是的,您可以使用浏览服务获取服务器内所有节点的列表。


更详细的解答:

每个服务器至少应该有以下节点(文件夹)。括号中是规范给出的名称空间0(OPC UA基本名称空间)中的节点ID。

- Root (i=84) 
    - Objects (i=85) 
    - Types (i=86) 
    - Views (i=87) 

OPC UA规范第4部分可以从这里注册后免费下载OPC UA Specification。它定义了服务BrowseBrowseNext。使用这些服务,您可以指定一个起始节点(即上面的一个节点,例如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

+0

感谢您的回答!我知道浏览节点,例如我只知道节点的名称(例如:'MotorID')。您是否需要浏览所有对象才能找到MotorID比较来更改值或者是否有其他更好的方法。 (因为我可以看到,最简单和有效的方式是,如果我知道(ns:i :) –

+0

如果您只知道节点的名称,并且没有其他东西需要浏览槽中的所有节点(您也可以应用一些过滤器如果你也知道父节点的名字,即路径(/ Objects/Stuff/MotorId),那么你可以使用服务'TranslateBrowsePathToNodeId',它给你一个特定的节点ID路径。 – SailAvid

相关问题