【问题标题】:How to implement the AddNodes service in OPCUA using the .NET Standard SDK如何使用 .NET Standard SDK 在 OPCUA 中实现 AddNodes 服务
【发布时间】:2021-01-25 05:46:53
【问题描述】:

我对 OPCUA 还很陌生,可以举一个例子来说明如何使用 official .NET Standard SDK 在 C# 中实现 AddNodes 服务。 基本上我想要做的是实现我的自定义服务器并能够从客户端调用 AddNodes 服务以将一些节点添加到文件夹(并设置它们的初始值)。

我看到有各种各样的类可以继承,所以我认为最好从 StandardServer 继承并覆盖 AddNodes 方法。之后,我可以创建自己的自定义节点管理器并在此方法中调用它。但是,示例节点管理器都没有实现 AddNodes 方法(甚至 INodeManager 接口也没有)所以我想知道我是否走在正确的轨道上。

有人已经使用这个 SDK 实现了 AddNodes 服务并且愿意给我一些提示吗?您是否刚刚在自定义节点管理器上创建了自己的 AddNodes 方法并在那里添加节点?一些代码 sn-ps 会很有帮助。谢谢!

【问题讨论】:

    标签: c# .net iot .net-standard opc-ua


    【解决方案1】:

    我认为你在正确的轨道上。 SessionServerBaseOpc.Ua.Services.wsdl 自动生成。 StandardServer 继承自 SessionServerBase,仅覆盖虚拟方法的 子集

    所以你需要覆盖StandardServer中的AddNodes,下面是添加节点的示例。

    public override ResponseHeader AddNodes(
        RequestHeader requestHeader,
        AddNodesItemCollection nodesToAdd,
        out AddNodesResultCollection results,
        out DiagnosticInfoCollection diagnosticInfos)
    {
        results = null;
        diagnosticInfos = null;
    
        ValidateRequest(requestHeader);
    
        foreach (var item in nodesToAdd)
        {
            if (item.NodeClass == NodeClass.Variable)
            {
                var node = new VariableNode
                {
                    // TODO: Initialization
                };
                m_serverInternal.CoreNodeManager.AttachNode(node);
            }
            else if (item.NodeClass == NodeClass.VariableType)
            {
                var node = new VariableTypeNode
                {
                    // TODO: Initialization
                };
                m_serverInternal.CoreNodeManager.AttachNode(node);
            }
            else
            {
                // TODO
            }
        }
    
        return CreateResponse(requestHeader, StatusCodes.Good);
    }
    

    【讨论】:

    • 完美,我就是这样做的,效果很好。
    猜你喜欢
    • 2021-06-27
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多