MonitoredItem怎么取出值
时间: 2024-01-14 13:01:58 浏览: 12
您可以通过 `MonitoredItem` 对象的 `Notification` 事件来获取订阅到的变量值。每当变量的值发生变化时,客户端库会触发 `Notification` 事件,并将变量值作为事件参数传递给事件处理程序。
下面是一个示例代码:
```csharp
var session = new Opc.Ua.Client.Session();
// 连接到 OPC UA 服务器
var endpointUrl = "opc.tcp://localhost:4840"; // 服务器地址
session.Connect(new Uri(endpointUrl));
// 创建一个订阅对象
var subscription = new Opc.Ua.Client.Subscription(session.DefaultSubscription) {
PublishingInterval = 1000 // 发布间隔,单位为毫秒
};
// 添加一个变量节点
var nodeId = "ns=2;s=MyVariable"; // 变量节点的 NodeId
var item = new Opc.Ua.Client.MonitoredItem(subscription.DefaultItem) {
StartNodeId = nodeId, // 要订阅的变量节点的 NodeId
AttributeId = Opc.Ua.AttributeIds.Value // 要订阅的变量节点的属性
};
// 订阅变量值
item.Notification += (sender, e) => {
Console.WriteLine($"Value changed to {e.Value.WrappedValue}");
};
subscription.AddItem(item);
// 启动订阅
subscription.Create();
```
在上面的示例中,我们通过 `item.Notification` 事件来获取订阅到的变量值。在事件处理程序中,我们可以通过 `e.Value.WrappedValue` 属性来获取变量值。
需要注意的是,变量值的数据类型可能是任何 OPC UA 支持的数据类型。在处理变量值时,您需要根据变量的实际类型进行相应的转换和处理。