3、OPC UA 信息模型:对象、变量、方法、类型层次结构、引用类型、UA 元模型

OPC UA 的核心优势在于其面向对象的信息建模能力。它不仅仅是一个数据传输协议,更是一个语义化的信息框架。通过标准化的信息模型,不同厂商的设备可以以统一、可理解的方式暴露其内部数据结构,从而实现真正的互操作性。本章将深入剖析 OPC UA 信息模型的五大核心要素:对象、变量、方法、类型层次结构与引用类型,并揭示其底层的元模型架构。

3.1 信息模型核心要素

OPC UA 信息模型由节点(Node)和引用(Reference)构成。节点是信息的基本单元,而引用则定义了节点之间的关系。根据节点所承载的语义,主要分为以下几类:

节点类型 描述 典型示例
对象 (Object) 代表物理或逻辑实体,是信息模型中的“事物”。可以包含变量、方法和其他对象。 一台电机、一个温度传感器、一个控制器模块。
变量 (Variable) 代表一个数值或状态,是数据值的载体。具有数据类型(如 Int32, Float, String)。 电机转速、当前温度值、设备运行状态。
方法 (Method) 代表对象可执行的操作或函数。调用方法时可以传递输入参数并获取输出参数。 启动电机、复位报警、读取配方。
对象类型 (ObjectType) 定义了一类对象的模板,包括其包含的变量、方法和子对象。 “电机类型”、“传感器类型”、“阀门类型”。
变量类型 (VariableType) 定义了一类变量的模板,包括其数据类型和语义。 “模拟量类型”、“状态量类型”、“数组类型”。
数据类型 (DataType) 定义变量值或方法参数的具体数据格式。 UInt16, Float, String, 自定义结构体。
引用类型 (ReferenceType) 定义节点之间关系的语义。 “包含 (HasComponent)”、“连接 (ConnectsTo)”、“类型定义 (HasTypeDefinition)”。
关键概念: 对象是“容器”,变量是“数据”,方法是“行为”。对象类型和变量类型则是“蓝图”,用于创建具有相同结构和行为的实例。

3.2 类型层次结构与继承

OPC UA 的类型系统支持单继承。所有类型都派生自一个基类型,形成了严格的层次结构。这种设计使得模型具备高度的可扩展性和复用性。

  • BaseObjectType:所有对象类型的根类型。它定义了对象最基本的属性,如 NodeId、BrowseName、DisplayName。
  • BaseVariableType:所有变量类型的根类型。它定义了变量最基本的属性,如 Value、DataType、AccessLevel。
  • BaseDataType:所有数据类型的根类型。它定义了数据的基本结构。

例如,一个工业网关可以定义一个“西门子S7-1200电机类型”,它继承自标准的“电机类型”,并添加了西门子特有的参数,如“硬件标识符”和“诊断缓冲区”。

工程实践: 在配置工业网关时,理解类型层次结构有助于快速定位和复用已有的设备模板。许多网关厂商会提供预定义的类型库,如“通用PLC类型”、“Modbus设备类型”,工程师只需在此基础上进行微调即可。
OPC UA 类型层次结构示例 BaseObjectType FolderType DeviceType BlockType MotorType SensorType ValveType M101 (Motor实例) T201 (Sensor实例) 说明:箭头方向表示“继承自”。所有类型最终都派生自 BaseObjectType。

3.3 引用类型与关系

引用是连接节点的“有向边”,它赋予了信息模型结构化的语义。不同的引用类型表达了不同的关系。OPC UA 预定义了一系列标准引用类型,同时也允许用户自定义。

引用类型 语义 使用场景
HasComponent 表示一个对象包含另一个对象或变量。 电机对象包含“转速”变量和“温度”变量。
HasProperty 表示一个节点具有某个属性(通常是描述性元数据)。 变量具有“工程单位”属性。
HasTypeDefinition 表示一个实例节点与它的类型定义节点之间的关系。 电机实例 M101 指向 MotorType。
ConnectsTo 表示两个对象之间的物理或逻辑连接。 阀门对象连接到管道对象。
Organizes 用于在地址空间中组织节点,形成层次结构。 将多个传感器组织到一个“传感器组”文件夹下。
常见误区: 不要混淆 HasComponent 和 HasProperty。HasComponent 用于表示“组成部分”,而 HasProperty 用于表示“描述性属性”。例如,电机的“转速”是组成部分(HasComponent),而“转速”的“工程单位”是属性(HasProperty)。

3.4 UA 元模型与地址空间

UA 元模型(UAMetaModel)是定义信息模型如何构建的“模型之模型”。它规定了节点、引用、类型等基本元素的规则和约束。所有 OPC UA 服务器的地址空间(AddressSpace)都是基于这个元模型构建的。

地址空间是 OPC UA 服务器的核心,它是一个由节点和引用组成的巨大图结构。客户端通过浏览地址空间来发现和理解服务器提供的数据和服务。

  • 节点 (Node):地址空间的基本单元,每个节点都有一个唯一的 NodeId。
  • 引用 (Reference):连接两个节点,形成有向图。
  • 视图 (View):地址空间的一个子集,用于简化浏览或提供特定视角。
OPC UA 地址空间中的节点与引用关系 电机 M101 转速 (RPM) 温度 (℃) 状态 (Status) 工程单位: rpm 工程单位: ℃ MotorType 图例:实线=HasComponent,短虚线=HasProperty,长虚线=HasTypeDefinition

3.5 信息模型在工业网关中的应用

在工业网关的配置过程中,理解 OPC UA 信息模型至关重要。网关通常需要将底层不同协议(如 Modbus、PROFINET、EtherNet/IP)的数据映射到 OPC UA 信息模型中。

配置步骤示例:
  1. 创建设备对象: 在网关的地址空间中创建一个代表物理设备的对象(如“PLC_1”)。
  2. 添加变量: 将 Modbus 寄存器地址映射为 OPC UA 变量,并指定数据类型和工程单位。
  3. 定义方法: 将 PLC 中的功能块(如“启动电机”)映射为 OPC UA 方法。
  4. 建立类型层次: 如果有多台同类型设备,可以创建一个自定义对象类型,然后实例化多个设备对象。
  5. 配置引用: 使用 HasComponent 将变量和方法组织到设备对象下,使用 HasProperty 添加描述性元数据。

通过这种方式,工业网关将原本“扁平”的寄存器数据,转化为一个语义丰富、结构清晰的 OPC UA 信息模型,使得上位机系统(如 SCADA、MES)能够以统一的方式理解和操作现场设备。