跳到主要内容

创建 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 事件.

下一步​