跳到主要内容

创建 Subscription

public OpcUaSubscription CreateSubscription(double publishingIntervalMs = 500.0);
前置阅读 / 配套

参数

参数默认说明
publishingIntervalMs500.0服务端推送数据的最小间隔, 服务端可能 revise (调整)

例子

using var sub = ua.CreateSubscription(publishingIntervalMs: 500);
Console.WriteLine($"Subscription created with id={sub.SubscriptionId}");
Console.WriteLine($"Actual interval = {sub.PublishingIntervalMs}ms"); // 服务端 revised

多订阅分流

如果一个应用既要 100 ms 高频订阅 (运动数据) 又要 5000 ms 低频订阅 (环境温度), 创建 2 个 Subscription 分流, 不要混在一个里:

using var fast = ua.CreateSubscription(100);
fast.Add("ns=2;s=AxisPosition");

using var slow = ua.CreateSubscription(5000);
slow.Add("ns=2;s=AmbientTemperature");

每个 Subscription 都是独立的发布节奏, 互不影响.


OpcUaSubscription 公共属性

类别属性类型访问说明
标识SubscriptionIduintR服务端视角的订阅 ID
HandleuintRC 层句柄 (internal)
SessionDarraOpcUaR所属 Session
配置PublishingIntervalMsdoubleR实际生效的发布间隔 (revised)
PublishingEnabledStatusCodeW(set only) 启停整条订阅的发布 (Good=on, Bad=off)
MonitoredItemsMonitoredNodeIdsIReadOnlyList<string>R当前所有 MI 的 NodeId 快照

OpcUaSubscription 公共方法

方法说明
Add(nodeId, attribute = Value, samplingIntervalMs = -1)添加单 MI
AddMany(nodeIds, attribute = Value)批量添加
Remove(monitoredItemHandle)移除单 MI
RemoveByNodeId(nodeId)按 NodeId 移除全部对应 MI
Modify(publishingInterval, lifetime, keepAlive, ...)改订阅参数
SetMonitoringMode(mode, miHandles)批量切 mode
SetMode(handle, mode)切单个 MI mode
ModifyMonitoredItems(requests)批量改采样
ModifyItem(handle, samplingInterval, queueSize, discardOldest)改单 MI
Republish(seqNo)请求重发
Dispose()释放, 服务端 DeleteSubscription

事件

public event EventHandler<DataChangeEventArgs> DataChanged;

详见 DataChanged 事件.

下一步