APP下载

Historian实时数据库的RESTFULAPI设计与开发

2020-07-01郭俊豪

装备维修技术 2020年29期

郭俊豪

摘 要:在过去,工业企业为了实时获取现场设备的数据信息,每一个工业应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,且产品的不断升级,往往给工业企业用户和软件开发商带来了巨大的工作负担。编写一种融于工业互联网体系的web化接口工程,提供实时数据的接口查询服务应运而生。

关键词:实时数据采集;Historian;RestfulAPI;JAVA;IFIX;Wonderware

1 设计背景

2002年厦门烟草工业有限公司(以下简称厦烟公司)异地技术改造。在新厂房建设投入新设备的同时,源于对设备监控的需求,分别引入了英国施耐德的工控软件Wonderware、美国GE(通用)公司的工控软件Proficy IFix,落地应用于厦烟公司三大车间:制丝、卷包、动力,搭建起设备自动化监视与辅助控制的集中控制系统(以下简称集控系统)。

集控系统在每个车间部署地都提供了对应现场设备相关传感器的实时数据库Historian,两家工业软件开发商都为数据分析与挖掘提供了标准规范的接口方式ODBC与OPC开放标准,基于自身的软件体系做延伸数据分析决策产品。

随着工业互联网的蓬勃发展,智能工厂,移动互联的理念深入人心,传统C/S架构的工控软件已经无法适应互联网B/S架构的快速轻便的通讯方式,只适合在生产现场稳定运行,提供数据源的稳定展示。

因此,需要有简易的模式去按需获取工控软件在实时数据库的数据源,得到的数据可以在网页信息系统做数据分析图形化,决策推演,以及移动端看到工厂现场生产实时生产状态。

2 设计描述

从工业自动化软件设计角度来说,系统分析与设计是一项对系统度以及实用性要求特别高的工作[1]。对于卷烟工业而言,厦烟公司因职能分工的要求,针对不同生产车间部署不同的集控系统,目前也同样缺乏系统整体设计,但针对业务需求又仅仅只是需要几个核心传感器的实时值。因此,从实用角度出发,将不同厂家的集控系统的传感器实时数据,采集给应用层做接口设计。

2.1编程语言及框架

采用JAVA语言搭建轻量级无状态采集工程,提供稳定且实时的传感器的RESTFULAPI接口。

2.1.1关于REST

REST是以资源为中心的,在REST中,认为Web是由一系列的抽象资源(Abstract Resource)组成,这些抽象资源具有不同的具体表现形式(Representational State),通过REST架构,Web应用程序可以使用一致的接口(URL)暴露资源给外部世界,并对资源提供语义一致的操作服务[2]。因此围绕着REST架构规范,采用RESTFULAPI的实现方式去具体实现这次的接口。

本文采用Swagger-UI的方式,将现场传感器的以接口的方式呈现在开发者面前,方便前端进行调用与测试。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

2.1.2关于Historian实时库

利用iFix提供的API接口来读取iFix的实时数据库,是较为简便的方法,通过调用相关API函数,可以直接读写iFIx的实时数据库[3]。

但是不同厂家都有自身连接实时数据的连接方式,他们都是统一采用SQLSERVER数据库OLE DB Provider驱动程序去连接Historian。因此本文采取直接通过连接SQLSERVER数据库,通过查询语句的二次嵌套命中所需要实时数据库的数据表,并进行视图层封装给上层应用语言作为查询的实体。详见如下SQL语句:

SQL语句中,(1)为需要转化为实体属性tagname标签键名,timestamp时间戳,value标签键值;(2)为使用OPENQUERY对链接服务器指定传递查询,需要传入Historian实时库名和嵌套子查询;(3)为子查询需要查询的Historian实时库中的表ihrawdata里的性tagname标签键名,timestamp时间戳,value标签键值;(4)为子查询中的判定条件1,根据业务部门提供的传感器键值名QYFIX.EP1_T08_PT0807_PV.F_CV;(5)为子查询中的判定条件2,采集频率限定值intervalmilliseconds;(6)为子查询中的判定条件3,根据时间戳timestamp倒序排序,将最新值排在第一条;(7)为嵌套查询的命名。

2.1.3关于JAVA

在众多编程语言中,JAVA语言属于语义严谨并且稳定可靠,本文采用JAVA的Spring框架体系,SpringBoot+Mybatis+Redis多数据源框架连接不同车间的Historian实时库,对外暴露可调用API的服务,具备高并发体系架构,可以很好的胜任此次的工作。框架层级设计详见图1:

2.2应用请求与采集工工程实现

根据业务部门提供集控系统的标签键做采集。按需采集是此次采集的核心思想,与以往OPC采集方式不同,采用被动式等待调用的模式,由应用发起调用请求。为了满足实时性要求,应用针对不同传感器需发起异步调用及定时请求,易造成接口崩溃或者数据库锁。因此在框架中引入Redis缓存机制,设定采集值的生命周期,一旦到达缓存设定周期,才去开启连接查询数据库,这个设定周期可以根据应用展现传感器时效性设置。应用请求路线详见图2:

2.3应用部署与网络安全

采集工程作为后台服务,遵循厦烟微服务部署规则,接入应用网关。

应用调用方需要生成至少1024位的RSA密钥对,把【RSA公钥】上传服务网关获得应用令牌。应用调用方遵循JWT规范使用【RSA私鑰】与网关返回的【应用令牌】生成【JWT访问令牌】,请求在网关注册的后台接口时附上JWT安全验证头,服务网关负责验证令牌是否合法或应用调用方是否有权限调用请求的后台接口,如果有则反向代理至后台服务,具体鉴权验证详见图3:

3 输出成果

落地应用

为了检验采集工程的真实落地场景,根据车间需求定制开发了压力容器监控web页。

采用HTML+JAVASCRIPT+CSS基于VUE前端框架进行网页设计与开发,利用Echarts图表组件进行压力容器值的实时展示;构筑定时器定时按10秒一次的规则进行轮询后台实时数据,动态展示压力容器的实时值。

4 结语

进入十四五规划元年信息化建设的今天,随着企业信息化队伍不断的壮大,员工自主开发实力得到提升,掌握并具备相关计算机知识的员工越来越多,在解决信息系统痛点的棘手问题上得以快速解决并转化为企业重要知识财富。

参考文献:

[1] 张鹏. 试析一种面向对象的工业自动化监控系统设计技术 [J].中国石油和化工标准与质量, 2012, 032(005): 113-113.

[2] 袁赟. Java与Restful Web Service [J].电脑知识与技术, 2007, 004(021): 780-782.

[3] 倪磷罡. 基于iFix的历史记录程序的开发与优化 [J].电子技术与软件工程, 2015, 000(018): 178-179.

(厦门烟草工业有限责任公司,福建 厦门 361022)