0

我一直在寻找有关如何面对我要解释的问题的信息,但不幸的是我无法解决它。

我想创建一个ObjectType ProgrammType 的对象程序,其中包含 ObjectType CommandType的实例数组。Programm对象中这些命令对象的顺序是相关的。

我正在使用 ModelDesign XML 文件来创建信息模型。关于我想要实现的信息建模,我已经看到有可能在ProgrammType定义中使用 ModellingRule“OptionalPlaceholder”,尽管说实话,这个 ModellingRule 的用法对我来说并不完全清楚。

所以到目前为止我所做的是将带有 ModellingRule “OptionalPlaceholder”的“CommandType”类型的对象作为子对象添加到ProgrammType定义中。然后,在实例化部分,我正在创建Command对象,最后我使用Programm对象中的“HasOrderedComponent”来引用它们。我不确定这种方法是否真的有意义,它是否利用了先前在ProgrammType定义中定义的“OptionalPlaceholder”。如果这不是他们正确的做法,请让我知道应该如何做。

据我了解,“HasOrderedComponent”引用意味着服务器始终以相同的顺序返回元素。

我从 ModelDesign XML 文件生成 UANodeSet XML 文件,然后我正在使用这个 NodeSet 创建一个 Open62541 服务器。

所以我的问题是:

1.) 我的建模方法对吗?有没有更好的方法来建模我在开始时描述的内容?

2.) 当我从基于 Open62541 的客户端检索时,在 Open62541 服务器的Programm对象中使用“HasOrderedComponent”引用的命令。

  • 可以预测它们会按什么顺序出现吗?或者返回的顺序总是一样的,但是这个顺序不能设置。
  • 它们会按照在 ModelDesign 文件中定义的顺序返回吗?
  • 如果我从我编写的“手动”代码创建节点。命令的返回顺序是在我的代码中添加引用的顺序吗?

非常感谢您!顺便说一句,一旦我成功地对我正在做的工作进行建模,我就可以准备一个关于如何在 OPC UA 中建模的详细说明,如果您认为它可能相关,可以使用它来扩展 Open62541 文档。

此致

4

1 回答 1

0

If you know ahead of time what Command Objects and how many of them will be referenced by Programm then you do not need the OptionalPlaceholder rule at all, simply make HasComponent references from Programm to each of the Command Objects.

OptionalPlaceHolder is for when the instances and their browse names are not known at modeling time. In that case, you would add one Command Object with a HasComponent reference and then add a HasModellingRule of OptionalPlaceholder to that "placeholder" object.

This is explained in more detail in OPC UA Part 3.

于 2020-11-16T13:48:07.290 回答