OPC UA C#的订阅与发布模式

   2024-10-02 3470
核心提示:在OPC UA中,订阅与发布模式是一种常用的通信模式,用于在客户端和服务器之间实现实时数据传输。下面是一个简单的示例,演示如何

在OPC UA中,订阅与发布模式是一种常用的通信模式,用于在客户端和服务器之间实现实时数据传输。下面是一个简单的示例,演示如何在C#中使用OPC UA库实现订阅与发布模式:

首先,需要引用OPC UA库。可以通过NuGet包管理器安装"Opc.Ua"库。

创建一个OPC UA客户端,并连接到OPC UA服务器:

using Opc.Ua;using Opc.Ua.Client;Uri serverUri = new Uri("opc.tcp://localhost:4840");var endpoint = new ConfiguredEndpoint(null, new EndpointDescription(serverUri));var session = Session.Create(null, endpoint, false, "OPC UA Client", 60000, new UserIdentity(new AnonymousIdentityToken()), null).Result;session.ReturnDiagnostics = DiagnosticsMasks.All;
创建一个订阅对象,并添加订阅回调函数:
var subscription = new Subscription(session.DefaultSubscription) { PublishingInterval = 1000 };subscription.Create();subscription.AddItEMS(new MonitoredItem(new ReadValueId { NodeId = "ns=2;i=1", AttributeId = Attributes.Value }, MonitoringMode.Reporting, new MonitoringParameters { ClientHandle = 1, QueueSize = 1, DiscardOldest = true }));subscription.AddItems(new MonitoredItem(new ReadValueId { NodeId = "ns=2;i=2", AttributeId = Attributes.Value }, MonitoringMode.Reporting, new MonitoringParameters { ClientHandle = 2, QueueSize = 1, DiscardOldest = true }));subscription.Notification += (sender, args) =>{    foreach (var notification in args.MonitoredItems)    {        Console.WriteLine($"Node: {notification.StartNodeId} Value: {notification.Value}");    }};
启动订阅,并等待数据更新:
subscription.ApplyChanges();subscription.SetPublishingMode(true);session.KeepAlive += (sender, args) => session.KeepAlive();

通过以上步骤,我们实现了一个简单的OPC UA订阅与发布模式的示例。在实际应用中,可以根据需求添加更多订阅项和处理逻辑。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号