实时数据库是计算机控制系统和上层生产管理系统数据存储和展示的核心。结合河南天冠燃料乙醇有限公司MES系统应用实例,介绍了实时数据库PI的安装部署,建立信号量集和数据导入,以及客户端接口配置,数据库测试等相关主题。通过基于PI实时数据开发的实际应用软件,介绍了在Microsoft Visual Stdio 2005环境下用C#及PI-SDK进行的接口程序开发。实践表明,基于PI的企业生产管理系统极大地提高了企业生产管理层的信息化水平,收到了良好的间接经济效益。

随着轻工、石化等连续过程生产企业制造执行系统(MES系统)模型的日趋成熟,其系统的核心实时数据库的选型及应用开发愈来愈引起人们的重视,它与关系数据库一起构成了工厂的生产管理信息集成环境。作为管理和控制之间的桥梁,实时数据库不仅承担着对生产过程中实时数据的采集与存储的任务,而且还直接支持控制层和过程监控层的许多应用。目前国内外有不少实时数据库产品可用于工业实现,美国的OSIsoft公司的PI数据库无疑是其中的佼佼者,由于其采用先进的Swinging Door(旋转门)专利压缩技术算法,使数据压缩率大大提高,且体系架构先进,运行稳定,在国内电力、石化等行业占有很大的市场份额。天冠燃料乙醇有限公司MES系统中使用PI实时数据库,连接美国爱默生Deltav,西门子PLC300/400系列,国产新华DCS等十多套自动控制系统,两万多个测点。本文结合应用实例对PI的部署、配置及二次软件开发进行了阐述。

1 PI的部署与配置

1.1 安装与部署

PI数据库是基于Client/Sel-ver(客户端/服务器)架构的软件,其安装包分为服务器软件包和客户端软件包且适用于WINDOWS,UINX等多种平台;服务器端可利用磁盘阵列和系统平台的群集管理器配置成双机冗余模式。本文仅就WINDOWS平台做以介绍。

PI的安装较简单,在安装过程中会生成\PI\dat目录,该目录下有三个文件piarch.001,piarch.002,piarch.003存放实时数据的归档文件(data archive file),文件默认大小是32Mb。归档文件的大小决定了数据库存储历史数据时间的长短,也和存入数据库的实时数据点数相关,应综合以上两点确定归档文件的大小。在安装过程结尾还会提示是否安装PI-SDK软件开发包,应选择安装。在工程实践中只要各选项选择得当,PI的安装较为简单,但若安装中出现错误,卸载较为麻烦,甚至需要在注册表里手动卸载某些选项,稍有遗漏,重装往往不成功。在这种情况下最好更新或恢复操作系统平台后再进行安装。

服务器端安装成功后,后台进程即启动,PIServer开始运行,在系统任务管理器里可以看到pinetmgr.exe、piarchss.exe等相关进程。有一个方法可测试PI Server是否已经正常运行。即在命令行窗口进入PI的安装目录\pi\adm,执行pisnap.bat数据快照查看批处理命令,若提示“Attempting eonnection to localhost 5450;Enter tag name:”输入“sinusoid”(内部测试点),若输出测点实时值,则说明Server已经正常运行了。

1.2 导入数据及相关配置

在服务器端安装成功后就要进行导入测点(Tab)的工作,测点(Tab)即位于工厂控制层DCS、PLC的实时数据,在PI中要有一个Tag和过程控制层的测点相对应,才能通过客户端接口从控制网络中取到实时值存入数据库。

向数据库添加Tag,可以在命令行方式下进行,这主要用于初期数据库测试阶段。大批量导入数据可在前端利用Excel进行。这需要安装PI—SMT客户端组件,然后在Excel“工具”菜单下选“加载宏”,加载安装路径下\pipc\smt里的PlTagCnf.xla宏,此时Excel会多出一个“PI-SMT”菜单,该菜单下的各命令都是对PI进行相关操作的工具。其中最常用的就是“Import Tags”和“Export Tags”命令。利用“ImportTags”可以将数据库里的测点Tag按筛选条件导入进Excel,表的第一行即是数据的各属性字段。利用“Outport Tags”可以将Excel表中的数据批量导入PI数据库内。

