PI实时数据库接口技术的应用


 

卢 化1 范海东2

(1、浙江省电力试验研究所;2、台州发电厂)

 

摘要:本文主要针对PI实时数据库的接口,介绍了基于OPC规范和基于PI-API两种不同的接口技术,并对接口系统配置过程中的重点内容进行了阐述。

关键词:SIS PI  OPC  API 接口

 

1 引言

随着电厂信息化要求越来越高,SIS系统的建设逐渐走上历史舞台,很多电厂开始着手搭建自己的SIS网,而SIS的核心部分就是实时数据库系统。说到实时数据库系统,目前的产品有很多,PI是其中重要的一员,由于它先进的旋转门压缩数据技术、加上运行稳定的特点,尽管价格高昂,它还是在国内拥有很大的市场占有率。

SIS系统的另一重要组成部分是实时数据库系统与现场设备之间的接口,衡量一个实时数据库系统的优劣,其接口系统是否具有开放性、灵活性和方便性是很重要的一方面。在这点上,PI也具备了一流实时数据库系统应该具备的特点,它提供了对OPC、ODBC以及OLE DB的支持,另外,它还有C/C++、VB环境下的SDK开发工具包和PI-API接口函数库,利用PI-API和SDK,我们可以比较方便地开发我们自己的专用接口。

在台州发电厂的SIS项目实施过程中,我们用API开发了几个专业接口(如RTU系统的接口、电量统计系统的接口等),也利用了PI的OPC接口,完成了全电厂范围的数据采集,为今后SIS系统的进一步开发打好了基础。以下就对OPC接口的应用和API接口函数的应用做一些介绍。

2 OPC接口的应用

OSI专门为PI开发了能支持OPC 2.0规范的接口程序OPCINT,OPCINT是DOS环境下运行的程序,一般通过编辑并运行OPCINT.BAT来启动。配置PI的OPC接口需做两件事,一是配置OPCINT.BAT,使接口OPCINT既能从OPC SERVER取到数据,又能根据PI的需要将数据提交出去;二是在PI SERVER端配置点及相关属性。在运行OPCINT之前,需安装PI-API,安装后,在\\PIPC\目录下会生成一些有用的文件供OPCINT调用。

在配置OPCINT.BAT时,重点注意以下项的配置:

/ps=

定义数据源,可以用任意字母及组合表示。一个PI数据库可以有多个OPC接口,我们可以用此项来区分这些接口。

/id=

定义数据标记,可以用任意数字表示。

/TF=

定义表示时间的格式,一般用"ccyy/mn/dd hh:mm:ss.000" 格式。

/SERVER=

指定OPC SERVER的服务名,用HOSTNAME::SERVERNAME表示。如果OPC SERVER和OPCINT在同台机上,只需定义SERVERNAME即可。

/host=

指定PI服务器的IP地址及端口号,端口号一般用5450,用IPARRESS:5450 表示。

/f=

定义数据刷新周期,用“时:分:秒”表示,可以定义多个,到底哪个起作用由PI数据库中点的属性LOCATION 4决定。例如

/f=00:00:01 ^

/f=00:00:03 ^

/f=00:00:05 ^

/f=00:00:10

定义了4个不同的刷新周期,当PI数据库中点tag1的LOCATION4属性等于2时,刷新周期就定成了3秒。

在配置PI的点及相关属性时,重点注意以下属性的配置:

TAGNAME:标签名。

当其它应用程序从PI数据库取数据时,用它来关联数据。比如用PROCESSBOOK组态画面时,点名就必须与PI中的TAGNAME一致。

INSTRUMENTTAG:设备标签名。

OPC SERVER提供数据给OPC接口程序时,每个数据都有点名,当我们用OPC CLIENT程序去查看这些数据时,一般会看到这些点名还包含分组信息。PI数据库中点的INSTRUMENTTAG属性必须与我们在OPC CLIENT中所看到的相应点名完全一致。

POINTSOURCE:点的数据源。

POINTSOURCE与OPCINT.BAT中定义的“/ps=”项相匹配。

LOCATION1:与OPCINT.BAT中定义的“/id=”项相匹配。每个接口所涉及的数据可以在逻辑上分成若干类,LOCATION1可以起到区分这些类的作用。

LOCATION3:一般是0或1,它与OPC SEVER的工作模式有关。当OPC SERVER端主动提供数据时,该属性应置为1,否则为0。

LOCATION4:决定数据刷新周期,与OPCINT.BAT中定义的“/f=”项相关。

其它属性较普通,根据常识去配置一般不会错。



3 API接口函数的应用

PI API提供一个公共的编程接口,用C/C++或VB、甚至连PI-PROCESSBOOK中内嵌的VBA都可以对PI系统进行数据读写。

用API开发PI的接口一般有两种方法。

一是用接口程序去控制一切与PI数据库有关的操作,这些操作包括建点和属性配置工作、数据读写工作等等,这样要用到PI-API和PI-SDK,对数据读写可以利用PI-API,建点和属性配置工作可以利用PI-SDK。这种方法用起来比较复杂,对编程要求很高,同时由于绕开了数据库管理员对数据的管理,对数据库的安全性也构成了影响。所以只有在特殊场合才用到这种方法。

二是借鉴OPC方式,接口程序只负责数据的读写,建点和属性配置工作放到PI服务器端由数据库管理员人工完成。这种方式下在配置PI的点及相关属性时,比OPC方式下的配置工作要简单得多:TAGNAME与INSTRUMENTTAG可取相同名,数据类型、量程、工程单位和死区范围等可按常识配置,其它属性都可用默认值。以下用VB为例说明PI API的大致用法。

在编程之前,先要安装OSI提供的PI-API,安装后会生成\\PIPC\LIBRARY\PIAPI32.DLL和\\PIPC\INCLUDE\PIAPI32.BAS两个文件。

然后在VB中引用上面所提的PIAPI32.BAS,将它作为一个公用模块。

准备工作完成后,就可按照以下步骤依次调用API函数,完成对PI数据库的写操作:

pilg_registerapp “piapi32.dll”

注册动态连接库,否则将不能调用下面的函数pilg_login。

pilg_login(登入PI的句柄,用户名,服务器名,密码,权限)

到指定的PI服务器中注册用户,以获取存取权限。

Pipt_findpoint(标签名,点号)

根据标签名获得点号,以后程序中对该标签的引用都用这个点号。

Pipt_pointtype(点号, 点类型)

根据点号获取该点的数据类型。

Pitm_parsetime(时间戳字符串,0,时间戳值)

将常用的时间字符串转换为在PI内部所用的时间值。

Piar_putvalue(点号,实型值,整型值,时间戳值)

对PI数据库进行写操作。

4 结束语

我们经过一段时间的开发应用,对PI的接口部分有了一定的认识。总的说来,OSI在PI的接口方面考虑得还比较周全,象OPC、OLEDB、ODBC这些常用的接口技术,它都支持,同时,用OSI提供的PI-API、PI-SDK开发的接口程序运行很稳定。另外,OPCINT所提供的运行状态信息也很丰富。

不足之处也发现几个:一是OPCINT居然还是DOS版的,在当今WIN2000、WIN XP横行的天下,OPCINT看上去太老了,它运行时提供的信息虽多,但翻看起来比较麻烦。二是OPCINT对中文字符串支持不够,一旦传送中文字符串,接口程序就会报错。不知OSI公司会不会推出新版的OPCINT,克服以上问题。


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值