UCAsp.OPC是一个基于OPC基金会的库的支持DA和UA的OPC客户端C#的中间件,可以在不同的协议中轻松、透明地执行OPC Server操作。
UcAsp.Opc C#的客户端API共有15个,支持.Net 4.0~4.6;
一、如何连接一个OPC服务器:
例
DA:
OpcClient client = new OpcClient(new Uri("opcda://127.0.0.1/Matrikon.OPC.Simulation.1"));
UA:
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
在使用中通过Url的Scheme区分是DA还UA,开发者不用需要关心UA还是DA;
二、如何读取对应节点的值:
string r = client.Read("Random.String");
三、如何写入一个节点的值:
client.Write("Robot1.Axis1", 2.0090f);
上面两个环节UA和DA没有差别
四、节点变化监听:
该库采用的建立Group的方式监听组的变化情况,实现代码如下
public void UAGroup()
{
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
OpcGroup group = client.AddGroup("Test");
client.AddItems("Test", new string[] { "Robot1.Axis1", "Robot1.Axis2" });
group.DataChange += Group_DataChange;
Console.WriteLine(group);
}
private void Group_DataChange(object sender, System.Collections.Generic.List e)
{
foreach (OpcItemValue o in e)
{
Console.WriteLine(o.Value);
}
}
项目开源地址:https://github.com/servucn/UcAsp.Opc
如上图就是利用UcAsp.Opc制作的一个WWB SCADA的演示模型;