调用API步骤VB6:
VB6代码示例:其中pilog为返回值,各个含义可以查PIAPI帮助,举例如下:
>0
System Error
0
Success
-1
Attempt to reconnect within 60 seconds or socket_open has failed
-994
Incompatible PINET protocol version
-1001
Default host not found
VB6函数声明:
'Use this function to establish a connection to the default pi home node server if calling from a pi client node.
Private Declare Function piut_connect Lib "piapi32.dll" (ByVal servername$) As Long
'This function logs the user into a PI Server. A login is required to gain access to protected PI data.
Private Declare Function piut_login Lib "piapi32.dll" (ByVal username$, ByVal password$, valid&) As Long
'This function parses the passed time string and returns the pi local time.
Private Declare Function pitm_parsetime Lib "piapi32.dll" (ByVal timestr$, ByVal reltime&, timedate&) As Long
'This function adds a new value to the Archive, or it replaces a value if one exists at the same time stamp.
Private Declare Function piar_putvalue Lib "piapi32.dll" (ByVal pt&, ByVal rval!, ByVal iStat&, ByVal timedate&, ByVal wait&) As Long
'This function returns the point number for the given tagname.
Private Declare Function pipt_findpoint Lib "piapi32.dll" (ByVal TagName$, pt&) As Long
'This function returns a single value and status for a specified time stamp.
Private Declare Function piar_value Lib "piapi32.dll" (ByVal pt&, timedate&, ByVal Mode&, rval!, iStat&) As Long
'This function sends a value to the Snapshot and Archive.
Private Declare Function pisn_putsnapshot Lib "piapi32.dll" (ByVal pt&, ByVal rval!, ByVal iStat&, ByVal timedate&) As Long
'This function retrieves the most recent value sent to the pi System for a particular point.
Private Declare Function pisn_getsnapshot Lib "piapi32.dll" (ByVal pt&, rval!, iStat&, timedate&) As Long
编程步骤:用其他语言编写接口可参考下面的步骤来实施,具体语法及API函数声明根据所用的语言来编写。某些语言的声明可在API帮助里到。
1.连接服务器
pilog = piut_connect(Text1.Text)
2.登陆
    pilog = piut_login(Text2.Text, Text3.Text, valid)
3.读取PI位号值
    3.1 查PI位号PT号,PT号就是该位号在PI里面的point ID
        pilog = pipt_findpoint(Text4.Text, pt)
    3.2 获取PI时间
        pilog = pitm_parsetime("*", 0, timedate)
    3.3 读取该PI时间,该位号的值
        pilog = pisn_getsnapshot(pt, flo, 0, timedate)
        Text5.Text = flo  ‘(flo变量就是PI的值)
4.写入PI位号值
    4.1 查PI位号PT号
        pilog = 百度api接口pipt_findpoint(Text4.Text, pt)
    4.2 获取PI时间
        pilog = pitm_parsetime("*", 0, timedate)
    4.3 写入该位号在该PI时间的值
        pilog = pisn_putsnapshot(pt, flo, 0, timedate)
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数据库写数据。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。