2

我是 OPC 的新手。有些事情对我来说并不明显。

我正在使用来自:https ://github.com/digitalpetri 的 opcua 堆栈(uaserver) 作为客户端软件(目前,仅用于测试)我正在使用 United Automation 的UAExpert。

每个客户都有几个单位。每个单位可以有一些值。一切都在 postgres 数据库中。我需要通过 OPC 为客户公开这些值。

现在我看到它就像我必须实现的那样:

  • 每个客户一个文件夹节点。
  • 每个文件夹都有多个节点的引用,这些节点是单元
  • 每个单元都有一些节点,它们是值(在这里并不重要)

我的担忧:

  1. 我不知道这样的模型在意识形态上对于 OPC-UA 是否正确。
  2. 如果添加或删除了一个单元,我似乎不清楚如何通知 OPC 客户端。
  3. 此外,似乎我需要为所有客户文件夹、单元等准备所有节点,就在我的 OPC 服务器启动时。并为从未连接过的客户保留它们。有什么正确的方法可以避免这种情况吗?
  4. UAExpert 客户端在连接到服务器后立即订阅服务器对象。所有客户都需要吗?

抱歉,我真的想在阅读 OPC UA 规范时可以回答大部分问题,但也许有人可以在我挖掘大量论文之前回复它)

4

1 回答 1

2

广告 1. 基本上,是的。需要遵循一些额外的规则 - 例如,“具有值的节点”应该建模为变量(再次是节点,具有一些规定的属性和行为等)

广告 2。在许多情况下,这不是必需的。但是如果你需要它,它是使用 ModelChangeEvents 完成的(参见规范的第 3 部分)

广告 3. 这不是 OPC UA 规范的问题,而是您正在使用的特定堆栈/SDK/工具包的问题。他们中的许多人都有一个抽象的“节点管理器”的概念,可以将节点保存在内存中,或者它可以动态地提供它们 - 仅在需要时。所以你需要研究你手头的特定工具。除非地址空间很大,或者访问底层信息的速度很慢,一般都是预先准备好所有节点。

广告 4。基本上,是的。所有合理的客户端都需要从服务器对象(例如命名空间表)中获取一些东西,加上 OPC 合规性测试中的一些要求,这些要求需要客户端主动使用该信息。无论如何,大多数 SDK/工具包都会自动提供 Server 对象,而无需您进行额外的编程。

于 2015-12-11T14:14:22.727 回答