如何使用 ua-.netstandard 读取复杂类型

问题描述 投票:0回答:1

我正在使用 UA-.NETStandard 来开发带有 .NET 的 OPC UA 客户端/服务器,但我面临一些挑战。这是我的代码:

var session = Session.Create(
    config,
    new ConfiguredEndpoint(null, selectedEndpoint, EndpointConfiguration.Create(config)),
    false, "", 60000, null, null
).GetAwaiter().GetResult();

InitializeComplexTypeSystem(session);

var result = session.ReadValue("ns=3;s=\"H35dispenser\".\"ID\"");
public static ComplexTypeSystem InitializeComplexTypeSystem(Session session)
{
    Console.WriteLine("Initializing ComplexTypeSystem");
    ComplexTypeSystem complexTypeSystem = new ComplexTypeSystem(session);
    complexTypeSystem.Load().Wait();
    Console.WriteLine("Initialized ComplexTypeSystem");
    return complexTypeSystem;
}

代码成功读取PLC上的指定节点,但该节点使用了自定义UDT。虽然我可以手动解析响应以匹配数据结构,但我希望有更好的方法来处理自定义 UDT。我检查了 UA-.NETStandard GitHub 上的示例,但没有找到解决方案。有什么指导吗?节点本身如下所示: UDT on the PLC

c# opc-ua
1个回答
0
投票

您可能对此感兴趣:'EncodeableFactory.GlobalFactory.AddEncodeableType(typeof(Opc.Complex.Types.YourComplexType))'

您必须事先在 C# 代码中定义(如果可能的话自动生成)复杂类型。

这个答案可以为您指明正确的方向。它使用自定义复杂的“矢量”类型。

© www.soinside.com 2019 - 2024. All rights reserved.