0

如何通过双向镜像将地址空间扩展到您的 SQL 数据库中,它会立即反映对端的变量或数据库端的任何值变化。因此,如果我在数据库中有一个表,其值可以从外部更改(例如可以添加、删除或更新数据),我的 node-opcua 服务器将如何得到通知?

4

1 回答 1

0

在 OPC UA 中,创建的任何服务器都将遵循 SoA 架构。这意味着服务器仅在某些服务请求时才会处理请求。

在您的情况下,您可以借助订阅数据更改和监控将数据库中的表公开给客户端的节点来实现这一点。只有当该节点暴露给客户端时,才能订阅数据更改。

一旦节点订阅数据更改,服务器需要来自客户端的 2 个值。

  • 采样间隔:服务器应该多久刷新一次来自源的数据
  • 发布间隔:客户端向服务器请求通知的频率。

例如,采样间隔为 100 毫秒,发布间隔为 1 分钟。这意味着服务器必须每 100 毫秒从源(在您的情况下可能是数据库)收集样本,但客户端将每 1 分钟请求所有收集的样本。

您将能够使用数据库中表的更改值来更新服务器。

如果 SDK 支持多线程,那么还有另一种方法可以实现上述问题。

  • 在服务器应用程序中,让数据源(即数据库)对象在一个线程中运行。
  • 创建一个到服务器应用层的回调并用这个回调初始化数据源对象。
  • 当数据库中的数据发生变化时,触发从数据库调用数据源线程。如果是需要的数据,需要通知服务器,调用之前初始化的回调函数。

我希望这回答了你的问题。

于 2017-02-09T03:10:37.697 回答