物联网 · 2024年1月4日 0

OPC UA 节点属性须知

在 OPC UA 中,叶子节点(Leaf Node)是数据模型中的一个末端节点,它通常表示实际的数据值或状态。以下是一个典型的叶子节点的属性,这些属性可以在 Data Access 规范中找到:

  1. NodeId(节点标识符):
    • 作用: 表示节点的唯一标识符。
    • 类型: NodeId 数据类型。
    • 描述: 用于唯一标识服务器上的节点。NodeId 包括命名空间索引和节点标识。命名空间索引用于区分不同的命名空间,而节点标识用于在命名空间内唯一标识节点。
  2. DisplayName(显示名称):
    • 作用: 提供一个人类可读的节点名称。
    • 类型: LocalizedText 数据类型。
    • 描述: DisplayName 字段通常包含节点的本地化名称,以便更容易理解节点代表的含义。
  3. BrowseName(浏览名称):
    • 作用: 提供一个不可变的、用于在服务器中查找节点的名称。
    • 类型: QualifiedName 数据类型。
    • 描述: BrowseName 是服务器用来查找节点的内部标识符。虽然 DisplayName 是供人类阅读的名称,但 BrowseName 是用于在服务端内部查找和管理节点的标识符。
  4. DataType(数据类型):
    • 作用: 描述节点的数据类型。
    • 类型: NodeId 数据类型。
    • 描述: DataType 字段指定了与节点关联的数据的类型。这对于解释节点的值非常重要。
  5. Value(值):
    • 作用: 包含节点的当前值。
    • 类型: DataValue 数据类型。
    • 描述: Value 字段包含节点的当前数值。这可能是一个实际的数据值,例如温度或压力,或者是一个状态值,表示节点的状态。
  6. Timestamp(时间戳):
    • 作用: 指示节点值的时间戳。
    • 类型: DateTime 数据类型。
    • 描述: Timestamp 字段表示节点值的时间戳。它可以包括 ServerTimestampSourceTimestamp 两个方面,分别表示服务器处理数据的时间和数据产生的时间。
  7. AccessLevel(访问级别):
    • 作用: 描述节点的访问权限。
    • 类型: Byte 数据类型。
    • 描述: AccessLevel 字段定义了客户端对节点的访问权限,包括读、写、历史数据等。具体的数值表示具体的权限。
  8. UserAccessLevel(用户访问级别):
    • 作用: 描述用户的访问权限。
    • 类型: Byte 数据类型。
    • 描述: UserAccessLevel 字段定义了授权用户对节点的访问权限。与 AccessLevel 类似,但是可能考虑了用户的个性化权限设置。
  9. MinimumSamplingInterval(最小采样间隔):
    • 作用: 描述节点值的最小可接受采样间隔。
    • 类型: Double 数据类型。
    • 描述: MinimumSamplingInterval 字段表示对节点进行采样的最小时间间隔。这有助于客户端了解何时可以获取节点的最新值。
  10. Historizing(历史化标志):
  • 作用: 指示节点是否支持历史数据。
  • 类型: Boolean 数据类型。
  • 描述: Historizing 字段表示节点是否支持历史数据。如果为 true,表示节点的数据可以进行历史化,如果为 false,表示节点不支持历史数据。

这些属性组合起来提供了关于叶子节点的详细信息,包括标识符、名称、数据类型、数值、时间戳、访问权限等。这些属性在 OPC UA 中的 Data Access 规范中有具体的定义。请注意,具体的节点可能会根据其用途和所属的命名空间而有所不同。

在 OPC UA 中,以下是用于标识节点和确保其独一无二性的几个关键字段:

  1. NodeId(节点标识符):
    • 独一无二性: 每个节点都有一个唯一的 NodeId,用于在整个 OPC UA 服务器上唯一标识该节点。NodeId 是由命名空间索引和节点标识组成的。
  2. BrowseName(浏览名称):
    • 独一无二性: BrowseName 是用于在服务器中查找节点的内部标识符。虽然 DisplayName 是供人类阅读的名称,但 BrowseName 是用于在服务端内部查找和管理节点的标识符。

这两个字段是用于在 OPC UA 服务器中唯一标识节点的主要标识符。NodeId 提供了全局唯一性,而 BrowseName 用于在服务器内查找和检索节点。

