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

fb3bebeadc98759fb17a9add01969ade.gif

实时数据库是计算机控制系统和上层生产管理系统数据存储和展示的核心。结合河南天冠燃料乙醇有限公司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所示。

f9ecb230fb8b9453cb9bf9bf46282306.png

图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电话服务

c70130c28eb9a86f6e0eb0f0b0e6edbf.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 数组赋值_自学JAVA每日记录(10)-欢迎指点欢迎共勉

接上一篇编程练习:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组要求:1、 要求通过定义带参带返回值的方法来实现2、 通过参数传入数组的长度(例…

java异常处理机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识,尽量简单,一些细枝末节的知识不会讲述,但不影响对知识的掌握。(比如try-catch可以嵌套,不太会这么用)1.什么是异常我们先举个例子int 在IDE里输入这样一个stat…

数组字典_VBA数组与字典解决方案第34讲:数组的传递

大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递。在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样:AB 把B值赋给ACA 把A值赋…

为什么代码正确却没有爬虫的信息_为什么敷面膜没有效果?原来这才是敷面膜的正确步骤...

七夕泥萌都去哪浪了?是不是化个美美的妆,然后出门吃吃吃逛逛逛?说到出门前化妆,很多小仙女会在化妆前敷面膜,让皮肤保持一个好状态,壹知肤护肤研究中心贺老师(sunny老师)提到其实这是…

合并 多个dataframe_什么是Pandas的DataFrame?

1. 什么是DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索…

web td不对齐_珍稀干货!阿里 Web 音视频开发趟坑指南

作者 | 阿里文娱前端技术专家 归影责编 | 夕颜出品 | CSDN(ID:CSDNnews)这不是一篇基于MSE开发Web播放器的入门文章,而是围绕Web播放器开发遇到的常见问题与解决方案,毕竟入门文章常有而趟坑干货不常有。如果您有Web播放开发经验和音视频技术基础&#x…

subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?

redis的基本操作指令就不多说了,今天对redis的进阶操作给大家介绍一下,以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用?相信大家读了本篇对redis的整体会有更深的认知。一、Pipelin模式介绍1、redis的通常使用方式大多数…

子窗体 记录选择_如何设计一个简单的Access登录窗体(1)

Access是一个对数据库新手相当友好的软件。Access的窗体功能确实是一种独一无二的前端设计平台,很多常见的人机交互用法,可以用Access的窗体来轻松实现,同时Access的查询和计算功能,也需要窗体的配合才能获得最佳的表达效果。 一、…

网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想

导读:对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程。为什么顺序执行程序就不行了呢?非要使用异步回…

静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!

引言近期和学弟交流了一下找实习的相关的话题,谈到了简历这块。虽然近期没有找工作的打算,但还是会不定期的更新自己的简历。于是将自己的简历分享了一下,没想到得到了这样的评价,心里还是挺高兴的。简历的形式是一个在线的静态网…

为什么不可以使用哈曼顿距离_K-means真的不能使用曼哈顿距离吗?

问题说到k-means聚类算法,想必大家已经对它很熟悉了,它是基于距离计算的经典无监督算法,但是有一次在我接受面试时,面试官问了我一个问题:“k-means为什么不能使用曼哈顿距离计算,而使用欧式距离进行计算&a…

linux 查看进程_Linux怎么查看和监控每个进程的实时流量

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号**“智传网优”**直接开始自助**视频学习**1. 前言NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率。来自NetH…

mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...

1,mysql5.6是密码为空直接进入数据库的,但是mysql5.7就需要初始密码cat /var/log/mysqld.log | grep password或者:grep temporary password /var/log/mysqld.lo2,然后执行 mysql -uroot -p,输入上面的到的密码进入&am…

linux复制文件夹到另一个目录_Linux|一个命令行统计给定目录中有多少个子目录,学浪计划...

wc命令用于统计指定文件的字节数、字数、行数、并将统计结果显示出来。一般格式: wc [选项] [文件]选项:-c,--bytes 统计字节数-l,--lines 统计行数-w,--words 统计字数ls命令-l 以长格式显示文本的详细信息。-R 表示递…

mysql源码安装分析_MySQL源码分析(0):编译安装及调试(转)

编译安装为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。首先我们介绍如何从源代码部署一台MySQL服务器。1.下载MySQL Community Server源码…

前端做后台管理系统有前途吗_关于后台管理系统前端项目的思考

开发后台管理系统是大部分前端开发人员接触过的项目,如何更好的进行项目的搭建、组件的开发、数据结构的设计等等,这些都是需要考虑的问题。以下是我结合一些项目的经历和其他大佬的项目代码与技术分享,做出了对于后台管理系统中前端项目的思…

响应式编程优点 有效_什么是响应式编程?

响应式编程是一种通过异步和数据流来构建事物关系的编程模型。这里每个词都很重要,“事物的关系”是响应式编程的核心理念,“数据流”和“异步”是实现这个核心理念的关键。为了帮助大家理解这个概念,我们不妨以APP初始化业务为例来拆解一下这…

虚拟跳线软件干什么用的_视频教程:用 ESI 的虚拟跳线给你的声音添加效果

本视频讲述了如何在互联网上给你的声音添加效果。你可以使用任何想用的效果器,而且不仅可以输入你的声音,输入信号还可以是任何乐器音源,例如键盘或吉他,你甚至可以直播你的整个工程。请先看视频:视频中使用Bitwig给声…

极光推送java demo_极光推送- 3 分钟 Demo - 极光文档

3 分钟快速使用 JPush Android Demo本文目的在于,指导新接触极光推送的开发者,在短短几分钟时间内把极光推送跑起来:安装 Demo 客户端到手机在 Portal 上推送通知客户端收到推送并显示在状态栏创建极光推送开发者帐号Portal 上创建应用使用注…

java ldap添加用户名密码_java ldap用户密码md5加密

在这里不过多介绍ldap,因为这样的文章特别多,这里就简单直接的记录这一个问题。在springboot中通过引入spring-boot-starter-data-ldap,使用LdapTemplate真的挺方便,现在遇到一个问题,添加用户时,userPassw…