3. OPC 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电机类型”,它继承自标准的“电机类型”,并添加了西门子特有的参数,如“硬件标识符”和“诊断缓冲区”。
3.3 引用类型与关系
引用是连接节点的“有向边”,它赋予了信息模型结构化的语义。不同的引用类型表达了不同的关系。OPC UA 预定义了一系列标准引用类型,同时也允许用户自定义。
| 引用类型 | 语义 | 使用场景 |
|---|---|---|
| HasComponent | 表示一个对象包含另一个对象或变量。 | 电机对象包含“转速”变量和“温度”变量。 |
| HasProperty | 表示一个节点具有某个属性(通常是描述性元数据)。 | 变量具有“工程单位”属性。 |
| HasTypeDefinition | 表示一个实例节点与它的类型定义节点之间的关系。 | 电机实例 M101 指向 MotorType。 |
| ConnectsTo | 表示两个对象之间的物理或逻辑连接。 | 阀门对象连接到管道对象。 |
| Organizes | 用于在地址空间中组织节点,形成层次结构。 | 将多个传感器组织到一个“传感器组”文件夹下。 |
3.4 UA 元模型与地址空间
UA 元模型(UAMetaModel)是定义信息模型如何构建的“模型之模型”。它规定了节点、引用、类型等基本元素的规则和约束。所有 OPC UA 服务器的地址空间(AddressSpace)都是基于这个元模型构建的。
地址空间是 OPC UA 服务器的核心,它是一个由节点和引用组成的巨大图结构。客户端通过浏览地址空间来发现和理解服务器提供的数据和服务。
- 节点 (Node):地址空间的基本单元,每个节点都有一个唯一的 NodeId。
- 引用 (Reference):连接两个节点,形成有向图。
- 视图 (View):地址空间的一个子集,用于简化浏览或提供特定视角。
3.5 信息模型在工业网关中的应用
在工业网关的配置过程中,理解 OPC UA 信息模型至关重要。网关通常需要将底层不同协议(如 Modbus、PROFINET、EtherNet/IP)的数据映射到 OPC UA 信息模型中。
- 创建设备对象: 在网关的地址空间中创建一个代表物理设备的对象(如“PLC_1”)。
- 添加变量: 将 Modbus 寄存器地址映射为 OPC UA 变量,并指定数据类型和工程单位。
- 定义方法: 将 PLC 中的功能块(如“启动电机”)映射为 OPC UA 方法。
- 建立类型层次: 如果有多台同类型设备,可以创建一个自定义对象类型,然后实例化多个设备对象。
- 配置引用: 使用 HasComponent 将变量和方法组织到设备对象下,使用 HasProperty 添加描述性元数据。
通过这种方式,工业网关将原本“扁平”的寄存器数据,转化为一个语义丰富、结构清晰的 OPC UA 信息模型,使得上位机系统(如 SCADA、MES)能够以统一的方式理解和操作现场设备。