我正在使用 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 上的示例,但没有找到解决方案。有什么指导吗?节点本身如下所示:
您可能对此感兴趣:'EncodeableFactory.GlobalFactory.AddEncodeableType(typeof(Opc.Complex.Types.YourComplexType))'
您必须事先在 C# 代码中定义(如果可能的话自动生成)复杂类型。
这个答案可以为您指明正确的方向。它使用自定义复杂的“矢量”类型。