REDISANT 提供互联网与物联网开发测试套件 #
互联网与中间件:
推荐一个功能丰富的 OPC UA 客户端应用程序,可用于连接任何 OPC UA 服务器。您可以浏览服务器地址空间、读取和写入数据以及调用方法。 下载地址:OPCUA 客户端模拟器
对象、变量和方法的 ModelParent #
像 HasComponent 这样的 ReferenceTypes 可以很好地指示所引用的组件包含或描述其父级的某些特征。但是,当 查看 TypeDefinition 及其实例时,你会发现某些节点可能由多个节点共享,例如,静态类变量包含所有实例的相同值。 只要客户端只读取该节点的数据,它就不应该关心该节点是否共享。但是,一旦客户端打算更改节点,就希望客户端知 道在什么范围内更改了节点。当然,客户端可以浏览反向引用,以了解节点被引用的频率。但是,可能不提供反向引用, 这在具有静态类变量时是可以预料的,因为你通常不想引用类型的每个实例。此外,让其他几个节点引用节点并不能为 你提供使用哪个节点来定义其范围的信息。
为此,OPC UA 引入了称为 ModelParent 的概念。它由 HasModelParent 引用建模,该引用从所包含的节点指向定 义所包含节点范围的父节点。在类变量的示例中,它将是 TypeDefinition 节点。让我们看一个具体的例子。图 2.29 中 的 DeviceType 具有一个名为 Icon 的特性,表示图标5,例如用于展示类型的树控件。像 Device1 这样的实例共享此图标,也就是说,它们指向同一个节点。如果客户端想要更改单个实例 Device1 的图标,它不能只编写一个新的图标,因 为这会影响 TypeDefinition 和所有其他实例,如 Device2。客户端可以创建一个新的图标节点并让 Device1 引用该节 点。因此,客户端可以在 Device1 的范围内进行更改,而无需更改其他实例的 TypeDefinition。如果客户端想要更改 TypeDefinition 的图标,它可以通过遵循 HasModelParent 引用来意识到图标在正确的范围内。在这种情况下,图标的 改变也会影响实例,但这是改变 TypeDefinition 的图标时的预期用途。
图 2.29
哪些是允许的,哪些是不允许的?
特性不能是数据变量,反之亦然。这意味着特性不能由 HasComponent 引用,并且必须是 PropertyType 类型, 而数据变量不能由 HasProperty 引用,并且必须是 BaseDataVariableType 类型或子类型。
特性不能是任何分层引用的来源。但是,它们可以是非分层引用的来源。每当你需要向特性添加信息时,都必 须使用非分层引用。这意味着当你需要以相同的方式为数据变量和特性添加信息时,必须使用非分层引用。OPC UA 规范使用此方法,例如,当引用变量的历史配置时。
特性必须具有唯一的 BrowserNames,即任何节点都不能使用 HasProperty 引用引用具有相同 BrowserName 的两个特性。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.redisant.cn