需要指出的是,数据库安装成功后,其内部已预建了十个不同数据类型的测试点,一般情况下不要删除这些测试点,否则可能引起运行故障。另外对于控制层的信号,如开关状态、多状态阀位(开、关、半开)等离散型值,用户可以建立信号量集与之对应,具体步骤为命令行窗口下进入安装路径\pi\adm,输入

Piconfig //配置命令 @table pids //进入离散量状态(Digital states)表,表名为pids @mode cr //进入创建模式 @istr set,state,…//确定输入的结构,set对应信号状态集的名称,state对应状态字符串 set1,off,on //新建一个信号量集set1,内有两个状态off和on @ends

完成上述操作后,就可以把离散性质的过程值赋予该信号状态集。

数据库内每条Tag记录有多个字段属性。其中的Tag定义了测点在PI里的测点名,而instrument.tag字段必须与控制层opeserver传输的测点名称完全一致,否则就会取不到数据。

1.3 配置接口

接口配置属于PI客户端的范畴,PI的接口有多种类型,最常用的是开放型工业标准OPC接口。采用这项标准后,硬件开发商为自己的硬件产品开发符合标准的OPC Server程序,如爱默生Dehav系统的OPCServer是OPC.Deltav,西门子WINCC系统的OPC Server是OPCServer.WINCC。而软件开发者不用再关心硬件驱动方面的技术问题,只要按标准开发程序就可完成与硬件的连接,这样不但提高了系统的开放性,也提高了软件开发的效率,使软件开发人员可以有更多的精力投人到其核心产品的开发上。

接口程序最好安装在网关机上,网关机起到将生产管理网络与控制网络隔离的作用,接口程序从控制网络采集实时数据然后将其转发至实时数据库服务器。系统网络结构如图1所示。

图1 PI系统网络结构图

安装完PI opcint组件及PI API后,在默认路径下会生成接口程序文件夹\pipc\interface,操作系统管理工具里还会生成opcint服务,该服务即是后台运行的接口程序。配置接口需对\pipe\interface\opcint下opcint.bat文件进行编辑。主要选项如下:

●/ps=该项确定点源,与PI数据库内PIPOINT表的pointsource字段相对应,假设某一系统有多个接口.其中一个ps=0,则数据库内pointsouree字段为o的所有测点的实时值都从该接口取值。pointsource是一个单字符变量,PI的一些子模块使用了默认的pointsource字符,如Totalizer子模块使用T,Alarm子模块使用G和@,Performance Equations子模块使用C等,因此在PI 2版本里用户定义的pointsource是不能使用C,?,,@,Q,T等字符的;

●id=pipc.log日志文件使用该标记对该接口接收的数据消息进行记录,该项必须与数据库Location1字段相对应:

●/SERVER=接口所连接opc serveri的名字,如果opc接口与opt server运行在一台机器上,只需写出opc server的名称,若不在一台机器上,则其格式应是serverde的主机名加两个冒号然后加server名,即hostname::servename:

●/host=PI Server的主机名和端口号,一般主机名用IP地址,端口号是5450;

●/f=定义实时数据的刷新周期,可定义多个,具体用哪个南数据库里Location4字段确定;

接口配置完成后即可启动接口服务,在系统管理工具一服务下有opcint项,若接口程序与opcsenrer不在同一台机器上运行,则网关机必须使用和server机相同的用户账号和密码,且要在opcint服务的属性一登录选项卡下的“登录身份”项做出一致的设置,否则接口也不能运行成功。

1.4 PI测试及应用工具

接口安装目录下提供了接口测试工具PIOPCTool,目前也有不少第三方测试工具,这些工具使接口的测试变得十分方便。可以用它找出硬件厂商控制系统opc server的名字、查找server传输测点的准确点名用于接口和数据库Tag测点的配置。

PI还提供了HealthCheck数据库检测工具,利用它可以方便地检查和定位系统及网络故障,数据测点统计,查看数据快照和历史记录值等。

Process-Book是PI的前端客户端程序,类似于控制层的上位监控系统。在管理层利用它可以再现工厂车间实时的生产运行情况。Process-Book是一个C-S结构的软件,运行和配置有不便之处,目前国内有第三方软件公司开发的基于PI的B-S架构的系统。

