OPC UA基础概念
OPC UA 使用了对象(objects)作为过程系统表示数据和活动的基础。对象包含了变量,事件和方法,它们通过引用(reference)来互相连接。
OPC UA 信息模型是节点的网络(Network of Node,),或者称为结构化图(graph),由节点(node)和引用(References)组成,这种结构图称之为OPC UA 的地址空间。这种图形结构可以描述各种各样的结构化信息(对象)。
地址空间要点:
● 地址空间是用来给服务器提供标准方式,以向客户端表示对象。
● 地址空间的实现途径是使用对象模型,通过变量和方法的对象,以及表达关系的对象。
● 地址空间中模型的元素被称为节点,为节点分配节点类来代表对象模型的元素。
● 对象及其组件在地址空间中表示为节点的集合,节点由属性描述并由引用相连。
● OPC UA建模的基本在于节点和节点间的引用
1、对象模型
2、节点模型
节点模型要点:
● 节点根据用途分属于不同的节点类别(NodeClass),一些表示实例(/Root/Objects),一些表示类型(/Root/Types)。
● 节点类依据属性和引用来定义。OPC UA规范定义的节点类称为地址空间的元数据,地址空间中每个节点都是这些节点类的实例。
● 节点是节点类的实例,属性和引用是节点的基本组件。
● 属性(Attribute)用于描述节点,不同的节点类别有不同的属性(属性集)。节点类的定义中包括属性的定义,因此属性不包括在地址空间中。
● 引用(Reference)表示节点间的关系。引用被定义为引用类型节点的实例,存在于地址空间中。
节点模型通用属性
包含引用的节点为源节点,被引用的节点称目标节点。引用的目标节点可以与源节点在同一个地址空间,也可以在另一个OPC服务器的地址空间,甚至是目标节点可以不存在。
3、引用模型
类型定义节点
类型定义节点是服务器提供用于对象和变量的类型定义。
标准的节点类
● 节点类用于定义OPC UA地址空间中的节点
● 地址空间中模型的元素被称为节点,为节点分配节点类来代表对象模型的元素。
● 节点类源于通用的基本节点类。
● 首先定义基本节点类,然后定义用于组织地址空间的节点类,之后再定义用于代表对象的节点类。
● 代表对象的节点类分为三种:用于定义实例,定义实例的类型,以及定义数据类型。
标准的节点类有如下几种:
● 基本节点类:能够派生所有其他节点类。
● 对象节点类
● 对象类型节点类
● 变量节点类:定义数据变量
● 变量类型节点类:定义特性
● 方法节点类:定义方法,方法没有类型定义,可以绑定到对象上。
● 引用类型节点类:定义引用。
● 视图节点类:定义地址空间中节点子集。
在OPC UA中,最重要的节点类别是对象,变量和方法。
1. 节点类别为对象
节点类别为对象的节点用于(构成)地址空间结构。
● 对象不包含数据,使用变量为对象公开数值。
● 对象可用于分组管理对象、变量或方法(变量和方法总属于一个对象)。
● 对象也可以是一个事件通知器(设定EventNotifier属性),客户端可以订阅事件通知器来接收事件(事件在地址空间中是不可见的,被绑定到对象)。
2. 节点类别为变量
节点类别为变量的节点代表一个值。
● 值的数据类型取决于变量,类型的种类在BaseDataType中。
● 客户端可以对值进行读取,写入和订阅其变化。
● 变量节点最重要的属性是Value,它由DataType,ValueRank和ArrayDimensions属性定义,通过这三个属性,可以定义各种类型数据。
3. 节点类别为方法
节点类别为方法的节点,代表服务器中一个由客户端调用并返回结果的方法。
● 方法指定客户端使用的输入参数,并返回给客户端输出参数。
● 输入参数和输出参数作为方法的特性存在,是数据方法的变量。
● 客户端使用调用服务(Call)调用方法
OPC UA Demo
1、创建客户端连接
2、根据NodeId从server端读取数据
3、写入数据至server端
4、调用server端接口,获取数据
5、根据NodeId订阅server端数据变化
OPC UA 使用方式(集成OpcUaClinet服务)
1、读取、写入,调用方法----通过调用接口方式实现
2、订阅 ---- 通过注解方式实现
类注解:@OpcUaSubResolver
方法注解:@OpcUaSubscribe(namespaceIndex = x, identifier=“XXX”)
注:NodeId由namespaceIndex & identifier构造而成
如下图:NodeId的组成部分