您好, 访客   登录/注册

IP21实时数据库统一接口设计与实现

来源:用户上传      作者:

  摘 要:在炼油、化工等行业存在大量的实时数据,这些实时数据大多通过实时数据库进行存储和管理。实时数据库通常位于最底层,为ERP、MES等系统提供数据支持。过多信息系统接入会对实时数据造成较大压力,封装实时数据库访问层可提高其它信息系统访问效率,并提高实时数据库可靠性。基于此,探讨IP21实时数据库统一访问接口的设计与实现。
  关键词:实时数据库;InfoPlus.21 API;.net4.5;Webservice;企业信息化
  DOIDOI:10.11907/rjdk.151626
  中图分类号:TP391
  文献标识码:A 文章编号:1672-7800(2015)007-0161-02
  0 引言
  在生产流程型企业中,主要使用实时数据库系统进行控制系统监控,实现系统先进控制和优化控制,为企业生产管理和调度、数据分析、决策支持及远程在线浏览提供实时数据管理和服务支撑。实时数据库已经成为企业信息化建设的基础数据平台,可直接实时采集、获取企业运行过程中的各种数据,满足企业生产管理对实时信息完整性、一致性以及安全共享的需求,在企业自动化系统与管理信息系统之间建立起信息沟通桥梁[1]。此外,帮助企业各专业管理部门利用这些关键实时信息提高生产销售营运效率。
  实时数据库系统是生产流程型企业的底层数据平台。随着企业信息化的发展,企业中越来越多的上层应用系统需要使用实时数据。多个信息系统需要从实时数据库系统获取基础数据[2]。如何快速、高效、安全地为这些信息系统提供数据,同时不被某些不恰当的数据访问请求所阻塞,已成为企业信息化建设过程中普遍关注的问题。
  1 实时数据库应用现状
  生产流程型企业主要使用实时数据进行生产管理、调度和数据分析。不同类型企业对实时数据的要求不尽相同,如冶炼企业主要关注模拟量数据,对温度、压力、流量信号数据的准确性要求较高;电力企业更加关注开关量数据,对电网调度开关信号的响应速度要求较高;石化企业则对模拟数据和开关数据的实时性有较高要求[3]。当前,广泛使用的实时数据库主要有以下几种:①美国OSI公司的 PI (Plant Information System),是由美国OSI Software公司开发的一套基于Client/Server结构的商品化软件应用平台;②美国HONEYWELL公司的 PHD (Process History Database), 目前PHD HONEYWELL占据了DCS大部分市场份额,PHD内部使用Oracle关系数据库,所以算不上完全意义上的实时数据库;③美国AspenTech公司的 IP21 (InfoPlus .21),是Aspen公司的实时数据库软件,是一个用于集成生产过程信息(如各种工艺参数)与上层应用程序(如先进控制、优化、过程管理)的基础数据平台;④工业实时历史数据库pSpace,力控(三维力控)企业级实时数据库pSpace是一个高性能、高吞吐能力、可靠性强、跨平台的实时/历史数据库系统,可用于采集、压缩、存储、加工、分析任何带有时间特性的生产信息,pSpace提供全系列的工业通讯接口及ERP业务接口,实现从生产监控到调度管理的完美整合。此外,还有几款国产实时数据库,笔者实际工作中接触到上述几种数据库,总体感觉国产实时数据库在性能和稳定性上并不不输国外同类产品。
  2 IP21实时数据库统一接口设计
  IP21实时数据库系统总体架构分为数据采集层、数据存储层、数据应用层。数据采集层通过OPC接口进行生产装置的数据采集并传入IP21实时数据库;数据存储层主要将采集的实时数据存储到IP21的历史库中;数据应用层主要对采集的实时数据和保存的历史数据进行基本应用。统一接口设计思路为在数据应用层进行扩充。在IP21提供的多种访问接口中选定一种,对系统提供的访问函数进行优化和封装,对外统一发布,并提供账户验证和日志等高级功能。
  2.1 IP21实时数据库接口类型
  IP21实时数据库提供以下3种接口方式,可选择一种合适的接口作为统一接口的底层接口。
  (1)API方式。InfoPlus.21 API是Aspen官方提供的编程接口,利用API可以实现更多功能,使数据交换方式更自由。这种方式效率最高,需要Aspen InfoPlus.21库文件,开发人员需熟悉C++开发dll库调用[4]。
  (2)ODBC方式。IP21实时数据库提供了标准的ODBC接口,也提供SQL查询语言,用户可以将实时数据库当作一个标准的数据库来使用。但这种方法速度较慢,适合于对关系数据库比较熟练的用户。使用时需要安装Infoplus21的ODBC驱动。
  (3)OPC方式。因为大多数据库和DCS使用API方式存取数据,无法做到算法通用,为此工业监控领域提出了一个标准的存取接口,即OPC。目前,已有超过200家厂商加入到OPC组织中。OPC存取接口中使用了COM/DCOM,这让OPC只能在Windows下使用,效率不高。IP21也提供OPC接口供应用程序调用,但并不适用于统一接口,通常用于多个IP21服务器之间的连接。
  2.2 统一接口发布
  根据IP21在实际生产应用中的需求,统一接口可发布两种类型:一种为DLL动态链接库文件,另一种是WebService服务。两种接口的最佳应用场景稍有不同,前者主要用在实时性要求很高、数据量很大的应用中;后者则适应于大部分应用场景,并可跨平台调用。
  2.3 系统结构
  系统结构图1所示。通过建设实时数据库统一接口,可实现上层应用系统有序安全访问实时数据,为挖掘利用底层数据提供更好的支撑。
  图1 系统结构
  3 IP21实时数据库统一接口实现   按照统一接口设计思路,采用IP21 API作为底层开发接口,封装DLL和webservice两级对外发布接口。就调用接口的应用系统而言,实时性要求较高的可调用DLL封装接口,其它情况可使用WebService接口。具体实现方法如下:
  3.1 IP21 API函数封装
  IP21实时数据库提供了一组数据访问的API函数,利用这些函数可以完成数据读取等操作,但这些函数有的功能单一,有的调用参数过多,使用起来不方便。所以对API函数进行了二次封装,并发布到WebService上,以便其它系统可以更方便地访问。
  IP21 API是非托管代码开发的DLL,在.net平台下调用这些API需要知道该函数的名称以及DLL名称,然后为DLL的非托管函数编写托管定义。主要有以下二次函数,用于批量读取历史数据等功能,受篇幅限制只提供函数定义。
  public static float ReadActualsHistoryData(string tag,DateTime timeStamp,int timeSpan)//读取某个位号某个时间点的历史数据真实值
  public static float ReadHistoryData(string tag,DateTime timeStamp) //读取某个位号某个时间点的历史数据估算值
  public static float ReadHistoryDataStoE(string tag,DateTime timeStamp,DateTime timeStamp2) //读取某个位号某个时间段内数据值,保存在数组中
  public static float ReadNowData(string tag) //读取某个位号当前值
  通过Visual Studio编译类库功能将这些函数编译为DLL,在webservice对外发布中引用该DLL,调用其中方法[4]。以后其它程序需要访问实时数据库时可方便地调用。
  3.2 Webservice对外发布
  采用Web Service技术使运行在不同机器上的不同应用无需借助附加的、专门的第三方软件或硬件就可相互交换数据或集成。.net平台内建立对Web Service的支持,使用.net平台开发WebService,并部署在IIS服务器上[5]。
  在WebService上部署以下函数:
  public float getAnaLogTagValue(string tagname,DateTime dt)//读取某个位号某个时间点的模拟数据
  public float getAnaLogTagValueList(string tagname,DateTime dt,DateTime dt2,int period)//读取某个位号某个时间段内规定时间间隔的模拟数据列表
  public string getTextTagValue(string tagname,DateTime dt) //读取某个位号某个时间点的文本数据
  public string getTextTagValueList(string tagname,DateTime dt,DateTime dt2) //读取某个位号某个时间段内的文本数据列表。
  前两个函数分别用来读取模拟位号数据和批量读取模拟位号数据,后两个函数用在读取开关量文本数据和批量读取开关量文本数据。
  3.3 数据安全
  WebService发布在内网中,供需访问的应用系统访问。为保证发布到内网的Web Services不被非法使用,在调用Web Services前需要进行安全验证。主要从以下几个方面提高信息安全性:
  (1)通过生产网防火墙上配置策略,只允许受信任的应用服务器访问生产控制网。
  (2)禁用匿名访问,启用Windows集成验证,在内部活动目录中为各应用系统开通专用的通讯账号,各个应用使用账号验证访问WebService。调用方式如下[6]:
  localhost.WebService ip21ws = new localhost.WebService();
  CredentialCache credentialCache = new CredentialCache();
  NetworkCredential credentials = new NetworkCredential("windows登录用户名","登录密码");
  credentialCache.Add(new Uri(ip21ws.Url),"NTLM",credentials);
  ip21ws.Credentials = credentialCache
  (3)启用IIS中的“IP地址和域名限制”功能,只对受信任的应用服务器开放。
  (4)启用IIS日志功能,并自定义目录文件到非系统目录下。
  (5)在webservice对外发布的方法中,增加访问日志功能,记录调用方法的AD账号、IP地址、调用时间等信息。
  4 结语
  采用WebService方式获取IP21的数据,开发成本较低,部署一台服务器提供IP21取数服务,就可实现整个网络内各应用系统对IP21的数据集成。IP21统一访问接口投用后,多个信息系统实现统一接入,实时数据库访问压力减小,数据安全性和数据访问效率得到提高。并且系统日志对每次访问留有痕迹,出现问题后可以快速定位有问题的应用系统。实时数据库统一接口实现了上层应用系统有序安全访问实时数据,为挖掘利用底层数据提供了支撑。
  参考文献:
  [1] 刘云生,李国徽 实时数据库系统结构[J].计算机研究与发展,2004,42(2):30-36.
  [2] 王成光.流程工业实时数据库数据管理模型设计[J].浙江大学学报,2013,37(2):135-136.
  [3] 张志檩.实时数据库原理及应用[M].北京.中国石化出版社,2001.
  [4] 刘云生.实时数据库系统[M].北京:科学出版社,2014:72-78.
  [5] 马伟.ASP.NET 4.0权威指南[M].北京:机械工业出版社,2011:38-39.
  [6] 刘甫迎.C#程序设计教程[M].北京:电子工业出版社,2008:61-68.
  (责任编辑:陈福时)
转载注明来源:https://www.xzbu.com/8/view-11728212.htm