2 软件开发接口介绍

PI提供PI-API和PI-SDK两种类型的软件开发接口。PI-API是PI系统通用编程接口的例行程序库,该程序库可运行在各种硬件平台上,PI系统的应用程序如PI-ProcessBook,PI-DataLink,PI-ProFile等都是利用PI-API和数据库Server进行通信的。用户自己也可以利用PI-API开发自己的应用程序读写PI数据,前提是必须购买适用操作系统平台的API版本,PI-API大约有100多个不同功能的函数。而PI-SDK是用于访问PI Server的软件工具包,该工具包运行在Windows平台,可以访问所有平台的Server。PI-SDK基于微软COM技术,能够被大多数Win32软件开发环境引用,如VB,VC,和C#.Net等。下面仅介绍一下C#.Net环境下PI-SDK软件开发包的使用。

首先欲基于PI-SDK开发PI数据库,必须先安装PI-SDK,然后在Visual Stdio中新建一个项目,添加引用:PI-SDK 1.2 Type Library和PISDKCommon 1.2 Type Library,并且使用PISDK,PISDKCommon,PITimeServer命名空间。

读取PI Snapshot值的程序段如下:

Server piSvr=new PISDK. PISDKClass ().Servers.DefauhServer://PIServer对象 public PIPoint pt;//声明PI测点对象 public PlValue pv;//声明PI测点值对象 decimal as_piValue;//存储取得的PI值,此例设置一十进制数变量 piSvr.Open(”localhost”);//打开PI连接,引号内可以是Server所在主机的IP,//此时可以检测piSvr的Connected属性来判断连接是否成功:if(piSvr Connected)····-· pt=piSvr.PIPoints[“test”];肌比处test为所要取值的PI数据库内的测点名 pv=pt.Data.Snapshot;//获取测点快照的实时值 as_piValue=Convert.ToDecimal(pv.Value);//转换为十进制值 ……//相关数据处理程序 piSvr.Close();//断开PI Server连接程序执行至此.就可以完成从PI数据库取值的任务了。

利用上述接口开发的天冠乙醇公司分时段用电量计量系统,根据一天不同时段中工业用电电费近四倍差价的情况,采集各生产分厂实时用电量,生成分时段用电量日报及月报,还利用Microsoft SQLServer Reportin Service产生分时段用电量与电费的百分比饼图,对企业节能减排、降耗起到了很好的监督考核作用。

3 结 语

作为业界知名的实时数据库,PI可以运行在多个主流系统平台上,性能稳定,应用接口全面。支持OPC,ODBC,OLEDB等标准接口,而且提供了API、SDK等丰富的开发接口和运行信息,便于用户进行二次应用开发。

天冠燃料乙醇有限公司基于PI的生产管理信息系统,将全公司十多个分厂工艺流程画面、两万多点生产实时数据同步展现给各级生产管理人员,为全局生产调度提供最直接的信息支撑;同时基于PI接口组件的数采软件义将相关数据采集进关系数据库,生成各种生产信息及统计、分析报表,为企业生产管理和决策提供依据。系统运行四年多时间,运行稳定,收到了良好的经济效益。

图片和内容源自网络分享,若有侵权,请联系删除!

上海艾磊科技有限公司专门为企业提供IT咨询,IT外包,系统集成,以及各类IT增值服务。其中增值服务包括OFFICE 365云服务,鼎捷企业ERP管理软件,云备份,企业邮箱,无线覆盖,上网行为管理,VPN架设,网络安全服务,INTERNET接入,设备租赁, IP电话服务

