第二章:信息建模:数据变量和特性

REDISANT 提供互联网与物联网开发测试套件 #


推荐一个功能丰富的 OPC UA 客户端应用程序,可用于连接任何 OPC UA 服务器。您可以浏览服务器地址空间、读取和写入数据以及调用方法。 下载地址:OPCUA 客户端模拟器

数据变量和特性 #

OPC UA 定义了两种变量:数据变量(Data Vaiables)和特性(Property)。当数据建模时,即当你必须决定使用数 据变量还是特性来表示某些数据时,这两个概念之间的区分并不总是容易的。这导致客户端也并不总是容易决定如何处 理特性和数据变量。但是,在下文中,我们将尝试解释这些概念之间的区别,并在第 3 章中给出何时使用什么概念的指 南。

数据变量用于表示对象的数据,例如温度传感器的温度或流量变送器的流量。数据变量可以是复杂的,也就是说, 它们可以具有包含部分数据的子变量和描述它们的特性(见下文)。复杂数据变量用法的一个示例是,当数据变量提供 包含设备测量的所有数据的复杂类型和仅包含部分测量数据的子变量时。例如,该设备可以测量温度和流量。这两个值 都捕获在一个数据变量中,并且也分别在子变量中公开。另一个示例是通过三个温度传感器的测量值的平均值计算的温 度。表示各个测量值的变量可以作为聚合变量的子变量公开。

特性用于表示节点的特征,例如,包含测量温度的工程单位,无论是以 °C、°K 还是华氏度为单位。通常,当需要描 述节点的某些特征时,就会使用特性,而这些特征不会被节点的属性捕获。方法的输入参数和输出参数是特性的另一个 示例。特性很简单。它们不能公开子变量,并且始终是每个层次结构的叶子,也就是说,不能是任何层次引用的来源。

这是数据变量和特性的简要定义。虽然这个定义非常清楚地将某些数据区分为数据变量和特性,但中间有一个很大 的灰色区域不清楚。指示设备是生成真实数据还是模拟数据的可写标志是数据变量还是特性?存储在 OPC UA 服务器 中的供应商地址是数据变量还是特性?

查看数据变量和特性的另一种方法是了解数据存储的位置以及更改频率。预计数据变量通常会经常更改其值,并且 通常由底层设备提供,而特性的值则不会经常更改,并且存储在某些配置数据库中。但是,OPC UA 标准并未对此进 行规定,因为无法明确指定数据经常更改或不更改的含义。是每毫秒一次、每秒一次还是每天一次?并且根据服务器的 模式,此行为可能会有很大不同。在设计系统时,由于设备未连接或未激活,因此温度设备的温度可能根本不会改变。 由于不同的工程任务,工程单位可能会更改多次。在运行时,情况会有所不同。不过,考虑在线数据与配置数据可能会 帮助你思考。

除了语义上的考虑,数据变量和特性之间还存在语法差异。

每个节点可能具有特性。它们使用 HasProperty 引用连接。特性必须属于至少一个节点,即成为至少一个 HasProperty 引用的目标。特性没有类型,或者更准确地说,所有特性都指向称为 PropertyType 的同一 VaribaleType。特性的语义 由其 BrowseName 定义。由于语义由 BrowseName 定义,因此节点的每个特性都必须具有唯一的 BrowseName。特性 不能是任何分层引用的来源,这意味着特性不能具有特性。

数据变量必须属于对象或对象类型。因此,它们必须由来自对象、对象类型、变量或变量类型的 HasComponent 引 用。允许来自变量或变量类型的引用,因为它们用于公开复杂的数据变量,并且这种复杂数据变量的根又是对象或对象 类型的一部分。数据变量是有类型的。每个数据变量都是 BaseDataVariableType 类型或子类型。反过来,数据变量的 BrowseName 不必是唯一的,因为语义由类型定义。

数据变量是更强大的概念,而特性使用起来非常简单。如果你必须决定是使用数据变量还是特性,并且无法根据本 节中描述的语义差异做出决定,则应考虑语法。如果你需要使用特性未直接提供的某些功能(例如,通过子类型扩展), 则必须选择数据变量。否则,你应该考虑使用特性,因为它们更易于处理。


哪些是允许的,哪些是不允许的?

特性不能是数据变量,反之亦然。这意味着特性不能由 HasComponent 引用,并且必须是 PropertyType 类型, 而数据变量不能由 HasProperty 引用,并且必须是 BaseDataVariableType 类型或子类型。

特性不能是任何分层引用的来源。但是,它们可以是非分层引用的来源。每当你需要向特性添加信息时,都必 须使用非分层引用。这意味着当你需要以相同的方式为数据变量和特性添加信息时,必须使用非分层引用。OPC UA 规范使用此方法,例如,当引用变量的历史配置时。

特性必须具有唯一的 BrowserNames,即任何节点都不能使用 HasProperty 引用引用具有相同 BrowserName 的两个特性。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.redisant.cn