如何使用.NET Standard SDK在OPCUA中实现AddNodes服务



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

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

是否有人已经使用这个SDK实现了AddNodes服务,并愿意给我一些如何实现的提示?您是否刚刚在自定义节点管理器上创建了自己的AddNodes方法并将节点添加到那里?一些代码片段将非常有用。非常感谢。

我认为你走在了正确的轨道上。CCD_ 1由CCD_ 2自动生成。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);
}

最新更新