请注意,虽然 NodeId 是用于在整个 OPC UA 服务器上唯一标识节点的主要机制,但它的全局唯一性是相对于整个服务器来说的,而不是全局的。在不同的 OPC UA 服务器实例中,相同的 NodeId 可能被用于不同的节点。因此,在不同的服务器环境中,要确保节点的唯一性,通常需要考虑全局唯一性。

在 OPC UA 中,节点的写入(Write)操作通常是由客户端发起的,而服务器负责处理这些写入请求。然而,有些节点的值是由服务器自行处理或由底层系统提供的,不允许直接由客户端写入。下面是一些通常由客户端进行写入的节点类型,以及一些由服务器自行处理的节点类型:

客户端可写入的节点:

  1. 变量节点(Variable Nodes):
    • 描述: 变量节点通常用于存储实际的数据值,如温度、压力等。
    • 可写性: 客户端通常可以写入这些节点的值,以更新存储的数据。
  2. 对象节点(Object Nodes):
    • 描述: 对象节点用于组织和描述其他节点的集合,可以包含变量、方法等。
    • 可写性: 客户端可以写入对象节点的属性,例如修改对象的状态。
  3. 属性节点(Property Nodes):
    • 描述: 属性节点是节点的附加信息,如节点的描述、状态等。
    • 可写性: 客户端可以写入一些属性节点,例如修改节点的描述信息。

由服务器自行处理的节点:

  1. 方法节点(Method Nodes):
    • 描述: 方法节点定义了节点上执行的操作,不是存储数据的节点。
    • 可写性: 方法节点通常是由服务器自行处理的,客户端不能直接写入方法节点的值。
  2. 事件节点(Event Nodes):
    • 描述: 事件节点用于表示发生在节点上的事件。
    • 可写性: 事件节点通常是由服务器自行处理的,客户端不能直接写入事件节点的值。
  3. 数据类型节点(Data Type Nodes):
    • 描述: 数据类型节点定义了节点的数据类型,通常用于约束变量的数据类型。
    • 可写性: 数据类型节点通常是由服务器自行处理的,客户端不能直接写入数据类型节点的值。

总体而言,服务器通常会在规范中明确定义哪些节点允许客户端写入,哪些节点是只读的或由服务器自行处理的。在 OPC UA 的信息模型中,这些约定通常是通过节点的属性(如 AccessLevelUserAccessLevel)来定义的。在进行写入操作之前,客户端通常需要检查节点的可写性属性以确保写入操作是允许的。

在 OPC UA 中,以下是一些常用的节点类型,以及它们的一般用途和可写性:

常用的客户端可写入节点:

  1. 变量节点(Variable Nodes):
    • 用途: 存储实际的数据值,如温度、压力等。
    • 可写性: 客户端通常可以写入这些节点的值,以更新存储的数据。
  2. 对象节点(Object Nodes):
    • 用途: 组织和描述其他节点的集合,可以包含变量、方法等。
    • 可写性: 客户端可以写入对象节点的属性,例如修改对象的状态。
  3. 属性节点(Property Nodes):
    • 用途: 附加信息,如节点的描述、状态等。
    • 可写性: 客户端可以写入一些属性节点,例如修改节点的描述信息。

常用的由服务器自行处理的节点:

  1. 方法节点(Method Nodes):
    • 用途: 定义了节点上执行的操作,不是存储数据的节点。
    • 可写性: 方法节点通常是由服务器自行处理的,客户端不能直接写入方法节点的值。
  2. 事件节点(Event Nodes):
    • 用途: 表示发生在节点上的事件。
    • 可写性: 事件节点通常是由服务器自行处理的,客户端不能直接写入事件节点的值。
  3. 数据类型节点(Data Type Nodes):
    • 用途: 定义了节点的数据类型,通常用于约束变量的数据类型。
    • 可写性: 数据类型节点通常是由服务器自行处理的,客户端不能直接写入数据类型节点的值。

示例:

在一个典型的工业自动化场景中,常见的可写入节点包括存储设备状态的变量节点、控制设备状态的对象节点、以及控制指令的方法节点。而由服务器自行处理的节点可能包括表示报警或故障事件的事件节点,表示设备类型的数据类型节点等。

具体的使用场景和节点类型会根据实际的工业应用和设备配置而有所不同。在进行 OPC UA 开发时,最好参考相关规范和设备文档以了解具体的节点类型和使用方式。