【发布时间】:2017-02-18 19:06:21
【问题描述】:
我使用 Milo 项目创建了一个 OPC UA 客户端来创建 OPC UA 客户端。我对 OPC UA 还是很陌生。现在,我一直在寻找在一个特定节点发生数据更改后从多个节点读取值的最佳实践。
信息模型如下所示: RfidSensorType
在我的服务器上,我将拥有这个 RfidSensorType 的几个对象。客户端在 CurrentAtTag 节点上创建订阅以侦听数据更改。
我的问题: 当 CurrentAtTag 的值更改时,将在我的客户端中调用一个回调函数,其中包含 UaMonitoredItem 和 CurrentAtTag 的 DataValue。 在我的应用程序中,我还需要处理(同时)Station、IOLPort 和 CurrentValue 的值,这些值也在那个时候发生了变化。 如何在 CurrentAtTag 的回调中访问这些值?
我唯一的解决方案是:在该回调中使用同步读取请求 -> 这是一种合法的方法吗?
我的研究: 1) 触发服务 我已经看到存在一个 TriggerigService,它监控项目只有在一个特定节点更改它的值时才会发送报告。 问题:这将调用几个回调,而只调用一个......我需要同时处理所有信息来进一步处理它们......
2) 事件监控 在事件监控中,可以选择将针对每个事件通知返回的“事件字段”。我不确定是否可以选择 CurrentAtTag、Station、IOLPort 和 CurrentValue...
【问题讨论】:
-
例如
CurrentAtTag和IOLPort之间的更新时间是否有很大不同?比如第一个是慢换,第二个是快换?如果不是,我会简单地订阅所有这些,看看性能是否还可以。 -
嗨@astrowalker,不,他们几乎同时。我已经考虑订阅所有节点。问题是我需要在我的应用程序中调用另一个需要所有值的方法。如果我在不同的回调中获得值,我不确定我该怎么做......你知道我的意思吗?也许这个问题很容易解决,但我暂时没有想法。
-
您似乎没有正确考虑您的架构。如果多个数据字段一起更改,则它们确实属于单个组合单元,而不是不同的字段。