如何使用 OPCFoundation.NetStandard.Opc.Ua 检索 OPC 项目

How to retrieve an OPC item with OPCFoundation.NetStandard.Opc.Ua

我尝试使用 NuGet 包 OPCFoundation.NetStandard.Opc.Ua 从 opc 服务器检索数据。但我不知道如何通过名称 ("Channel1.Device1.Tag1") 直接解决单个项目以便阅读或订阅。

我已经从 OPCFoundation 的 GitHub 存储库下载并研究了完整的示例代码,但我只找到了检索所有可用项(通过浏览服务器)然后让用户选择其中一项的代码。

我需要以某种方式直接从它的名称 ("Channel1.Device1.Tag1") 中查找项目以获得 NodeId-实例,然后我可以将其用于阅读或订阅(一旦我有了 NodeId,我就知道该怎么做了)。

如果有人能 post 一个简短的例子或指出一些可以完成这项工作的示例代码,我将非常高兴!

建立会话后,一种选择是在 Objects 文件夹中查找 _System 对象,以便获取 命名空间索引 it seems can change.

ReferenceDescriptionCollection refdescs;

      byte[] continuationPoint;


      session.Browse(null, null, ObjectIds.ObjectsFolder, 0u, BrowseDirection.Forward, ReferenceTypeIds.HierarchicalReferences, true, (uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, out continuationPoint, out refdescs);


      foreach (var item in refdescs)
      {
        if (item.DisplayName.Text == "_System")
        {
          var nsi = item.NodeId.NamespaceIndex.ToString();
          Console.WriteLine($"Namespace Index {nsi}");
        }
      }

获得后,reading/writing 的标识符将采用以下格式

ns=[NamespaceIndex];s=Channel1.Device1.Tag1