我使用Milo项目创建了一个OPC UA项目来创建一个OPC UA客户端。我对OPC UA仍然很陌生。现在我被困在一个特定节点的数据更改后,寻找最佳实践来读取来自多个节点的值。OPC UA - 客户端 - Milo - 最佳实践 - 订阅数据变更
信息模型是这样的: RfidSensorType
我的服务器上我都会有这样的RfidSensorType的几个对象。客户端在CurrentAtTag节点上创建订阅以侦听数据更改。
我的问题: 当CurrentAtTag的值被改变时,我的客户端会调用一个回调函数,它包含了UaMonitoredItem和CurrentAtTag的DataValue。 在我的应用程序中,我需要处理(同时)Station,IOLPort和CurrentValue的值,这些值也是在那个时候改变的。 如何在CurrentAtTag回调中访问这些值?
我唯一的解决方案是:在该回调中使用同步读取请求 - >这是一种合法的方法吗?
我的研究: 1)触发服务 我已经看到存在一个TriggerigService,只有当一个特定节点改变它的值时,监视器项才会发送报告。 问题:这会叫几个callsbacks和NOZ只是one..i需要的所有信息,同时进一步处理他们..
2)事件监视 在事件监控一个可以选择“事件域”,这将返回每个事件通知。我不确定是否可以选择CurrentAtTag,Station,IOLPort和CurrentValue ...
比如'CurrentAtTag'和'IOLPort'之间的更新时间有很大不同吗?就像第一个变速器变慢了,第二个变化很快?如果没有,我只需要订阅所有这些内容,然后查看性能是否正常。 – astrowalker
Hi @astrowalker, 不,他们几乎在同一时间。我已经考虑过采用所有节点。 问题是我需要在我的应用程序中调用另一个需要所有值的方法。我不知道我如何能做到这一点,如果我得到不同的回调值... 你知道我的意思吗? 也许这个问题很容易解决,但我暂时没有想法。 – Niko
看起来好像你可能没有正确地考虑你的架构。如果许多数据字段一起改变,那么它们确实属于单个组合单元,而不是不同的字段。 –