OpcUaHelper通讯过程简化应用
1、添加Nuget包
开源的项目github
OpcUaHelper

<ItemGroup>
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua" Version="1.5.374.158" />
<PackageReference Include="OpcUaHelper" Version="2.2.0" />
</ItemGroup>
2、代码实现
#region OpcUaHelper应用 private static async void OpcUaHelperTest() { // 目的: // 连接(匿名、用户名密码、证书)、 // 读取(同步、异步、订阅)、 // 写入(同步、异步)、 // 浏览节点 OpcUaHelper.OpcUaClient client = new OpcUaHelper.OpcUaClient(); //client.UserIdentity = new UserIdentity(new AnonymousIdentityToken());//匿名连接 client.UserIdentity = new UserIdentity("User1", "123456"); await client.ConnectServer("opc.tcp://127.0.0.1:49320");//必须等待连接成功,才能进行后续操作 // 浏览节点 BrowseDescriptionCollection bd = new BrowseDescriptionCollection(); BrowseDescription bd1 = new BrowseDescription(); bd1.NodeId = "ns=2;s=通道 2.设备 1"; bd.Add(bd1); var collection = OpcUaHelper.FormUtils.Browse(client.Session, bd, false); foreach (var item in collection) { Console.WriteLine(item.NodeId); } // 读取 ushort value = client.ReadNode<ushort>("ns=2;s=通道 2.设备 1.A"); DataValue dataValue = client.ReadNode("ns=2;s=通道 2.设备 1.b"); value = await client.ReadNodeAsync<ushort>("ns=2;s=通道 2.设备 1.b"); List<NodeId> nodeIds = new List<NodeId>(); nodeIds.Add("ns=2;s=通道 2.设备 1.A"); nodeIds.Add("ns=2;s=通道 2.设备 1.b"); var nodeIdsValues = client.ReadNodes(nodeIds.ToArray()); // 写入 bool state = client.WriteNode<ushort>("ns=2;s=通道 2.设备 1.A", 666); state = await client.WriteNodeAsync<ushort>("ns=2;s=通道 2.设备 1.b", 888); string[] nodes = new string[] { "ns=2;s=通道 2.设备 1.A", "ns=2;s=通道 2.设备 1.b" }; object[] values = new object[] { (ushort)11, (ushort)22 }; client.WriteNodes(nodes, values); //订阅 client.AddSubscription("123", "ns=2;s=通道 2.设备 1.A", (key, mi, ea) => { }); client.RemoveSubscription("123"); client.RemoveAllSubscription(); } #endregion
服务器KEPServer EX不是免费的,一个月以内可以,之后不破解2小时断一次,可以使用AxiuOpcua.Server服务器demo
学习不破解也可以使用,不需要使用真实的协议
使用模拟的也可以
从OPC到设备才涉及到协议
浙公网安备 33010602011771号