csharp 等待opc信号的示例
时间: 2023-08-28 19:05:19 浏览: 49
以下是一个使用C#等待OPC信号的示例代码:
```csharp
using System;
using System.Threading.Tasksusing Opc.Ua;
using Opc.Ua.Client;
class Program
{
static async Task Main(string[] args)
{
// 创建一个OPC UA客户端
var endpointUrl = "opc.tcp://localhost:4840"; // OPC UA服务器的地址
var client = new OpcClient(new Uri(endpointUrl));
// 连接到OPC UA服务器
await client.Connect();
// 在OPC UA服务器上查找节点
var nodeId = new NodeId("MyVariable", 2); // 要订阅的节点ID
var node = await client.BrowseNode(nodeId);
// 创建一个订阅
var subscription = new Subscription(client.DefaultSubscription) { PublishingInterval = 1000 };
await client.Subscribe(subscription);
// 添加订阅的节点
var monitoredItem = new MonitoredItem(subscription.DefaultItem) { StartNodeId = nodeId };
await client.AddItem(subscription, monitoredItem);
Console.WriteLine("等待OPC UA信号...");
// 等待信号
monitoredItem.Notification += (sender, e) =>
{
var value = e.Value?.Value;
if (value != null)
{
Console.WriteLine($"收到信号:{value}");
}
};
await Task.Delay(-1);
}
}
```
这个示例使用OPC UA的客户端库来连接到OPC UA服务器,并订阅一个节点的值。当节点的值发生变化时,程序将输出收到的信号。你可以根据自己的需要来修改节点ID和输出信息。