在节点 OPCUA 中创建 Table
Creating a Table in Node OPCUA
如何使用双向镜像将地址 space 扩展到您的 SQL 数据库中,这会立即反映对端变量或数据库端的任何值更改。
因此,如果我在数据库中有一个 table,其值可以从外部更改(例如,可以添加、删除或更新数据),我的 node-opcua 服务器将如何收到通知?
在OPC UA中,创建的任何服务器都将遵循SoA架构。意思是只有当某些服务请求时,服务器才会处理请求。
在您的情况下,您可以借助订阅数据更改和监视将数据库中的 table 公开给客户端的节点来实现。只有当该节点暴露给客户端时,才能订阅数据更改。
节点订阅数据更改后,服务器需要客户端提供 2 个值。
- 采样间隔:服务器刷新源数据的频率
- 发布间隔:客户端向服务器请求通知的频率。
假设采样间隔为 100 毫秒,发布间隔为 1 分钟。这意味着服务器必须每 100 毫秒从源(在您的情况下它可能是数据库)收集样本,但是客户端将每 1 分钟请求一次所有收集的样本。
您将能够使用数据库中 table 的更改值更新服务器。
如果SDK支持多线程,那么还有另一种方法可以实现问题中提到的。
- 在服务器应用程序中,让数据源(即数据库)对象在一个线程中运行。
- 创建对服务器应用层的回调并使用此回调初始化数据源对象。
- 当数据库中的数据发生变化时,触发数据库对数据源线程的调用。如果是需要的数据,需要通知服务器,调用之前初始化的回调函数。
我希望这能回答你的问题。
如何使用双向镜像将地址 space 扩展到您的 SQL 数据库中,这会立即反映对端变量或数据库端的任何值更改。 因此,如果我在数据库中有一个 table,其值可以从外部更改(例如,可以添加、删除或更新数据),我的 node-opcua 服务器将如何收到通知?
在OPC UA中,创建的任何服务器都将遵循SoA架构。意思是只有当某些服务请求时,服务器才会处理请求。
在您的情况下,您可以借助订阅数据更改和监视将数据库中的 table 公开给客户端的节点来实现。只有当该节点暴露给客户端时,才能订阅数据更改。
节点订阅数据更改后,服务器需要客户端提供 2 个值。
- 采样间隔:服务器刷新源数据的频率
- 发布间隔:客户端向服务器请求通知的频率。
假设采样间隔为 100 毫秒,发布间隔为 1 分钟。这意味着服务器必须每 100 毫秒从源(在您的情况下它可能是数据库)收集样本,但是客户端将每 1 分钟请求一次所有收集的样本。
您将能够使用数据库中 table 的更改值更新服务器。
如果SDK支持多线程,那么还有另一种方法可以实现问题中提到的。
- 在服务器应用程序中,让数据源(即数据库)对象在一个线程中运行。
- 创建对服务器应用层的回调并使用此回调初始化数据源对象。
- 当数据库中的数据发生变化时,触发数据库对数据源线程的调用。如果是需要的数据,需要通知服务器,调用之前初始化的回调函数。
我希望这能回答你的问题。