我的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 杭州在左边 阅读(100) 评论(8)  编辑 收藏
评论
  • ZHG [未注册用户]
    Posted @ 2008-07-08 15:33
    你好,我们公司是主要做dcs的,我刚到公司,刚毕业。结果上个月底,公司要我做个PI的项目,那个项目已经作了很久了,以前作的工程师辞职了。现在让我做,我很着急。因为马上要去现场了!以前的人走之前把流程图画完了,我主要做报表,batch,可是我几乎不会,datalink只了解了基本内容。还有,流程图主要是参考dcs的画面画的,但是dcs画了100多张,可是PI只画了其中30张就完成了,为什么不全画呢。还有报表怎么做呢!我急得晚上都睡不着。   回复  引用    
  • #2楼 
    杭州在左边1 [未注册用户]
    Posted @ 2008-07-10 16:24
    画图 应该不难吧 都这么过来的 如果没有画全 有必要的话 你就继续画 没必要 就不画了 Batch比较复杂一点 DataLink 应该还好说的吧 有具体问题 可以给我写邮件 能帮我就帮一点了   回复  引用    
  • #3楼 
    ZHG [未注册用户]
    Posted @ 2008-07-11 10:57
    非常感谢你,不知道可不可以告诉我你得email。流程图方面我就是不明白那些必要,那些不必要画。没人指导下,呵呵!   回复  引用    
  • #4楼 
    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好吗?   回复  引用    
  • #5楼 [楼主]
    杭州在左边      
    Posted @ 2008-07-25 17:09
    不是很明白你的意思

    只能提2个建议

    1. 再看看你的写的代码

    格式应该是

    int32 pisn_putsnapshot(

    int32 pt

    float rval,

    int32 istat,

    int32 timedate );

    2. 检查你的api的版本,

    10-Oct-02 MF> Bug Fix: use pisn_sendexception <<3.10.11>>
    instead of pisn_putsnapshot for writing
    BAD INPUT, BAD OUTPUT, I/O TIMEOUT
    The consequence was that sendexception was not
    aware of the digital states sent previously,
    and, at certain situations, i/f did not
    send the next data (data that had not
    passed the exception) to PI.

      回复  引用  查看    
  • #6楼 
    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

    请问是我调用函数的问题还是创点的问题啊?还是其他的问题啊,谢谢
      回复  引用    
  • #7楼 
    一直路过 [未注册用户]
    Posted @ 2008-08-07 14:36
    类型digital你设置的是什么?   回复  引用    
  • #8楼 
    fffffffffff [未注册用户]
    Posted @ 2008-08-13 14:21
    FineReport可以做到
    可以到他们网站看看: http://www.finereport.com   回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:
 




统计