如何使用 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
我尝试使用 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