从事PI几年,以自己的经历谈谈PI的入门和进阶,个人一家之言,仅供参考
1、从PROCESSBOOK开始,这是通常的入门第一课,画些图,作些曲线,如果没有专门的测点,可以使用PI提供的几个测点如SUNUSOID等,要点:值图、趋势图、多状态
2、作报表,用DATALINK作些报表,要点:分清出在哪个场合下用哪些公式,内插值、历史值、存档值等概念
3、熟悉了以上两个产品后,在好好看看PI的有关资料,对于大多数第一次接触实时数据库的人来说,都想了解实时数据库和关系数据库的区别,所以要特别了解实时数据库的概念、PI组成模块,具体螺旋门算法和压缩算法不必太了解,只要知道有这么回事就行了。要点:PI组成模块,实时数据库
4、如果讨厌用命令行的方式,那就用PI的SMT,对PI系统进行些管理和设置(测试机上练习,不要拿客户的服务器作试验)
5、试着新建些测点,了解测点的基本属性,要点:测点名、类型、描述
6、试着用下ACTIVEVIEW,在网页上发布PDI;要点:网页知识
7、可以参考写个简单的接口,不要非VC、VB的,哪个顺手用哪个,这时要多参考PI API和PI SDK文档
8、标准化接口,完善接口,不断调试,这时需要熟悉PI测点的高级属性,属性API或SDK的高级应用
9、试着用VBA进行PROCESSBOOK和DATALINK的功能扩展,用下MDB(个人认为MDB这东西一点没用,就是个XML而已,且占用许可点)等东东,要点:VBA、MDB
10、离开PI,对你来说,如果到了这个阶段,你不想做过PI的专家,应该离开PI了,这东西不过这么回事,你更需要关注业务,关注应用
利用其提供的api函数进行其数据读取:
定义基本数据类型结构:
type
int32=integer;
TDynamicInt32Array = array of int32;
TDynamicSingleArray = array of Single;
TDynamicCharArray=array of char;
PI_API主要有下面这几种类:
Archive Functions
Archive Functions provide a means of examining and modifying values in the PI Data Archive database. The PI-API contains the following Archive Functions:
主要是为了检测和修改历史TAG点的数据。
在piapi中以piar_开头
包括如下:
piar_calulation Retrieve evenly spaced events based on calculation expressions
通过表达式获取数据。
piar_compvalues Retrieve compressed Archive data
获取压缩后历史数据
piar_deletevalue Retrieve filtered, compressed Archive data
获取经过过滤压缩后历史数据
piar_intervalues Retrieve sampled (evenly spaced) Archive data
得到样本(均匀的间隔)历史数据,获取某控制点某时刻的数据主要用这个! 此函数返回的数据至少为2笔,第一笔为你指定的时间,第二笔如果没有指定时间,刚返回TAG点最后一笔数据!
piar_intervaluesfil Retrieve filtered, sampled (evenly spaced) Archive data
得到样本过滤后的(均匀的间隔)历史数据
piar_panvalues Retrieve the time of an event a specified number of events from a reference time
piar_plotvalues Retrieve Archive data appropriate for plotting
piar_putvalue Put a value in the archive
piar_replacevalue Replace an existing value in the Archive
piar_summary Return a calculated Archive value: total, minimum, maximum, stdev, range, mean, or average
piar_timedvalues Retrieve Archive data for specified times
piar_timedvaluesfil Retrieve filtered Archive data for specified times
piar_timefilter Return the amount of time an expression was true
piar_value Retrieve an Archive value for a specific time