我正在使用Opc.Ua.Fx.Advanced Nuget软件包编写OPC UA服务器。我想保存任何节点的历史数据。我的NodeManager是
public class MyNodeManager : OpcNodeManager
{
private OpcDataVariableNode<int> machineIsRunningNode;
private OpcNodeHistorian machineIsRunningHistorian;
OpcNodeHistory<OpcHistoryValue> history = new OpcNodeHistory<OpcHistoryValue>();
OpcNodeHistory<OpcModifiedHistoryValue> modifiedHistory = new OpcNodeHistory<OpcModifiedHistoryValue>();
public MyNodeManager()
: base("http://mynamespace/")
{
}
protected override IEnumerable<IOpcNode> CreateNodes(OpcNodeReferenceCollection references)
{
// Define custom root node.
var machineNode = new OpcFolderNode(new OpcName("Machine", this.DefaultNamespaceIndex));
// Add custom root node to the Objects-Folder (the root of all server nodes):
references.Add(machineNode, OpcObjectTypes.ObjectsFolder);
// Add custom sub node beneath of the custom root node:
machineIsRunningNode = new OpcDataVariableNode<int>(machineNode, "IsRunning") { IsHistorizing = true };
machineIsRunningNode.AccessLevel |= OpcAccessLevel.HistoryReadOrWrite;
machineIsRunningNode.UserAccessLevel |= OpcAccessLevel.HistoryReadOrWrite;
machineIsRunningNode.AfterApplyChanges += MachineIsRunningNode_AfterApplyChanges;
machineIsRunningNode.BeforeApplyChanges += MachineIsRunningNode_BeforeApplyChanges;
history.Add(new OpcHistoryValue(machineIsRunningNode.Value, DateTime.Now, OpcStatusCode.Good));
//machineIsRunningHistorian.CreateHistory(new OpcContext())
// Return each custom root node using yield return.
yield return machineNode;
}
private void MachineIsRunningNode_BeforeApplyChanges(object sender, EventArgs e)
{
machineIsRunningNode.IsHistorizing = true;
}
private void MachineIsRunningNode_AfterApplyChanges(object sender, EventArgs e)
{
}
但是数据无法保存。我做错了什么?有人在这个包里工作吗?也许一些手册或教程?