OPC UA:如何正确组织文件夹和节点

时间:2015-12-11 13:14:44

标签: java opc opc-ua

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

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

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

现在我觉得我必须实施:

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

我的担忧:

  1. 我不知道这种模型在OPC-UA上是否在意识形态上是正确的。
  2. 我似乎不清楚如果添加或删除了一个单元,我该如何通知OPC客户端。
  3. 此外,似乎我需要为我的OPC服务器启动准备所有客户文件夹,单元等的所有节点。并将它们保存在那些从未连接过的客户身上。有没有正确的方法来避免这种情况?
  4. UAExpert客户端在连接到服务器后立即订阅服务器对象。是否需要所有客户?
  5. 很抱歉,我真的猜测这些问题中的大部分都可以在阅读OPC UA规范时得到解答,但也许有人可以在我挖掘大量论文之前回复它们。

1 个答案:

答案 0 :(得分:1)

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

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

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

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