【问题标题】:Retrieving a node solely based on its Tag仅根据其标签检索节点
【发布时间】:2019-05-24 13:36:18
【问题描述】:

一位客户实施了 OPC-UA 服务器并提供了一些文档供我们访问它。我们拥有的唯一信息是与服务器联系的端点以及数据点链接到的标签。

我必须实现一个客户端,而不能访问服务器来测试它。这是足够的信息吗?我想我们至少需要一些命名空间 uri。据我了解,为了使用 translateBrowsePathsToNodeIds 之类的功能,我还需要知道一些命名空间 ID。

例如,在 python-opcua 中它会是这样的:

mynode = client.uaclient.translate_browsepaths_to_nodeids(ua.QualifiedName("StaticData", 3))(不知何故不起作用,但这是另一个问题)

我发现的客户端示例都使用硬编码的命名空间 ID,这无济于事。

【问题讨论】:

    标签: opc-ua


    【解决方案1】:

    TranslateBrowsePathToNodeIds通常在针对类型定义进行编程时使用,您知道 BrowseNames 的路径是什么,因为它们是由路径中每个节点的类型定义定义的。

    如果这听起来不像您的情况,那么您应该退回文档以包含您需要访问的所有节点的 NodeId。

    【讨论】:

    • 我在 OPC-UA 领域的知识仅限于这个特定项目,但我想他们有理由只提供标签而不仅仅是节点 ID——除非他们只是为了帮助人们通过 GUI 查看数据时可以理解数据。此外,我的理解是节点 ID(在某些情况下,名称空间 ID?)不一定是静态的,可以更改。那么你会同意仅仅了解标签是不够的吗?标签本身的格式为例如“品牌.机器.传感器.温度”。
    • 试图从标签名称中得出结论只会是猜测。也许 TranslateBrowsePaths 会起作用,或者你可以猜到 NodeId,但我认为你需要更多信息。虽然可以从服务器中添加或删除节点,但给定节点的 NodeId 应该是持久的,即使在重新启动时也是如此。
    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多