Subscription 订阅
OpcUaSubscription 是订阅容器, 管理一批 MonitoredItem (MI), 提供 DataChanged 事件.
子页跳转
- 创建订阅请参考 创建 Subscription.
- 添加 / 批量添加 MonitoredItem 请参考 添加 MonitoredItem.
- 改 publishingInterval / lifetime / sampling 请参考 Modify.
- 切 Disabled / Sampling / Reporting 请参考 SetMonitoringMode.
- 请求重发指定 SeqNo 请参考 Republish.
- DataChanged 字段与线程模型请参考 DataChanged 事件.
- OPC UA 报警 / 事件订阅请参考 事件订阅.
一分钟速览
// 创建
using var sub = ua.CreateSubscription(publishingIntervalMs: 500);
// 数据变更回调
sub.DataChanged += (s, e) =>
Console.WriteLine($"{e.NodeId} = {e.ValueString} ({e.Status})");
// 添加 MI
sub.Add("ns=2;s=Counter");
sub.Add("ns=2;s=Temperature");
// 批量添加
var nodes = Enumerable.Range(1, 100).Select(i => $"ns=2;s=T{i}").ToList();
var results = sub.AddMany(nodes);
// 改单个 MI 的采样间隔
sub.ModifyItem(handle, samplingIntervalMs: 100);
// 暂停 / 恢复采集
sub.SetMode(handle, MonitoringMode.Disabled);
sub.SetMode(handle, MonitoringMode.Reporting);
// 移除
sub.Remove(handle);
订阅生命周期事件
ua.Events.ServerEvent += (s, e) =>
{
if (e.Category == OpcUaEventCategory.SubscriptionCreated) { /* ... */ }
if (e.Category == OpcUaEventCategory.MonitoredItemAdded) { /* ... */ }
if (e.Category == OpcUaEventCategory.SubscriptionLost) { /* ... */ }
};
详见 Session 事件.