CA168首页 > 自动化新闻 > 独家原创 > 新闻详情

组态软件中的鸡肋——报表

发布日期:2012-09-05 浏览次数:69941 来源:《PLC&FA》 作者:剑思庭
  为什么说报表是组态软件中的鸡肋呢?其实这个源于报表变化无穷的用户需求,因为对于每个公司或者工厂以及业主来说,都有自己不同风格和样式的报表。而不同的组态软件厂商面对这样应用的时候变得很头疼,所以索性就放弃报表组件功能,而让用户选择第三方的报表软件,如intouch、ifix、citect、FTView SE等都不支持报表,只有wincc仅能支持简单的报表功能。反观国内组态软件都带有报表功能,但也是不能满足国内用户的需求,很多的技术支持都把精力放在支持报表功能上,而且国内的组态软件也并不是自行开发报表功能,更多是采用通用报表组件比如CELL组件。
  作为第三方的报表软件,现在也是十分成熟的,像水晶报表、梦报表等,这些都是适用于工业自动化的报表,但是这种报表有一个通用的的问题:第一是价格太高,第二是报表数据库不统一。一般来说成熟的第三方报表软件根据页面收费,一般一个项目都需要几万的费用,这不是中国客户能够接受的,有一些中国客户冒着风险使用不稳定的盗版报表软件,这样对自己和对客户都不是负责任的表现。另外数据库不统一也是问题所在,因为这些成熟报表软件多数采用OPC DA接口采集组态软件的实时数据,根据客户定义时间间隔来存储所需要的数据,这样就造成了组态软件中存储历史数据和报表数据库中时间不对应。当客户根据某些时刻分析故障,就会发现历史趋势中某一刻数据和报表中这个时刻不同,这样就造成了用户无法分析故障。还有大量客户退而求其次选择组态软件的脚本+excel来做报表,但这也有个比较痛苦的问题,第一个就是需要写大量代码来完成excel对象操作和组态软件历史数据库操作;第二个就是excel生成报表不能嵌入到组态软件中显示,只能背景打印和存储。基于此,现在客户也是对于报表无从下手。
  有没有一种这样的报表产品,能够以组态软件数据库为报表历史库,无需复杂的脚本控制,价格低廉的报表软件呢?高兴的是我们看到了国内一些具有民族自主知识产权的厂商已经开发了我们所希望的这款产品。福泽科技刚刚开发了一款报表软件,我们能够看到这款软件分为两部分,第一部分就是常规的数据采集部分,他的采集器分为两种,一种是通过OPC形式把组态软件实时数据定时存储,另一种就是可以同步wincc、intouch、Ifix、FTViewSE的历史库。第二种方式很有杀伤力,一般报表软件多数采用OPC或者低级dde数据采集然后数据存储,这样会造成报表库的数据和组态软件的历史库数据在某一时间点上不一样,但是它解决了这个问题,它是同步组态软件的历史数据保证数据统一性。这款软件也没有脱离其他报表软件的俗套,同样选取了SQL server来做报表数据库载体。也许这是一个较为成熟的存储方案,不过从数据获取技术角度来看开发者确实煞费苦心。再来看看模版设计,算是一个不错的设计理念,类似excel表格操作方式,最大的特点就是报表模版右侧有三个list控件,分别显示连接报表数据库的库名、数据库中有那些数据表、表中有多少报表变量是有效的。这样设计很有特点,常规报表工具都是需要用户自己记录变量名字,并设计摆放位置。开发者在设计连接数据库的形式上采用OLEDB的弹出对话框形式,可以让用户选用SQL server然后选取库体并写入用户名和密码,通过测试以后刚才三个列表就会出现库名、表名、变量名。通常报表都是要自己编写odbc的DSN连接字或者自己写OLEDB的连接串,这样的报表数据库连接是比较人性化和严谨的。
  通过报表模版设计后就要进入脚本开发了,我发现模版设计就是设计静态模版样式,没有任何地方写公式或者查询公式,但进入脚本开发环境我发现玄机在此,亮点也是在这里:此款脚本竟然支持VBS脚本!多数报表软件的脚本只是支持简单四则运算、最大值、最小值、平均值和SQL查询,这款软件更像excel支持VBA的形式,也能看得出来开发者借鉴了excel做报表的设计理念,对于表格的动态数据和运算以及从数据库获取都是通过VBS脚本来操作,它封装了几个对象:1.FthDB是报表数据库的对象,它能够支持OLEDB的字符串的连接和SQL查询语法;2.FthRPT是报表模版对象,他能够支持使用cellwrite和cellread两个方法对报表模版进行读写;3.data数组对象,它是SQL查询后返回的结果记录集,以类型为string二维数组形式存在。但在编写脚本时也发现一些问题,就是返回来的记录集是字符串形式,如果需要计算或者求最大值、最小值和平均值,需要在脚本上使用类型转换成real型再计算。这一点不是很方便,但是也可以理解开发者这样处理的行为,因为返回数据类型并不知道是什么类型,只能采用String这种通用类型。有一点很爽,就是想怎么计算就可以怎么计算了,完全符合VBS语法以及支持VBS全部函数,就连msgbox和inputbox都能够支持,真算是很强大了。此款软件包含一个runtime的环境,可以运行测试报表模版和报表脚本是否正确显示,并可以支持打印和导出为csv、xls形式,因为VBS语言属于解释性语言,没有编译功能,只能通过runtime运行一下才能看出来模版设计和动态数据的显示效果,但这个runtime其实只是一个测试工具,真正的运行组件是一个叫fthrpt-share.ocx控件,它才是真正地运行内核,可以支持嵌入到任何组态软件中,通过属性设置报表模板路径和报表脚本路径,然后再调用方法run就可以在组态软件运行当中看到你想要的报表,并可以通过调用方法printout和printpreview来实现报表打印和预览,也可以通过调用方法export来把运行的报表数据导出为csv、xls形式存储。
(本内容观点只代表作者看法,仅供参考)
[新闻搜索] [] [告诉好友] [打印本文] [关闭窗口] [返回顶部]
0条 [查看全部]  网友评论

视觉焦点