【发布时间】:2023-03-29 15:12:01
【问题描述】:
我正在使用 OPC-UA .Net 堆栈学习 OPC-UA。订阅和发送数据的示例是在服务器端以 1 秒的刷新周期显式创建的 - 即每秒更新变量的值,其余的(通知客户端)由 OPC-UA 堆栈处理。由于循环是手工制作的,这意味着即使根本没有订阅它也可以工作。
好的。但是我想稍微反转一下——不要给变量设置静态值,不要依赖这个手动刷新周期,而是每当变量即将被读取(订阅需求)时,动态计算值并返回它给客户。
我在变量上添加了OnReadValue 处理程序,当客户端订阅该值时,它被触发,计算并返回该值。几乎正是我所希望的——问题是它只完成一次。
我猜由于客户端在某个时间间隔内请求更新,因此在服务器上会有一些循环在这样的时间间隔内进行。如何告诉服务器再次读取变量(以触发处理程序)?
【问题讨论】:
-
您不能通过节点 ID 读取值来手动更新值吗?通用客户端示例实现应该包含相应的代码。
-
@ManfredRadlwimmer,这是关于服务器(而不是客户端)的内部结构。这里我想怎么做——客户端以 5 秒的间隔订阅一些变量。所以服务器每 5 秒尝试读取一次(我猜)。在这种情况下,我想在服务器尝试刷新变量时准确地从实际硬件中读取值(在服务器上)。
标签: c# subscription opc-ua