OPC UA 订阅在快速处理程序中获取显示名称

OPC UA Subscription get DisplayName in Fast Handler

目前我正在将 DataAcquisition 转移到订阅。由于我想观察多个值,因此我使用一组 MonitoredItems 创建一个订阅并使用 FastDataChangeNotificationEventHandler。在数据更改时, delegate/method 被调用,我可以毫无问题地获取新值。但是我看不到值属于哪个节点。我怎样才能得到这些信息?

处理程序的签名是

public static void FastHandler(Subscription subscription, 
            DataChangeNotification notification, IList<string> stringTable)

我在 notification.MonitoredItems.ElementAt(i).Value.Value 中找到了更新后的值,但是在元素(类型 MonitoredItemNotification)中没有 DisplayName 或节点 ID 允许我识别该值所属的节点。

参数subscription保存了关于实际订阅的信息,但没有告诉nodes/items中的哪个被更新了。

例如: 我正在监控节点 A、B 和 C。 A 和 C 改变它们的值 我按预期接到了 FastHandler 的电话 在 notification.MonitoredItems 中,我找到了 2 个项目,但没有迹象表明 link 有哪些节点。

我是不是漏掉了什么?我怎样才能 link 我正在研究的节点的那些新值?

我正在使用 OPC UA 的参考 .Net 实现

参考实施团队的某人帮助了我:

notification.MonitoredItems 元素还包含一个字段 ClientHandle - 这个 ClientHandle 映射对应的 subscription.MonitoredItems 元素的 ClientHandle.

我和同事花了很多时间 - 希望这可以帮助其他人。