本机连接opc server有部分数据不刷新_实时数据库PI在企业MES系统中的应用相关推荐

  1. Utgard连接OPC Server常见故障码及解决方案

    Utgart连接OPC Server常见故障码 0x00000005 用户名或密码错误,检查一下登录OPC Server的用户名和密码是否和配置的参数是否相同 1.打开注册列表 选择HKEY_CLAS ...

  2. C#连接OPC server失败,报错80040154 没有注册类

    问题描述: 在64位系统下连接OPC Server失败,提示错误: 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原 ...

  3. 使用博图V15和KEPServerEX6软件进行OPC Server读取PLC数据仿真(对PLC数据采集和边缘计算程序测试的准备)

    做这个仿真的目的主要是为后面对获取到的PLC数据编写或调试边缘计算编程进行铺垫 仿真OPC Server通过Siemens TCP/IP Ethernet协议与西门子PLC进行通信,获取PLC的数据 ...

  4. python入门23 pymssql模块(python连接sql server增删改数据 )

    增删改数据必须connect.commit()才会生效 回滚函数 connect.rollback() 连接数据库 ''' dinghanhua sql server增删改 '''import pym ...

  5. C#连接SQL Server并查询数据

    用C#连接本地SQL Server 查询信息 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  6. accdb原有的数据怎么清除_升级ios12之后,苹果手机系统内存占用过高怎么办?...

    之前有不少苹果手机都升级到了最新的ios12.1系统,但是,升级ios12.1之后,一些用户在查看iPhone存储空间的数据时发现,系统占用的内容非常高,有的10几GB,苹果手机系统内存占用过高怎么办 ...

  7. ssm插入数据时候栈溢出_程序员算法与数据结构基础中的基础,栈与递归

    在此之前,我们介绍了动态规划.深度优先搜索等基础算法,但是,有部分好友评论说,难度太难了,我们知道动态规划的自顶向下跟深度优先搜索一般都用递归实现,今天我们就先来讲讲算法与数据结构中,基础中的基础递归 ...

  8. python 数据逐个验证_案例实战 | Python 实现 AB 测试中常见的分层抽样与假设检验 (附代码和数据集)...

    在这里插入图片描述 作者 l 萝卜 本文会将原理知识穿插于代码段中,相关代码和数据集可在公众号 " 数据分析与商业实践 " 后台回复 " AB测试 " 获取. ...

  9. python用表格中的数据画柱状图_[python]统计excel表格某列中每项出现的次数并画柱状图...

    一.需求: 需要统计该列中每个院系的总数并画成柱状图 有三个这样的表格,需要统计这三个表格所有的每个院系的数量 二.步骤: 1.读xls文件 xls_file17 = xl.open_workbook ...

最新文章

  1. python 博弈论 库_SHAP:Python的可解释机器学习库
  2. 使用powershell一次性创建用户,OU及组
  3. 【loj#6220】sum
  4. 编写一个程序,计算|X-Y|的值,并将结果存入RESULT单元中,其中X和Y都为带符号字数据。
  5. 开放分布式追踪(OpenTracing)入门与 Jaeger 实现
  6. 华为机试HJ36:字符串加密
  7. html获取url后面的参数_【python量化】用Python获取基金历史净值数据
  8. 杭电ACM2046题
  9. J2Cache缓存的使用
  10. 世界各国网络域名后缀
  11. matlab实现jpg图片转gif
  12. 短信API接口组团出战,加速企业转型升级
  13. 麦吉尔大学计算机科学申请,加拿大麦吉尔大学计算机科学硕士成功案例分享
  14. 基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql)
  15. Elastic:配置 Elasticsearch 服务器 logs
  16. 笔记:三维重建大作业1-相机标定
  17. Python下载与安装,以及下载安装编辑器Geany且通过Geany编辑运行第一个程序Hello world.
  18. 【STM32】按键抖动及消除
  19. js动态加载div显示主菜单和子菜单+jquery获取动态id
  20. 用 Windows 的 diskpart 命令修复U盘

热门文章

  1. js控制文本框中的字符数
  2. HTML5将终结浏览器与应用程序间的争论
  3. Leetcode--229. 求众数Ⅱ
  4. Leetcode--33. 搜索旋转排序数组
  5. tomcat修改端口号与eclipse中的tomcat保持一致
  6. mfc oninitdialog 中的hwnd == null_在SOUI中使用动态多语言切换
  7. backlog配置_TCP/IP协议中backlog参数
  8. python画一条水平直线(matplotlib)
  9. PyMC3和Lasagne构建神经网络(ANN)和卷积神经网络(CNN)
  10. JavaSE——类集(下)(Set、Comparable、Collections、Comparator、Map)