我的PI 报表历程

从03年到06年,我一直是基于 PI datalink做报表系统。

DL是基于 EXCEL的,开发很简单,简单的报表,用起来,很流畅。就是直接在单元格计算。但是面对复杂的运算,就难以为继。这就算EXCLE 第一代探索吧。

公司开始尝试用别的报表系统来做 PI的业务报表。那时候,别的一个小组,使用了用友旗下的一个报表工具,模拟EXCEL的方法,在单元格做计算,并且把整个日统计或者月统计报表,以大二进制的方式,存储在oracle。结果失败了,项目拖延不说,客户后面的钱,直接不给了,甚至也是公司倒闭的原因之一。应该说这个,这个第三方报表 1.0 探索是失败的。

05年,又遇到一个大型的PI项目。于是我深入研究了VBA技术,写了一些很精妙的代码模块(宏),在各种业务报表中使用。这个时候,我对 DL在EXCLE 的开发,几乎达到一个顶峰。我不厌其烦的改进VBA代码,使用PI API访问数据库。 在这个阶段,DL 的使用有了很大的进步,DL的使用,已经可以为客户真正接受,可以处理一些简单的业务。 我把这个叫做 EXCEL 2.0 探索。

06年,我追随前同事的脚步,来到了第二个做PI的公司。在我接手PI之前,公司也进行了2代的探索。

其一 也是 EXCEL 2.0探索,应用在 发布平台上,后来我做了一点修订,使用至今,不过用的人不多。在电压合格率和公变管理也有应用。 后者的应用是失败的,面对复杂业务,运算速度慢,IE开发容易死机的事情经常发生。两任部门经理就倒在后面2个项目上了。

第三任部门经理上任了。恰好我公司的报表组同事也来了这个公司。他们进行了 第三方报表的2.0 探索。

他们利用后台,使用PI ODBC,把数据抽取到 ORACLE,再用 杰表3.0把数据展现出来。 业务逻辑是 后台实现的,报表只是展现工具。这个技术用在了 电压合格率的2.0版本上,达到了目的。

     作为一个专业的PI 人员,我对于把数据弄到ORACLE,再做报表,深感害羞。我们再次研究这个事情,终于实现了JAVA下对API的封装,用杰表4.0 直接把数据从PI里取了出来。 在公变2.0实现了这个突破。接着,线损管理和负荷分析也用了这个方法,客户表示满意。运算速度大为提高,系统部署大为简单。我们把这个叫做 第三方报表 3.0时探索。业务逻辑是在JAR包里实现的,算好之后,送到报表。但是开发的难度太大,调试困难。开发人员非常辛苦。我们又希望再突破一下。

      和杰表公司谈了两轮,但是他们的这个功能还不完善,于是我们选择了 较好的润乾。

      又是一轮自定义函数的封装,这次终于实现了在报表里的业务逻辑计算,并且开发难度大大降低了,调试也变得相对简单。然后就在 电压合格率和高压线路监测实现了。

     PI引入中国, 将近5年,历经EXCEL的2代探索,第三方报表的 四次探索,才初步实现企业级应用,其中艰辛,难以为外人道也。

posted on 2008-07-04 14:21 zljini 阅读(656) 评论(7) 编辑 收藏
评论
  • ZHG[未注册用户] Posted @ 2008-07-08 15:33
    你好,我们公司是主要做dcs的,我刚到公司,刚毕业。结果上个月底,公司要我做个PI的项目,那个项目已经作了很久了,以前作的工程师辞职了。现在让我做,我很着急。因为马上要去现场了!以前的人走之前把流程图画完了,我主要做报表,batch,可是我几乎不会,datalink只了解了基本内容。还有,流程图主要是参考dcs的画面画的,但是dcs画了100多张,可是PI只画了其中30张就完成了,为什么不全画呢。还有报表怎么做呢!我急得晚上都睡不着。  回复 引用   
  • ZHG[未注册用户] Posted @ 2008-07-11 10:57
    非常感谢你,不知道可不可以告诉我你得email。流程图方面我就是不明白那些必要,那些不必要画。没人指导下,呵呵!  回复 引用   
  • sourceoflife[未注册用户] Posted @ 2008-07-25 10:59
    开关量digital数据,写入PI中有误.
    用PI ProcessBook查看,写入1时显示?1,写入0时显示?????
    为什么呢?是我调用错误吗?
    pisn_putsnapshot(4588,NULL,1,NULL);
    pisn_putsnapshot(4588,NULL,0,NULL);

    请回复email好吗?
     回复 引用   
  • sourceoflife[未注册用户] Posted @ 2008-07-25 17:23
    不好意思,一开始可能没有说清楚,具体问题如下:

    PI中有两个点U1_SQB01和U1_SQB02,类型是digital
    points number分别是4588,4589
    我调用函数pisn_putsnapshot往pi中写值:
    pisn_putsnapshot(4588,NULL,0,NULL);
    pisn_putsnapshot(4589,NULL,1,NULL);
    结果,我用processbook创建了两个点(点工具栏上12.3),
    Tag分别设置为U1_SQB01和U1_SQB02,却分别显示??????和?1
    用自带的程序pipc\Bin\apisnap.exe查询结果第一个返回0,第二个返回Error Error

    请问是我调用函数的问题还是创点的问题啊?还是其他的问题啊,谢谢
     回复 引用   
  • 一直路过[未注册用户] Posted @ 2008-08-07 14:36
    类型digital你设置的是什么?  回复 引用   
  • fffffffffff[未注册用户] Posted @ 2008-08-13 14:21
    FineReport可以做到
    可以到他们网站看看: http://www.finereport.com
     回复 引用   
  • Jayden[未注册用户] Posted @ 2009-05-31 11:14
    您好!我现在在做电厂的报表系统,也是从PI数据库读取数据!现在正处于开发起步阶段,但由于数据繁多,对于数据的存储,我一直找不到比较有效的方式,您能否给指点一下?谢谢!  回复 引用   

统计