将预触发值从OPC UA服务器发布到OPC UA客户端

问题描述 投票:0回答:1

任何人都可以帮我解决OPC UA的以下使用案例:从OPC UA服务器读取触发的测量值,其中附加的测量值发生在触发条件发生之前的时间段内。这个预触发周期是可配置的,比方说半秒。这允许查看在感兴趣的触发发生之前发生的事情。

我将如何进行?:一旦触发发生,使结果可用于OPC UA客户端,然后客户端应该在相同的触发器上操作以检索触发发生之前的时段的先前历史测量值。我希望有一个更聪明的方法,以便客户可以保持无国籍。并且不要求数据稍后到达,以便在将后触发值发送到客户端之前首先发送预触发值。

鉴于数据必须以任何方式缓冲以使其成为可能,这可行吗?:

  • OPC UA服务器内的后端测量数据提供程序可以从较早的半秒(配置的预触发周期)开始,将数据值重新开始返回给客户端。即不返回当前测量值,而是从预触发值开始。

我在Milo服务器示例中看到,在ExampleNameSpace中,AttributeValueDelegate构造用于动态节点。这似乎允许一次返回一个数据值,包括时间戳。如果我开始返回相对较旧的值,我没有正确的测试工具来查看它是否有效。

另一件事是这与监控项目和采样间隔有何关系。例如,如果客户要求每秒10个样本的采样率,那么它是否会检查返回的被监视项目是否实际在该范围内?即迟到的旧价值会被丢弃还是被客户拉入?

java eclipse opc-ua milo
1个回答
0
投票

无论你采用什么方法,它都需要客户知道你在这里做了什么,所以这里的方法可能有效:

在服务器中创建两个节点,一个保存当前测量值的标量,以及一个保存最后N个测量值的数组。

在客户端中,使用MonitoringMode.Reporting为标量值创建受监视项,并使用MonitoringMode.Sampling为数组值创建受监视项。然后使用SetTriggering服务在标量项和数组项之间创建一个触发链接。

这将导致您可以自由更新服务器中的数组值,而不会将值报告为已更改,但是当您更新标量值并报告更改时,也会报告数组的当前值。

作为旁注,我将避免依赖AttributeDelegate机制进行新开发。一旦0.3开始开发,它将被弃用并替换为其他东西。

© www.soinside.com 2019 - 2024. All rights reserved.