|
发布时间: 2020-04-10 |
|
|
|
收稿日期: 2019-10-11
基金项目: 上海市“科技创新行动计划”高新技术领域项目(19511101600); 上海市“科技创新行动计划”地方院校能力建设专项项目(19020500700); 上海市科学技术委员会工程技术研究中心项目(14DZ2251100)
中图法分类号: TP311.52
文献标识码: A
文章编号: 2096-8299(2020)02-0117-06
|
摘要
提出了一种基于JAVA的OPC数据采集和转储技术。通过对该技术的深入研究, 开发了一种通用的OPC数据采集和转储系统软件。通过简单配置的方式即可实现工业数据的采集和转储, 降低了后续相关系统开发的难度、周期及成本。在发电厂进行了长期测试, 验证了该软件的通用性、灵活性及稳定性。
关键词
OPC技术; 数据采集; 转储; 数据库
Abstract
A JAVA-based OPC data acquisition and dump technology is proposed, and a common OPC data acquisition and dump system software is developed through the further study of the technology.The collection and dumping of industrial data can be realized by simple configuration, which reduces the difficulty, cycle and cost of subsequent related system development, and proves the versatility, flexibility and stability of the software through long-term testing and verification of power plants.
Key words
OPC technology; data acquisition; dump; database
智慧电厂的本质是信息化和智能化技术在发电领域的融合, 信息化和智能化的基础就是数据[1]。以发电厂厂级监控信息系统和分散控制系统为例, 通常以用于过程控制的OLE(OLE for Process Control, OPC)作为现场设备数据信息的接口标准[2], 基于此标准传输实时数据, 构建电厂的信息化平台。OPC数据采集一般使用相关厂家的商业OPC客户端软件[3-6], 存在模式单一、功能简陋、费用昂贵、采样频率低等问题, 导致了后续系统开发成本高、周期长、可靠性差等后果, 为智慧电厂的建设带来了一定的困难。
OPC标准已经应用多年, 多种编程语言均支持OPC标准的开发。文献[7]提出了一种采用node.js语言开发的OPC客户端; 文献[8]提出了一种基于C#语言开发的OPC客户端; 文献[9]提出了一种基于JAVA语言的OPC客户端。
虽然很多学者采用了不同的语言进行OPC客户端的开发和实现[10-11], 但大多数还停留在代码层级的实现。鉴于此, 本文依据OPC实时数据访问规范(Data Access, DA)标准, 采用JAVA编程语言, 设计开发了一套基于OPC(DA)标准的通用工业数据采集和转储系统软件(OPC to Database, OTDB), 很好地解决上述数据采集和转储过程中存在的问题。
1 OTDB系统设计的背景及原则
1.1 OPC数据采集和转储技术的背景
在实际的工业信息化系统开发中, 现有的OPC数据采集和转储系统软件主要存在以下问题。
(1) 未集成可视化交互界面, 采集方式不灵活, 用户体验差, 普通用户难以使用。
(2) 转储类型单一, 只能转储特定的数据仓库, 或只能满足特定版本的数据仓库。
(3) 转储模式固定, 只能以其软件固定的方式写入数据仓库, 无法更改字段名称和数据表名称, 难以满足系统的实际开发需求。
(4) 转储配置复杂, 配置页面内容复杂, 在采样点比较多的情况下, 无法批量选择与更改, 甚至存在一步做错就要全部重置的情况。
(5) 跨平台能力差, 部分软件只能在特定的系统版本上运行, 难以在不同的平台上使用。
(6) 容灾能力差, 在服务器故障关机重启后, 无法自动恢复数据的转储, 导致数据大量丢失。
1.2 OTDB的设计原则
针对现有OPC数据采集和转储系统软件的不足, OTDB在设计研发过程中需要遵循的原则主要包括以下几个方面。
(1) 通过JAVA可视化技术, 开发交互界面, 丰富配置内容, 为用户提供简单自由的配置方式。
(2) 提供多样的数据仓库支持, 包括常用的MySQL和Sql Server数据仓库系统, 并且提供同一数据仓库的不同版本之间的支持。
(3) 通过简单的文件配置即可完成不同的数据表转储任务, 并提供自定义的数据库名、数据表名、字段名更改, 可动态地创建或重建转储库和转储表。
(4) 通过简单配置项可生成配置模板, 提供高自由度的转储配置方法, 实现批量配置修改, 降低配置复杂度。
(5) 支持不同的系统平台进行安装和部署, 具备优异的跨平台能力。
(6) 支持系统软件开机自启动, 可配置开机自动转储数据仓库的功能, 在服务器故障恢复时能自动恢复数据转储任务, 减少数据丢失, 降低运维的复杂度。
(7) 提高系统的数据采集能力, 可实现大规模数据的采集及短周期、超短周期高频数据的采集。
(8) 与其他业务系统解耦, 专注于实现数据的采集和转储任务, 提高系统的稳定性和可靠性。
2 OTDB系统架构设计
2.1 数据采集系统的总体架构
电厂设备数据通过数据总线和数据系统服务器进行数据交互, OPC服务器实时读取设备数据, 建立OPC服务端。OPC客户端实时读取OPC服务器数据, 同时将数据写入相应的数据仓库中。数据采集系统的总体架构如图1所示。
2.2 OTDB功能架构设计
OTDB系统软件在网络中处于OPC服务器与数据系统服务器之间, 集成了用户授权验证、实时数据显示、OPC服务端配置、转储列表配置、数据仓库配置、转储粒度配置、实时任务状态日志显示、软件及任务自启动自恢复、OPC服务器自动激活等多种功能。通过这些功能, 将OPC服务器的数据自由地导入本地或远程数据仓库中。其功能架构如图2所示。
2.3 OTDB程序流程设计
为了保证OTDB数据采集和转储系统软件在实际使用过程中的稳定性和可靠性, 对程序的执行流程进行了有针对性的设计和优化。程序执行的具体步骤如下。
(1) 判断软件是否已经取得授权。若已取得授权则软件会自动激活, 并判断用户是否设置故障自启动。若设置了自启动, 则OTDB会自动激活OPC服务端程序, 否则等待用户手动启动客户端。
(2) 自动扫描配置信息, 若已有配置信息, 则进行OPC服务器的连接认证和数据库服务器的连接测试; 若无配置信息, 则需先进行信息配置。
(3) 配置OPC服务器, 通过自动导出功能, 导出测点文件的配置信息; 用户自主选择需要转储的测点以及导入数据库的字段信息; 系统可支持向多张不同的表同时导入数据的功能。
(4) 设置完配置文件后, 可选择相应的厂家数据库及对应的数据库版本。用户可自主重建数据库及数据表, 缩短开发周期, 简化开发流程。
(5) 设置数据的采集周期, 导入测点配置文件后进行连接测试。若连接测试通过, 即可配置自动转储功能的开启; 否则, 根据提示信息排查错误。
(6) 配置信息步骤完成后, 开始对OPC服务器的测点进行数据采样, 并以多线程的方式写入相应的数据库和数据表中。
OTDB程序执行流程如图3所示。
3 OTDB客户端的实现与应用
由于数据分析系统通常采用JAVA语言开发, 所以基于JAVA语言开发OPC客户端能与其他系统有更好的兼容性, 且便于二次开发。JAVA语言开发OPC客户端主要分为Utgard和JEasyOPC两种开源类库方式。Utgard方式具有采样频率高、支持点数多等优点, 但不支持组查询, 无法读取OPC的节点列表, 且使用前需要配置DCOM获得用户名和密码, 导致操作过程复杂, 用户无法有效使用, 其功能以面向开发者为主[6]。JEasyOPC进行OPC数据采集的方式虽然牺牲了部分性能, 但其无需配置DCOM, 不需要用户名和密码, 且支持组查询等, 使用过程简单, 稳定性好。两种方式的具体对比如表1所示。
表 1
Utgard和JEasyOPC的性能对比
性能 | Utgard | JEasyOPC |
Linux下 | 支持 | 不支持 |
用户名密码 | 需要 | 不需要 |
组查询 | 不支持 | 支持 |
压力测试(单线程同步) | 略快(7万点大约4 224 ms) | 略慢(7万点大约22 540 ms) |
压力测试(单线程异步) | 略快 | 略慢 |
OTDB客户端采用JEasyOPC方式, C/S架构开发, 具备简洁的用户交互界面, 同时支持WindowsXP, Windows7, Windows8, Windows10的32/64位操作系统。其主要包含用户授权模块、用户配置模块、数据采集模块。
3.1 用户授权模块
用户在安装OTDB客户端后, 程序会自动读取本机的机器码, 通过相关加密算法, 生成与机器码对应的唯一识别码。当用户获得授权码后, OTDB会将授权码持久化到磁盘。当软件服务器重启或故障恢复后, 系统会自动跳过用户验证页面, 以保证数据转储任务的正常运行。
JAVA通过调用服务器脚本命令查询CPU序列号, 再通过输入流的方式获得序列号, 在客户端将授权码进行解码, 并与序列号进行一致性校验。
用户授权登录模块软件界面如图4所示。
3.2 用户配置模块
该模块的主要功能包括OPC服务器的相关配置、数据库相关配置, 以及转储任务的相关配置等, 其实现流程如下。
(1) JAVA OPC客户端与OPC服务器建立安全通道, 获取OPC服务器的组列表及节点名称, 通过文本输出流将测点信息写入csv文件。
(2) OTDB软件将现在主流的数据库驱动加入软件内部, 用户可自行选择不同类型的数据库驱动, 通过数据库的地址、用户名、密码与数据库建立连接。
(3) 用户配置csv格式的数据采集文件, 文件包含采集标志、测点描述、测点地址、转储表名、转储字段名5个关键信息。
用户配置模块软件界面如图5所示。
3.3 实时数据采集模块
本模块的主要功能包括转储任务的启动和停止信息显示、OPC服务器名称及连接状态显示、数据库信息及连接状态显示、转储任务的明细数据及转储状态显示、OPC采集测点名称及实时数据显示、OTDB软件运行日志显示等内容。通过这些关键信息的显示, 使用户能够明确知道自己的配置文件是否配置成功, 转储的功能是否实现等。
其实现流程如下。
(1) 通过JOpcBrowser进行组查询, 初始化OPC服务器的连接。
(2) 与OPC服务器建立连接后, 读取选择的OPC服务器名称, 与对应的服务器建立安全通道。
(3) 将配置文件中配置的测点名称加入到新建立的OPC组中, 完成OPC测点的初始化。
(4) 添加OPC测点完成后, 以OPC组的方式按照设置的读取频率进行异步读取OPC的数据, 再将读取到的数据进行坏点校验, 将处理完成的数据存入数据库中。
实时数据采集模块软件界面如图6所示。
3.4 OTDB的应用
作为一款通用的OPC数据采集软件, OTDB的应用场景广泛, 理论上可用于所有自动化领域的数据采集, 如分散控制系统、数据采集系统、厂级监控信息系统等。通过OTDB采集数据, 可以构建统一的工业控制系统信息平台, 完成异构网段数据的有效交换, 实现不同工业网络系统的信息集成。经过不断的迭代更新, OTDB的功能已达到工业现场实时数据采集的要求, 现已运用于多个发电厂数据分析系统。图7为某火电厂重要辅机能耗分析与评价系统的应用界面。
该系统通过OTDB以分钟为密度, 从厂级监控信息系统开放的OPC服务器采集共计514个测点的数据。通过采集到的数据对火电厂重要辅机的能耗、单耗、电耗等指标进行数据挖掘和分析, 为火电厂的经济运行、智慧发电、检修维护提供指导, OTDB已与该系统配套运行近4个月。
另一电厂采用的小指标分析与决策系统, 通过OTDB以秒级采样的方式, 采集厂级监控信息系统共计1 000个测点的数据。根据采集到的数据, 对电厂机组运行数据进行筛选, 统计超温、超压等异常数据。通过对机组运行参数的统计, 分析不同的班组值班时机组的运行状态, 对班组的成绩进行考核等。通过该系统, 为电厂机组的运行提供了指导。OTDB已与该系统配套运行近3个月。
经过长期的运行及检验, OTDB采集的数据准确率高, 丢包率低, 即使服务器故障重启, OTDB仍能自动恢复数据转储任务, 为系统的数据采集提供了有力保障。
4 结 语
通过深入研究OPC(DA)相关技术规范, 采用JAVA语言开发的OPC数据采集和转储系统软件, 有效地解决了工业信息化过程中数据采集的难题, 缩短了系统开发周期, 增强了数据采集的可靠性, 实现了跨平台、高自由度、自恢复及自启动的数据采集和转储。同时, 通过在现场的实际应用和检验, 证明了该软件的稳定性和可靠性, 具有较强的实用性和广泛的应用前景。
参考文献
-
[1]智慧电厂与智能发电典型研究方向及关键技术综述[J]. 浙江电力, 2017, 36(10): 1-6.
-
[2]OPC技术在工业网络控制系统中的应用[J]. 电子技术与软件工程, 2019(16): 137-138.
-
[3]发电厂小指标运行分析与决策系统设计及应用[J]. 上海电力学院学报, 2018, 34(5): 501-506.
-
[4]OPC技术在DCS系统之间互联的应用[J]. 化工自动化及仪表, 2019, 46(3): 235-239. DOI:10.3969/j.issn.1000-3932.2019.03.019
-
[5]集成OPC实时数据的消息中间件的开发与实现[J]. 上海电力学院学报, 2011, 27(2): 179-182.
-
[6]基于OPC与PLC的远程监视系统的研究[J]. 自动化仪表, 2017, 38(2): 22-24.
-
[7]基于OPC UA技术的质量数据监测系统[J]. 机械制造, 2018, 56(11): 104-108. DOI:10.3969/j.issn.1000-4998.2018.11.027
-
[8]基于智能注塑成型MES系统的OPC数据采集系统[J]. 电子世界, 2019(5): 131-132.
-
[9]基于OPC技术的人机界面监控系统的设计[J]. 智慧工厂, 2018(12): 65-69.
-
[10]基于Java的OPC数据采集系统的设计与实现[J]. 电脑知识与技术, 2019(15): 116-118.
-
[11]基于OPC服务的煤层气远程控制系统研究与实现[J]. 石化技术, 2019, 26(7): 188. DOI:10.3969/j.issn.1006-0235.2019.07.104