基于OPC UA 协议的工业网关系统设计与实现①
2021-11-05禹鑫燚唐权瑞施甜峰殷慧武欧林林
禹鑫燚 唐权瑞 施甜峰 殷慧武 欧林林
(浙江工业大学信息工程学院 杭州310023)
0 引言
无论是中国提出的“中国制造2025”,还是德国提出的“工业4.0”,核心都是实现制造智能化[1]。随着工业自动化进程不断推进,工业物联网已成为新一代信息技术的重要组成部分[2-3]。工业网关是一种支持不同协议之间互相转换的设备,从而使不同的网络协议之间可以互联互通,作为上位机和下位机的协议转换站,工业网关将采集的数据根据对应的协议进行转换后传输给上位机。
国外对工业网关的研究起步较早,文献[4]利用OPC UA 的信息模型和能源相关的CPS 需求,对能量流进行连续监测评估。文献[5]介绍了OPC UA服务器的一般启动过程,地址空间的生成步骤,生成对象、变量、方法和视图节点类型的专门算法。文献[6]提出了Web 平台的定义,通过该平台的REST 架构可以对OPC UA服务器进行访问。而随着国内“智能制造”的提出,部分高校对工业网关进行了深入研究,一些物联网厂商也研发了多款工业网关产品,例如研华AdvanTech ADAM6000 系列[7]。文献[8]针对现行的两线制通信的缺陷,将下层多个仪表的数据通过一个智能网关进行汇聚,网关和仪表之间采用点对点的通信方式。文献[9]提出了一种基于Profibus-DP 现场总线与ZigBee 技术的工业无线网关装置,该装置实现工业现场总线网络与ZigBee 无线传感器网络之间的协议转换。文献[10]研究了无线接入网关装置,并构建基于无线传感器网络的冷轧连退线重要设备状态监测系统。文献[11]提出了一种基于工业网关的数据采集系统,该系统作为一个标准的数据采集平台,可实现对多源异构的数据采集。文献[12]实现了将RTEX 网络嵌入到EtherMAC 总线中,并能对其进行灵活的应用。文献[13]具体分析了UA 的核心功能,包括地址空间技术和数据编码技术,并在两者的基础上,利用消息代理机制,完成了发布者和订阅者的功能开发。文献[14]介绍了面向工业智能设备的嵌入式Web网关的安全性解决方案,对网关系统的安全需求进行了分析。
从目前的研究成果来看,市场上的工业网关功能参差不齐,系统稳定性有待进一步提高,并且由于工业现场网络的封闭性,维护人员无法远程获取设备的相关信息,使设备维护成本增加,也缺少设备预测性维护的功能。因此对设备进行数据采集和远程获取设备信息非常重要。
针对目前不同品牌型号设备协议不一致和设备现场维护成本高等问题,本文设计了OPC UA 协议工业网关系统,工业网关可以将不同品牌不同型号的设备通过工业以太网进行连接,然后根据配置文件动态采集所需数据,并通过4G 网络将数据上传到云端保存,供监控平台进行实时数据显示、历史数据显示、实时数据分析和远程控制等操作。为此本文开发了基于浏览器/服务器(browser/server,B/S)和服务器/客户机(client/server,C/S)结构的工业监控平台,实现对工厂设备的远程监控,开发基于.NET Core框架的OPC UA服务器,实现对工厂设备的远程数据采集,在Web 网页端对设备数据进行实时分析,对设备进行预测性维护,最后搭建实验平台,通过实验对工业网关系统的可行性进行了验证。
1 基于OPC UA 协议的工业网关系统方案设计
本文主要对工厂设备进行数据采集、数据存储、远程监控和数据分析等操作,设计工业网关系统,以解决设备协议不统一、设备无法上云等问题。该工业网关系统应具有以下功能:(1)兼容TCP/IP、OPC UA 和消息队列遥测传输协议(message queuing telemetry transport,MQTT)等,并根据配置文件对设备进行数据采集、数据存储等任务;(2)通过简单的初始化设置,远程启动工业网关并进行数据采集;(3)OPC UA 客户端和工业监控平台分别基于C/S 结构和B/S 结构查看设备在线情况、实时数据、设备运行日志和历史数据;(4)云端服务器实时数据分析。
为了解决工业数据集成不足、工业软件开发困难和平台应用相对单一等问题,本文基于数据采集的经典设计思想,进行了系统的硬件设计和软件设计。系统硬件部分进行了工业网关的选型和工业网关的系统构建等操作,软件部分设计了OPC UA 协议服务器、OPC UA 客户端、配置界面和工业监控平台。
服务器采用.NET Core 3.1 和Win 64 作为开发框架,因此不受操作系统的限制,可以跨平台运行,提升系统的性能和稳定性。使用OPC UA 协议进行数据采集,能够降低工厂采集系统开发难度;采用Open VPN 接入远程网络,可以保证远程访问安全;为了对工厂数据进行预测性维护,使用Spark 技术对数据进行实时分析,并将分析结果实时推送给工程师。针对不同的工作用途,设计了B/S 和C/S 结构的客户端。系统总体架构如图1 所示,工业网关作为设备和工业监控平台的连接器,向下与设备进行组网,向上给工业监控平台传输数据;工业网关将数据通过存储到Redis 数据库供Web 浏览器进行查询并显示,与客户端通过Socket 通信传输数据。
图1 系统总体结构图
1.1 系统硬件构成
工业网关系统的硬件部分主要将各种设备和工业网关通过工业以太网进行连接,并使其所有设备位于同一网段中,远程配置界面动态生成工业网关配置文件,配置完成后将XML 配置文件发布到Zoo-Keeper服务的node 节点,待工业网关运行时自动进行热更新配置文件,并进行初始化和启动系统。
工业网关选用飞凌嵌入式FET335xS 核心板。FET335xS 核心板基于TI 公司Sitara 系列的工业级ARM 处理器AM3354 设计完成,ARM Cortex-A8 架构,运行频率为800 MHz。板载512 MB 的DDR3 内存,采用256 MB 的SLCNandFlash 存储芯片。工业网关相比传统数据采集具有体积小、无需布线安装便捷、能适应各种复杂的工业环境和有效降低运维成本等优势。在图2 中,所有PLC 设备和嵌入式设备经过交换机以工业以太网的方式进行连接。
图2 系统硬件构成
为了使OPC UA服务器在Linux-ARM 系统中正常运行,需要对工业网关系统进行系统移植,分别进行bootloader 的裁剪与移植、根文件系统和操作系统的移植,并成功烧写到搭建好的工业网关平台中。bootloader 移植主要是为了引导内核可以正常的运行,为Linux-ARM 操作系统的运行做准备;内核移植主要是提供对外的接口方便扩展,如SD 卡、串口、以太网和4G 等接口;根文件系统主要将磁盘或Flash 等存储设备划分为若干个分区,在不同的分区存放不同类型的文件。
1.2 系统软件框架设计
本系统软件部分设计了OPC UA服务器、配置界面、OPC UA 客户端和基于Vue 的工业监控平台。OPC UA服务端和OPC UA 客户端之间通过请求响应进行通讯,在服务器配置界面完成配置文件后,将生成的XML 文件上传到ZooKeeper 中,服务器获取ZooKeeper服务node 节点下的配置文件并设置监听,当数据发生变化时自动进行热更新。软件系统总体框架如图3 所示。
图3 系统软件系统构架
2 基于OPC UA 协议的工业网关系统软件设计
2.1 基于.NET Core 的OPC UA服务器设计
目前在工厂中还有一部分老旧设备不支持OPC UA 功能,传统方法是为每个设备单独写一个数据采集程序。在实际过程中,由于工厂存在很多品牌和型号的设备,导致工作量巨大,增加开发难度。并且如果在开发的时候重新为每个设备开发新的设备驱动,也可能出现新的兼容性问题。
为了解决这些问题,本文设计了基于.NET Core架构的OPC UA 协议服务器,该OPC UA 协议服务器需要满足协议转换和兼容厂商提供的设备驱动等功能。为了能够兼容不同设备提供的驱动,同时兼容自己开发的设备驱动,本文设计了公共设备读写接口,在开发设备驱动时,只需要将对应的设备驱动继承公共接口,然后重写接口,就可以对设备进行数据采集。
根据上述功能需求,本文设计的OPC UA服务器具有5 大模块,分别是协议解析模块、数据采集模块、数据持久化、配置文件更新和签名证书安全机制,服务器各模块如图4 所示。
图4 OPC UA服务器模块图
配置文件更新:在OPC UA服务器启动后,首先获取ZooKeeper 的node 节点下的配置文件并设置监听,如果节点下数据发生变化则通知OPC UA服务器实现热更新。
数据采集:配置文件解析完成后,根据设备的型号调用对应的设备驱动,并根据数据请求器和规则解析器的解析结果对设备进行数据采集。
数据持久化:为了适应不同的应用场景,将已经采集转换后的数据存入非关系型数据库和关系型数据库。将实时读取的数据存入Redis 数据库中,定时将Redis 数据库中的数据转存到MySQL 数据库中,作持久化处理。将数据按照指定的格式进行存储并借助优秀的读写性能来提高数据的检索效率。
签名证书安全机制:该服务器采用X.509 证书,对用户名/密码进行身份认证,提供了数字签名、加密传输以及级别验证,以防止非授权的用户访问,防止蓄意破坏和修改过程数据。
协议解析:使用协议解析器将其他协议的数据转换成OPC UA 协议的数据,根据XML 配置文件进行解析,解析后的信息交给数据采集部分。
2.2 基于ZooKeeper 分布式集群的配置界面设计
分布式集群ZooKeeper 主要为了在配置界面完成文件配置后,将生成的XML 文件上传到ZooKeeper 中。在服务器启动时向ZooKeeper 发送请求,自动更新配置文件即可,这样可以减少系统拥堵,也可以保障服务器读取XML 文件的快速高效。
配置界面主要是对节点配置器、解析规则配置器和登录方式选择进行初始化配置,配置完成后发布到ZooKeeper 中。具体如图5 所示。
图5 配置文件界面
配置界面完成配置后,先将生成的XML 配置文件发布到ZooKeeper服务的node 节点下,同时将配置文件保存在DB 块中,OPC UA服务器从ZooKeeper 中读取配置并监听配置的变化,实时传输到OPC UA服务器中,实现配置文件更改后,OPC UA服务器无需重启,即可自动进行热更新。
3 基于OPC UA 协议的客户端设计
根据使用场景的不同,本文设计了客户端和浏览器端,由于客户端数据实时性更好、安全性能更强,适用于在工厂本地使用;而浏览器操作方便,可以远程监测工厂数据,更适合于在外监控工厂数据。
3.1 基于Winform 的客户端设计
OPC UA 客户端通过和服务器建立连接,进行浏览和操作OPC UA服务器的地址空间等。OPC UA 客户端界面是基于C#语言自主开发的跨平台中间件软件,它是对现成的OPC UA Client SDK 进行二次开发而成。
根据设计需求,将OPC UA 客户端设计成4 个模块,包括实时数据显示、历史数据显示、AE 通知报警和日志查询、设备在线状态。
实时数据显示:通过和服务器进行Socket 连接,连接成功后,向服务器发送读取数据的指令,接收到指令后,显示在客户端界面上。
历史数据显示:负责历史数据在磁盘文件中的存储、压缩、读取、访问。从MySQL 中根据日期区间以及设备节点名称查询该设备在日期区间内的数据。为了方便使用者配置查询信息,历史数据查询模块提供了向导功能。
AE 通知报警和日志查询:负责报警的条件判断、报警存储、报警通知,并实施包括报警的分组、过滤等功能。
设备在线状态:在服务器中,定义一个TypeName函数,TypeName 函数获取的标识码是唯一的标识码,该标识码通过MD5 算法生成,各个设备不会重复,在异型客户端访问设备数据时可直接通过该标识码定位到该设备的数据。设备启动后TypeName的值为1,设备离线时TypeName 的值为0,客户端通过查询对应的值来判断设备在线情况。
OPC UA 客户端界面如图6 所示。
图6 OPC UA 客户端界面
3.2 工业监控平台设计
为满足工厂人员可以实时监测工厂设备数据,设计了工业监控平台(图7)。通过监控平台进行远程设备管理、实时数据查看和历史数据查询等操作。将系统的数据处理工作放在云端服务器上,有效地降低高速计算给工业网关带来的负担,Web 端实时从数据库中读取数据显示在网页上,并对设备进行预测性维护。当设备出现故障需要远程运维时,现场工程师给定权限后专业工程师可以远程对设备进行调试。本文还设计了数据分析模块,该模块可以直接使用本模块默认的预测分析模型,也可以上传自己训练好的预测分析模型,对设备进行预测性维护。
图7 工业监控平台界面图
当设备出现故障现场无法维修时,可通过Open VPN 软件,远程接入工厂局域网,通过工业监控平台,远程对设备进行控制,直至设备恢复正常运行。
4 实验部分
本文基于所设计的工业网关系统搭建了工业网关实验系统。实验系统包括1 台西门子S7-1200 PLC 设备、1 台UR5 机器人、1 台飞凌嵌入式FET335xS核心板(Linux-ARM 系统)、1 个路由器,以及1 个笔记本电脑和若干根网线,如图8 所示。
图8 实验平台
首先给个人计算机(personal computer,PC)、可编程逻辑控制器(programmable logic controller,PLC)设备、UR5 机器人分配相应的IP 地址,使3 个设备位于同一网段;接着通过博途软件和机器人示教盒分别载入PLC 梯形图程序以及机器人程序,并启动PLC 和机器人。准备工作完成后,打开配置界面对服务器进行初始化设置,实验结果如图9(a)所示。配置完成后,将生成的XML 配置文件上传到ZooKeeper服务的node 节点,实验结果如图9(b)所示。远程启动OPC UA服务器,服务器先访问Zoo-Keeper服务器并订阅node 节点,然后进行配置文件热更新,实验结果如图9(c)所示。接着对配置文件进行解析,解析完成后,根据配置文件进行数据采集和数据存储。
图9 OPC UA服务器准备界面实验结果
客户端通过输入服务器的URL 与服务器建立连接,并通过调用服务器的Browse服务来获得OPC UA服务器的设备节点信息,实验结果如图10(a)所示。然后调用服务器的Read服务读取设备节点的参数信息,来获取绑定的节点信息的value值,实验结果如图10(b)所示。Web 端网页通过对数据库的查询,获取设备的数据信息,并将数据信息显示在实时数据界面,实验结果如图10(c)所示。
图10 OPC UA 客户端实验结果
为了检测工业网关系统的性能,对服务器的功能进行性能测试。实验中同时对多个设备进行数据采集和数据存储,且有多个客户端同时访问服务器,进行并发写入操作。测试结果如下:本工业网关系统可以同时支持最大并发客户端用户为50 个,服务器支持Linux 和Windows 操作系统运行,实时数据库最多存储50 万组数据,实时数据的写入时间不超过0.1 s,实时数据显示在Web 网页上的时间不超过0.5 s。
通过以上实验可知,该工业网关系统满足跨平台需求,一套源码可以在多个操作系统平台运行。经过配置后可以使用OPC UA 协议对所有设备进行数据采集。实验结果表明,本文设计的工业网关系统可以对PLC 设备和UR5 等设备进行有效的数据采集,并且可以通过客户端和Web 网页端远程监测设备实时数据,表明本系统可以满足小型工厂数字化转型的需要。
5 结论
本文设计并实现了基于OPC UA 协议的工业网关系统。该系统可以对PLC、数控机床和机器人等不同设备进行数据采集。使用OPC UA 协议能为不具备OPC UA 功能的设备提供数据采集的功能,使用配置文件对设备进行数据采集能够提高程序的灵活性,避免了程序的反复修改。通过ZooKeeper 分布式集群对配置文件进行高效管理,同时对系统中的重要数据进行备份,从而提升了系统的可靠性。基于.NET Core 框架编写OPC UA服务器,使服务器可以跨平台运行,提高系统性能。此外,工业网关系统还提供了驱动模板,为后续服务器中添加新类型的设备驱动提供方便,同时驱动模板的存在使得驱动加载器能更高效地工作,无缝地接入到系统中。实验表明该系统运行效果良好,为工厂的数字化升级提供了一种新的思路。