一. 简介
OPC UA是一种工业通信协议并且已经在IEC 62541系列中进行了标准化。
二. 功能
1. 定义了通过安全通信通道的session进行消息交换的异步通信协议(基于TCP、HTTP或者SOAP等);
2. 定义了基于二进制和基于xml的编码的协议消息(可以基于二进制也可以基于xml);
3. 定义了一组可与服务器端信息模型交互的37个标准服务。每个服务的签名被定义为协议类型系统中的请求和响应消息
4. 定义了面向对象与语义三重关系相结合的信息建模元模型;
【注意】:
从特定的VariableType进行实例化可以提供 语义信息, 比如:使用 MotorTemperatureVariableType进行实例化比使用BaseDataVariable进行实例化的变量更有意义。
三. 核心概念
1. 信息模型
信息模型是OPC UA中用于描述数据和对象结构的一种方式,采用面向对象的思想将数据组织成具有特定属性的类型(可以理解为面向对象编程中的类),为OPC UA服务器中的对象和变量提供类型定义;同时定义了地址空间中的节点含义以及节点之间的关系。
信息模型主要由节点类别(NodeClass)以及节点之间的关系组成。
-
节点
节点是信息模型和地址空间中的基本组成元素。每个节点都由属性描述,并由引用相连接。根据OPC UA规范,节点被分为多种类型,包括但不限于:
- 对象(Object):表示工业自动化系统中的实际设备或系统组件。
- 对象类型(Object Type):定义了一组对象共有的属性和方法。
- 变量(Variable):表示系统中的数据值,可以是读取或写入的。
- 变量类型(Variable Type):定义了一组变量共有的属性和行为。
- 方法(Method):表示可以执行的操作或功能,通常与对象或变量相关联。
- 视图(View):提供了一种组织和管理节点的方式,可以包含一组相关的节点。
- 引用(Reference):表示节点之间的连接关系,定义了节点在地址空间中的结构。
- 数据类型(Data Type):定义了变量的数据类型,如整数、浮点数、字符串等。
【注意】
- 对象节点(Object)用于构成地址空间,不包含数据,但使用变量为对象公开数值。
- 变量节点(Variable)代表一个值,值的数据类型取决于变量。
- 方法节点(Method)则代表服务器中一个由客户端调用并返回结果的方法。
-
引用
引用表示节点之间的关系。它被定义为引用类型节点的实例,存在于地址空间中。包含引用的节点为源节点,被引用的节点称目标节点。引用的目标节点可以与源节点在同一个地址空间,也可以在另一个OPC服务器的地址空间,甚至目标节点可以不存在。
OPC UA预定义了多种引用,常见的引用有:
- hasTypeDefinition: 描述对象、变量和类型之间的关系;例如:VariableNode的hasTypeDefinition引用,指向一个VariableTypeNode,表示该 VariableNode的类型
- hasSubType:描述对象的继承关系,当子类从父类继承后,子类拥有一个hasSubType引用指向父类。
- hasComponents:描述一种组合关系;例如:ObjectNode一般都由多个VariableNode组成,ObjectNode包含某个VariableNode时,ObjectNode拥有一个hasComponents引用,指向该VariableNode;
- Organizes:指明两个节点的层次结构,通过organizes可以把多个节点组织到同一个父节点下。
- HasModellingRule:用于绑定建模规则到一个对象、变量或方法上;定义了如何对节点进行建模,以及节点之间应如何相互关联;例如,如果某个对象需要按照特定的方式组织其子节点,或者某个变量需要遵循特定的数据类型和单位规范,那么就可以通过HasModellingRule引用来实现这些要求。
2. 地址空间
地址空间是OPC UA服务器中的一个重要概念,它是服务器上存储的所有数据和对象的集合。这些数据和对象通过特定的结构进行组织,使得客户端能够方便地访问和操作;
地址空间由节点(Node)和引用(Reference)组成,形成了一种网络或结构化图(Graph)。每个节点代表一个对象、变量或方法,而引用则用于表示节点之间的关系;
地址空间为服务器提供了一种标准方式,以向客户端表示对象。客户端可以通过地址空间来访问服务器的数据和信息,进行读取、写入和监控等操作;
3. 两者区别
地址空间为信息模型提供了存储和表示数据的物理结构,而信息模型则定义了地址空间中节点的含义和关系;
客户端可以通过地址空间访问服务器的数据和信息,并根据信息模型理解这些数据的含义和关系。
四. 开源框架
3. freeopcua----> C++/Python版本
五. 总结
简而言之,OPC UA定义了一个面向对象的信息模型(通常表示物理设备)的框架(这些模型存在于OPC UA服务器中)以及客户端通过网络与信息模型交互的协议(读写变量、调用方法、实例化和删除对象、订阅更改通知等)。