2023年11月30日发(作者:)
基于国产软硬件平台的OPC UA服务器设计与实现
闵晓霜;杨鑫
【摘 要】在工业4.0时代,OPC UA为各种数据交互提供基础技术支撑.基于国产化
软硬件平台,设计并实现了一种OPC UA服务器,并在PLC控制系统中进行应用.该
服务器基于客户端服务器模式,采用OPC UA的软件分层架构,在Qt环境开发,利用
Qt的跨平台特性以及对标准C++的支持,首先将SDK移植到Linux系统,在此基础
上进行应用开发,该服务器封装了与控制器通信的接口,通过将控制器数据映射到
OPC UA地址空间并进行管理,实现了统一的数据访问接口,通过在PLC系统中测试
证明该服务器能够满足现场数据交互需求.
【期刊名称】《微型机与应用》
【年(卷),期】2018(037)012
【总页数】5页(P71-74,86)
【关键词】OPCUA服务器;地址空间;工业4.0;智能制造
【作 者】闵晓霜;杨鑫
【作者单位】中国电子信息产业集团有限公司第六研究所,北京102209;中国电子
信息产业集团有限公司第六研究所,北京102209
【正文语种】中 文
【中图分类】TP319
0 引言
在工业4.0与智能制造时代,首先需要解决的就是互联互通的问题,为了实现
M2M(机器到机器)、B2M(商业系统与机器)以及B2B(商业系统之间)的协同,满足
来自各个维度的数据交互需求,OPC UA成为最佳的选择[1]。OPC UA作为数据
互联的标准与规范,为工业4.0时代提供底层技术支撑及解决方案。在工业控制现
场,OPC UA能够有效实现嵌入式现场设备、DCS、PLC等设备与生产管理系统、
SCADA、HMI等管理监视系统的互操作。
OPC统一架构(OPC UA)是由OPC基金会继传统OPC技术获得成功应用之后推
出的新的OPC标准。传统OPC基于COM/DCOM技术,而这项基础技术不再发
展并且只能支持Windows操作系统;同时,传统OPC提供的服务数据模型不统
一,导致用户访问不同数据的方法不统一,不支持复杂的数据结构,且在安全方面
也存在不足[2],为解决这些问题,满足时代发展需求,OPC UA得以推出并大力
发展。OPC UA基于Socket传输层,采用以信息为中心的分层架构,与平台无关,
能够兼容Windows、Linux等操作系统,OPC UA提供一系列通用信息模型,提
供完全面向对象,同时包含元数据和对象描述的地址空间,在一个地址空间中就可
访问所有对象,支持客户服务器模型、发布订阅模型,提供复杂数据规范,集成安
全功能,并且OPC UA兼容传统OPC。
自OPC UA规范发布以来,很多国外知名厂商如艾默生、西门子、倍福等已经研
发并推出支持OPC UA标准的产品,并得到了应用[3]。我国于2017年9月正式
发布了GB/T 33863.1~.8-2017《OPC统一架构》标准,并成立了OPC中国认
证测试实验室,标志着OPC UA技术正式成为我国智能制造发展的关键技术之一
[4],文献[5]实现了数据管理功能,文献[6]实现了具备一定安全机制的OPC UA
服务器,但二者都是基于微软平台实现的,并不能满足服务器的安全需求。
为了满足工业控制系统中核心基础设备的安全保密,本文基于国产软硬件平台设计
并实现OPC UA服务器,提供数据访问服务,能够对控制设备进行安全隔离,并
在PLC系统中进行测试验证,能够支持第三方客户端的数据访问,满足工业现场
数据交互需求。
1 基于国产软硬件平台的OPC UA服务器设计
1.1 OPC UA服务器总体设计
本文OPC UA服务器基于国产软硬件平台,采用国产控制器,搭载麒麟操作系统,
采用Qt5开发OPC UA服务器。
1.1.1 OPC UA服务器模式
OPC UA服务器可以同时支持客户端-服务器模型和发布订阅模型,这两种通信机
制独立于实际通信协议,如TCP和HTTPS可用于客户端-服务器模式,而UDP、
AMQP和MQTT可用于发布订阅模式。
(1)客户端-服务器模式
OPC UA客户端访问OPC UA服务器的专用服务。这是一种对等的方式,提供了
信息安全和确定的信息交换,对连接数量有一定限制。适合客户端个数一定,交换
信息需求确定的系统。
(2)发布者-订阅者模式
OPC UA服务器通过配置信息可供任意数量的订阅者使用。这是一种广播机制,
提供了一个无需信息确认的即发即弃的信息交换方式。适合多点连接且对实时性要
求高的系统。
本文的OPC UA服务器使用客户端-服务器模式,通过建立TCP连接,提供安全、
确定的数据交换。
1.1.2 软件分层架构
OPC UA应用程序开发基于软件分层架构。OPC UA堆栈位于分层架构的底层,
它采用OPC基金会定义的TCP / IP通信协议,能够实现所有的OPC UA服务呼
叫,处理通信协议;在堆栈上层为OPC UA软件工具开发包(Software
Development Kit,SDK),SDK的主要功能为运行OPC UA服务器的服务,包括
数据访问、报警功能、信息模型建立、节点管理、订阅管理、会议管理以及身份认
证管理;分层架构的最上层为OPC UA服务器应用程序。
本文的OPC UA服务器采用软件分层架构,基于C++ OPC UA服务器SDK进行
开发,利用Qt的跨平台特性以及对标准C++的支持,首先将SDK移植到国产系
统中,然后基于SDK进行应用功能开发。
1.2 OPC UA服务器软件设计
1.2.1 功能说明
OPC UA服务器的主要功能是将控制器的数据映射到服务器地址空间中进行管理,
并与控制器进行数据交互,同时,对外与支持OPC UA协议的设备(如SCADA、
HMI和第三方客户端等)基于地址空间进行数据读写操作,支持启动/停止服务、
配置可访问数据及访问权限、运行守护以及冗余防护等功能。
该OPC UA服务器实现的主要功能如图1所示,配置功能负责人机交互的配置及
配置数据生成,服务器启动服务时根据配置数据的参数启动并执行数据访问功能,
安全认证和冗余功能用于保证服务器运行过程中的通信与运行安全。
图1 OPC UA服务器功能图
(1)基于协议栈的数据访问功能
包括数据的读写、读写权限的修改、登录服务和退出登录服务。客户端通过服务器
对控制器中的数据进行实时获取,并将数据映射到服务器的地址空间,客户端通过
对地址空间的访问进行对数据的读写操作。在与下位机进行通信时采用一问多答、
循环收包的方式。
(2)配置功能
通过配置界面对服务器地址空间的数据进行配置,以便服务器能够管理服务器中的
数据。
(3)启停服务功能
服务器开启服务后,客户端能够进行相应的访问操作;停止服务后,客户端则无法
继续对服务器进行访问。
(4)安全认证功能
包括身份鉴别机制、基于角色的用户授权机制以及数据传输过程的安全机制。身份
鉴别机制指客户端与服务器建立连接进行数据访问时,系统对用户进行输入用户名
和密码的登录身份验证。基于角色的用户授权机制指的是对工程师、管理员以及操
作员等不同身份的角色,设置不同的访问权限。数据传输安全机制指的是对通信数
据加密以及OPC变量表的CRC校验功能。
(5)冗余功能
在服务器启动之后,自动开启冗余守护进程机制,实时备份服务器中的数据,检测
主机的运行状态,因此能够在主机无响应时启用备机功能。
1.2.2 工作过程
当OPC UA服务器应用在工控系统中时,系统的工作过程如下:
(1)用户在编程组态软件中,将控制程序与OPC数据配置信息下装到控制器中,同
时生成OPC数据配置文件。
(2)在服务器中可创建站,通过加载解析上述OPC数据配置文件,能够对该站的变
量进行配置,将其添加到服务器的数据列表中,即加入地址空间管理,每个变量对
应一个节点,可对节点的访问权限及属性进行配置。配置完成后,可启动OPC
UA服务器,则服务器开始与PLC通信交互OPC数据表中的数据,同时,管理地
址空间中的节点,处理来自客户端的连接以及服务请求。
(3)客户端想要访问PLC中的变量信息时,首先对服务器发送服务请求,要求建立
与服务器的连接,服务器收到请求后,在其地址空间内查找对应的节点信息,服务
器根据变量与节点的映射,与控制器通过私有协议进行变量读写等操作,最后在服
务器接口调用请求/响应服务,给客户端返回有效信息。
上述过程的数据流图如图2所示。
图2 系统的数据流图
2 可跨平台的OPC UA服务器实现
2.1 SDK的移植
OPC UA SDK产品供应商常见的有MatrikonOPC、ProSys、Unified
Automation等,在选择采购SDK时主要注意的包括SDK提供的是库还是源码、
提供的功能、支持的平台以及技术支持等因素[7]。本文使用的SDK以C++源码
的形式提供,提供数据访问等功能。本文首先将SDK移植到国内操作系统中,使
用Qt开发环境进行编译,然后基于SDK提供的API进行应用功能开发。
SDK开发包目录结构如图3所示,主要包括:
…/OPC_UA_SDK/lib:用于存放SDK编译以后生成的库。
…/OPC_UA_SDK/Examples:包含示例程序,可基于例程进行应用开发。
图3 OPC UA软件开发包
使用Qt编译生成的库在lib目录下,应用软件直接引用生成的动态库,examples
中包含示例程序,基于示例程序、调用SDK提供的API进行应用开发。
2.2 服务器应用开发
OPC UA服务器应用程序开发分为4个模块,分别为:通用功能模块Global、基
础应用功能模块CommonOPCUA、配置管理模块ConfigUI、OPC UA服务器模
块OPCUASvr。
(1)Global模块提供基础功能支持,与OPC UA业务无关,实现了数据类型转换、
字符串转换、CRC校验算法等功能。
(2)CommonOPCUA模块实现OPC UA业务相关的通用功能,包括OPC UA服
务器所需的地址空间、序列化、反序列化、变量表文件解析、对象节点的管理等。
通过调用该功能接口能够实现与文件数据进行交互,加载控制器生成的服务器配置
文件并进行解析,生成包含地址空间信息的二进制文件。
(3)ConfigUI模块实现服务器配置的人机交互功能,包括主界面、数据访问配置界
面、添加站对话框、编辑节点属性对话框。
(4)OPCUASvr模块实现OCPUA协议栈功能,提供OPC UA服务,包括启动、停
止服务、数据访问服务等,使用SDK提供的API接口,引用了SDK的动态库。
2.3 地址空间开发
地址空间的开发为OPC UA服务器应用程序开发中关键的部分,当服务器对底层
PLC设备中的数据进行采集处理时,把每个PLC设备抽象为一个对象,把所要访
问的数据信息,即对象中的地址空间,作为其中的一个节点,从而创建一个从节点
到对象自下而上的类似文件夹结构的地址空间结构,增强了数据处理效率。
本文服务器地址空间中的数据为测量模拟数据,即通过数据访问获取的实时IO模
拟量。地址空间的编码实现,首先需要在程序中定义节点管理类,用于管理整个地
址空间的所有节点,并在服务器启动时申请内存空间。NodeManagerDemo的
主要功能是实现服务器和PLC控制器等下位机设备的通信,完成数据的读写。
NodeManagerDemoBase主要是在地址空间内部建立点表,包括定义节点的ID、
节点的名称、节点类型等,方便OPC UA客户端对服务器地址空间的数据进行处
理。地址空间编码实现的具体空间结构如图4和图5所示。
图4 地址空间主要类图
图5 服务器主要类图
服务器软件的主要流程图如图6和图7所示,包括服务器启动以及地址空间节点
管理。
图6 服务器启动流程图
图7 节点管理流程图
3 验证
本文OPC UA服务器在PLC系统中进行验证,并采用第三方提供的标准OPC UA
客户端验证OPC UA服务器功能。验证功能包括数据访问、数据读写、数据读写
权限设置、安全认证。在测试过程中,用一个及多个客户端对服务器设备进行连接,
最终,定义监视的变量在OPC UA客户端能够看到变量节点,并能够对变量进行
读写操作。验证结果表明该OPC UA服务器满足功能和设计需求,具备在实际工
业现场使用的条件。
4 结论
随着工业信息化及智能制造的发展,我国工控行业也在加强对关键基础技术的研究
与应用。OPC UA作为数据互联的基础标准与规范,在工业控制系统中是一个必
须掌握与深入研究的技术。本文所开发的OPC UA服务器实现了基本的数据访问、
地址空间与节点管理等功能。后续将再此基础上,将OPC UA服务器移植到嵌入
式操作系统中,并实现历史数据访问、报警与事件,增强安全功能设计,提供功能
更加丰富、更加安全、更加通用的OPC UA产品。此外,OPC UA与其他新兴技
术的结合,也是今后重要的研究方向。
参考文献
【相关文献】
[1] 贝加莱工业自动化(中国)有限公司.OPC UA互联工厂方案[J].国内外机电一体化技术,2016(4):
26-28.
[2] 华镕.使用OPC UA的十个原因[J].中国仪器仪表,2013(3): 55-57.
[3] 陈柳松.OPC UA服务器时间管理及订阅功能模块[D].北京:华北电力大学,2011.
[4] 任伟,林海波,杨晓明,等.工业物联网关键技术OPC UA分析[J].信息技术与标准
化,2017(10):35-38.
[5] 孙建华.OPCUA服务器数据管理与订阅功能模块研究与开发[D].北京:华北电力大学,2011.
[6] 加舒娟.基于全国产化PLC的OPC UA Server系统的设计与实现[D].西安:西安电子科技大
学,2017.
[7] 赵艳领,闫晓风,刘丹.基于SDK嵌入式OPCUA服务器设计与实现[J].制造业自动
化,2017,39(1):49-52.


发布评论