基于JEasyOPC 的电熔镁炉数据采集客户端的设计与开发
2020-11-26程盟盟
程盟盟,李 千
(连云港职业技术学院信息工程学院,江苏连云港222006)
在流程工业生产和控制过程中,数据采集作为关键环节,为后续工业数据分析、控制决策提供了基础和保障。OPC 技术建立了一套符合工业控制要求的接口规范,以实现在不同硬件设备之间数据交换和传输[1]。OPC 是基于Microsoft 的OLE/ COM 技术实现的,隐藏了网络通信的具体细节,只提供通讯必备的接口,所以基于OPC 技术的数据采集客户端软件、SCADA、HMI 等只需要专注于软件本身功能业务的设计和实现,不再需要为不同硬件设备开发不同的驱动程序。因此,OPC 技术使工业自动化系统中各个单元之间的互联趋于标准化,有利于实现现场设备级与过程管理级之间的信息交互[2]。
笔者设计开发了一种基于OPC 技术的电熔镁炉数据采集客户端,其特点有以下几个方面。第一,采用了RCP+plugin 的软件架构实现客户端的开放性和扩展性;第二,在该架构基础上采用JEasyOPC 作为实现通讯机制的内核,在满足通讯的基础上又利用其开源特点为功能扩展提供开放性接口;第三,基于J2EE 的数据访问对象设计模式设计了Bin- DAO- Server 三层类结构实现数据采集与业务逻辑的分离,降低软件功能之间的耦合度;第四,采用MATLAB Builder JA 可以保证工控机在内存资源有限的情况下,能利用MATLAB 的分析计算功能实现对电熔镁炉现场数据的处理分析;第五,采用3Dmax+Flash CS5S 实现对电熔镁炉熔炼过程的虚拟监视。通过对整个虚拟过程的应用效果分析,证明该客户端数据采集性能可靠,能满足后期基于数据对电熔镁炉进行相关控制和技术研究的需求。
1 数据采集客户端的分析与设计
1.1 现有问题分析
笔者在设计基于JEasyOPC 的数据采集客户端时,考虑到开放性、扩展性、工控机内存限制、数据采集和业务逻辑功能分离、虚拟监视等方面的需求问题,具体内容分析如下。
(1)由于工业生产中现有的OPC 客户端缺乏二次开发的API 接口,很难再增加新的功能以满足工业控制领域的特定需求,因此需要设计一种支持开放性的OPC 通讯内核。
(2)设计的OPC 客户端软件除了要求API 接口具有良好的开放性,还需要软件架构具有较好的扩展机制,以避免增加软件功能的同时带来软件结构的复杂。良好的扩展性应该能够有效地实现功能模块的相对独立和不同功能模块之间的合理调用。
(3)存储数据过程中的相关变量涉及相关的数据访问业务逻辑,为了保证监控数据实时地存储在数据库中并实现持久化,因此需要将数据访问逻辑与数据持久化进行分离,以增强体系结构的灵活性。
(4)工业数据的统计分析处理通常需要借助MATLAB 等科学计算软件,这些软件对硬件内存有较高的要求[3]。对于工控机来说,数据采集的任务已经占用了一部分内存,再同时运行MATLAB 软件会占用较大的内存空间,数据采集客户端的总体运行效率也会受到影响。因此,在设计开发数据采集客户端时,要考虑内存和其他硬件的约束。
(5)在工业生产监控过程中,数据往往以数值、曲线的形式呈现在监控画面中,这对监控人员具有很好的指导作用。在保证这些传统呈现方式的前提下,增加与实际工业过程现场相对应的虚拟动画来显示过程变量的变化趋势,将能更好地呈现工业生产过程,也能为监控人员进行控制决策提供更多便利[4]。
1.2 数据采集客户端的设计
针对OPC 客户端软件的开放性、扩展性、数据存储和访问逻辑的分离等问题和工控机的硬件条件限制,笔者采用相应的关键技术予以解决,具体如下。
(1)采用RCP+Plugin 作为OPC 数据采集、处理客户端的主体架构机制,保证软件架构具有良好的扩展性能。
(2)为了增强开放性,笔者采用OPC 基金会支持的开源软件包JEasyOPC。JEasyOPC是一个基于Java语言开发的开源OPC 客户端,用户使用简单方便[5]。JEasyOPC的核心基类为JCustomOpc,继承JCustomOpc类分别是JOpc 和JOpcBrowser,其中JOpcBrowser 负责对OPC 项目的展开,JOpc 在JCustomOpc 基础上增加了对项目和组的控制方法、通信模式等,并且给出一个继承JOpc 实现异步通信的示例JEasyOPC类。由于其源码可以方便获得,用户可以基于API 文档对其进行调用和二次开发,从而能够充分利用其API 接口的开放性带来的便利。
(3)借鉴在J2EE 领域广泛应用的DAO(Data Access Object) 设计模式设计Bin- DAO- Server 三层类结构,实现业务逻辑和数据库访问的分离。DAO 设计模式基本原理如图1 所示。
图1 DAO 设计模式基本原理图
(4)采用MATLAB Builder JA 实现对数据的处理和分析。MATLABBuilder JA 可以将编好的MATLAB程序生成相应的Java 类,这些Java 类可以被集成到本文中平台中来,而且不需要在工控机上安装MATLAB。取而代之的是只需安装MATLAB Compiler Runtime便可以支持这些Java 类的运行。MATLAB Builder JA的运行机制如图2 所示。
图2 MATLAB Builder JA 的运行机制
(5)采用3DMax实现对工业过程的虚拟建模,并利用FlashAS3.0 脚本实现对虚拟动画的控制。3DMax和Flash AS3.0 的应用目的是通过这两个软件工具开发针对特定领域过程的虚拟动画,根据现场采集的数据来控制动画的状态,充分利用动画效果更为逼真地展示当前工业现场的运行状态,辅助数值和曲线的显示,帮助监控人员更好地控制决策。
笔者开发的是电熔镁炉的虚拟动画(文件格式为SWF),首先利用3DMax建立工业现场设备的3D 模型,3DMax可以对设备的尺寸、纹理及渲染等进行制作。创建好的3D 模型可以导出为位图文件,并作为创建Flash 动画所需的图片素材。为了让虚拟动画与现场的实现运行状况相对应,需要用Flash AS3.0 脚本对制作的动画进行控制,通过Flash AS3.0 脚本编写动画元件的属性访问接口,并利用Java DJ 开源工程调用这些属性接口来实现对动画的控制。
2 软件的整体架构
数据采集客户端软件架构利用Eclipse RCP 作为整个软件的组织平台,包括从OPC Server 中读写数据的OPC Connector 模块、访问MySQL 的驱动模块MySQL Connector/ J、显示过程状态的动画模块和基于MATLAB Builder JA 的数据处理模块。整个软件架构安装在工控机上,工控机与PLC 之间可以通过串口或者网口进行通讯,笔者采用的是串口通信的ProfiBus 协议,其架构如图3 所示。
图3 数据采集客户端软件架构
3 数据采集客户端在电熔镁炉上的应用
3.1 电熔镁炉工艺概述
电熔镁炉是一种典型的高耗能设备,主要是将电能转化为热能,熔化物料、生成产品,其基本结构如图4 所示。熔炼过程中电极与底料之间形成电弧,电弧放热,熔化原料,形成熔池。随着原料的投入和熔化,熔池上涨,控制系统通过控制电机转动来不断调整电极位置,目的是使电弧长度维持在一定范围,确保三相电极电流跟踪电流设定值。随着熔炼过程的进行,熔池不断上涨,当熔池上升到炉口上表面时,熔炼过程结束[6]。
图4 电熔镁炉的基本结构
3.2 电熔镁炉数据采集客户端的具体实现
笔者针对电熔镁炉的数据采集客户端的实现主要完成以下工作:第一,搭建基于RCP 和plugin 机制的软件架构;第二,设置JEasyOPC 访问Siemens S7300 PLC 的相关参数,开发OPC 客户端;第三,针对电熔镁炉过程监控所需的MySQL 数据库进行设计;第四,针对电熔镁炉的数据分析需求,开发相应功能的Java 类,实现对MATLAB 相关函数的调用;第五,开发针对电熔镁炉过程背景的动画素材,然后将其导入Flash 中。最终基于RCP 和Plugin 机制开发出的数据采集客户端如图5 所示。
图5 客户端界面
在实际应用中,数据采集客户端会根据电熔镁炉实际生产监控的需求建立相应的数据表[7]。在OPC服务器读取数据时,根据OPC 的通信速率,设定插入数据的周期、数据表中字段以及每个监控变量的名称,最终形成数据表实时存储到数据库。笔者利用MATLAB Builder JA 调用MATLAB 功能函数对现场数据进行分析处理,其中整个过程的电流数据变化曲线如图6 所示。
图6 整个熔炼过程的三相电流曲线
制作Flash 文件SWF 的主要目的是将电熔镁炉生产过程所需要监控的控制变量能够以虚拟动画的形式展现在监控画面中。当一系列脚本文件编写完成之后,编译Flash 工程生成SWF 文件,最终效果如图7 所示。
图7 电熔镁炉Flash 界面
笔者设计开发的数据采集客户端软件在辽宁省某电熔镁炉的生产企业进行了实际应用。通过客户端界面显示数据与实际数据的对比分析,我们可以看出实际三相电流、电压的数值显示正常,数据更新速度较快,软件界面可视化程度较高,能够满足监控人员的需求,笔者所设计开发的数据采集客户端有一定的应用价值。
4 结论
笔者设计并开发了一种基于JEasyOPC 的数据采集客户端,通过将该数据采集客户端实际应用于电熔镁炉生产现场,实现了对电熔镁炉熔炼过程中三相电流、电压数据的采集,并在客户端界面上进行可视化显示。最终应用结果表明,该客户端数据采集性能可靠,使用方便,能满足后期对电熔镁炉进行相关控制和技术研究的需求。