OPC UA系统框架综述
2019-01-23
(重庆三峡学院 重庆 404632)
一、OPC UA简介
OPC UA 的全称为OPC Unified Architecture,它表示OPC统一体系架构,是一种以服务为主提供一个完整的安全可靠的跨平台架构。OPC UA的优点是使开发人员能够安全地交换大量的数据,具有更高层次的相互操作性,同时产生了一些新的技术和高水准的性能水平,在原有基础上增加了原始OPC的功能,同时的,OPC UA不再仅仅依赖DCOM,而是加强建设面向服务的架构(SOA),因此OPC UA越来越得到企业的青睐运用。为了解决工控软件、PLC、嵌入式网关等产品的系统的兼容性问题,各大厂商都纷纷增加了对OPC UA协议的支持。所以,各种OPC UA设备能不能满足规约所定义的标准功能集,就要有专门的认证机构提供专业的测试服务。
因此,由OPC基金会授权和委托,OPC中国联合机械工业仪器仪表综合技术经济研究所(ITEI)建立了国内唯一的OPC认证测试实验室,并在2017年9月5日在中国职工之家饭店正式发布国家标准GB/T 33863.1~.8-2017《OPC统一架构》。
(一)OPC UA 的技术特性
传统的OPC DA规范采用COM/DCOM技术,只能在Windows平台当中运行,并且COM技术十分复杂,使OPC的推广产生许多困难,微软后期不再维护和升级COM技术。OPC UA规范再也不是基于COM/DCOM技术,也就是说OPC UA不但可以在Windows平台上实现,更可以在Linux,与其他的嵌入式平台中实现。标准OPC所具有的功能,OPC UA也都具有。
1.等价功能:OPC UA和OPC在COM中的功能都一样。
2.多功能平台支持:支持从嵌入式的微控制器到以云为基础的分散式控制架构。
3.安全:互访认证,对于信息的加密性以及安全监听功能。
4.扩展性功能:在当前程序正常工作的情况下,还可以新增其他应用功能。
5.信息建模的丰富多元化:可对复杂的信息进行定义,而不仅仅是单一的数据。
二、系统框架设计
整个系统采用三层架构设计,从下至上分别是设备驱动层、OPC UA服务层、OPC UA客户端。
设备驱动层:负责所有底层设备的数据采集;
OPC UA服务层:载入OPC Moduler数据模型,并对底层设备采集的数据按照OPC UA规范进行存储,为客户端提供统一访问接口;
OPC UA客户端:获取服务层提供的数据,以及执行可调用的方法。
整个系统的设计框架如图1所示:
图1 OPC系统设计框架
OPC服务层设计:
OPC服务层是整个系统的核心层,负责底层数据的临时存储以及向客户端提供数据访问接口的功能。
UA数据模型设计:
UA数据模型是整个系统的核心设计,在该模型中,定义了整个系统需要用到的底层设备,以及各个设备获取的数据以及可执行的方法。
构建UA数据模型,可使用Unified Automation UaModuler工具进行设计,在ObjectTypes的BaseObjectType中,对每一个设备增加一个数据模型,并设置相应的设备名称和描述,之后为新增加的模型增加Children节点,设置该设备可获取的所有变量(测试值)以及可以调用的方法。设计完成后,可导出对应的BuildingAutomation.xml通用配置文件。如下图2所示(构建的UT55A数据模型)。
图2 UT55A数据模型
关键类设计:
UANodeManager:
节点管理器,用于读取BuildingAutomation.xml配置文件,并根UA据模型文件在系统中创建节点地址空间。
UAServerManager:
实例化节点管理器,并启动整个OPCUA服务,使服务器能够被发现。
(一)底层驱动设计
在底层驱动设计中,需要考虑所有设备的数据获取方式,以及整个地址空间数据模型的组织方式,使得采集的数据能够正确对应到数据模型中。为此设计了也一个IController接口,和一个UnderlyingSystem关键类。
IController接口:
在IController接口中,定义了所有底层设备驱动需要实现的方法,所有的底层设备驱动,按照该接口定义的方法进行编写。
void DataReceived(object sender,SerialDataReceivedEventArgs e):
接收到数据数据的处理函数。
void OpenCom():
打开通信端口。
bool ReadRegisters():
读取寄存器。
void SetParam(string strName,object param):
设置底层设备驱动的参数,第一个参数为该设备的名称,第二个参数为与该设备相关的配置信息,包括设备名称、该设备对应的底层驱动的类名、与该设备对应的命令文件的路径、以及该设备的通信端口配置(串口和网口)。
UnderlyingSystem类:
UnderlyingSystem类,用于对底层设备驱动采集的数据进行整理,根据数据模型开辟内存空间,并按照数据模型的接口将数据存放在内存块中,建立数据字典,与UA模型实现对应关系。
在系统中,设计了ComCfg.xml文件,用于配置与数据模型相对应的各个设备以及设备通信端口,以及各个设备驱动类与底层设备通信所需要用到的命令文件。首先载入该文件,并根据设备类型实例化不同的底层驱动类。
底层驱动类:
实现IController接口,连接设备,通过读取命令配置文件,与底层设备进行通信读取数据。
系统中,为每一个设备设计了一个对应的命令配置文件,该文件中所有的命令配置信息与模型文件相对应,也就是说,返回数据的个数、数据类型,都要与模型文件严格对应。
如下图3所示
图3 OPC UA服务器底层驱动构架
(二)OPC UA的界面设计
1.OPC UA客户端设计
在程序中,找到其必需的设计器变量,并将系统组成成分赋空值,并清理正在使用的资源,并且同步判断是否为托管资源,若是托管资源,窗口设计器则生成相应代码,并确认服务器名称及节点地址,由此生成界面控件及标签,到此,完成客户端设计过程;若不是托管资源,则返回,继续清理正在使用的资源。
2.设备配置界面
当我们工作时,运行到指定的模型文件。并且进入到配置界面,再进行对应的串口配置,或网口配置。
服务端采用WinForm窗口程序,方便维护人员对服务端进行配置,如图4所示。
图4 OPCUSS设备配置界面
下图为根据UA数据模型,为不同变量配置命令。
图5 命令配置界面
下图为OPC UA客户端主界面,用于根据IP地址和端口号查找OPC UA服务器,并显示服务器上的模型信息。
图6 OPC UA客户端主页面
在客户端,可以显示不同节点可调用的方法,如下图所示。
图7 节点调用界面
三、OPC UA在控制系统中的应用
在企业进行工作时,当我们运用OPC UA技术时,它极大的方便了我们工作。OPC UA 很好的解决了之前的OPC规范存在的问题,在互操作性上,做了很多改进,加快了研发速度和运行效率,削并且减了工作成本。在以后的生产生活中,除了传统的OPC 客户端访问方式,还有在现场智能设备中投放使用的OPC UA服务器。OPC UA技术其在网络上具有兼容性,安全系数更高,版本更新更快,平台更多且相互独立等优点。它可以在所有的自动化层面上发挥作用,从人机界面,和 PLC,到MES、ERP等其他高层系统,加深了公司和控制系统的交流沟通,信息交互。