您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页在RSView32组态软件中实现周期性报表自动生成

在RSView32组态软件中实现周期性报表自动生成

来源:爱go旅游网
石油天然气学报2012年8月第34卷第8期 ・358・ Journal of Oil and Gas Technology Aug.2012 Vo1.34 No.8 在RSView32组态软件中实现周期性 报表自动生成 杨文J Il,贾瑜华 (中国石道学院,河北廊坊065000) 王 磊 (中国石油天然气管道局国际事业部市场开发部,河北廊坊065000) [摘要]主要介绍RSView32内嵌的VBA程序与Microsoft Office组件相结合,实现监控系统的周期性生 产记录的自动生成,并通过具体事例讲解了RSView32的工程设置与命令及VBA部分编程技巧等。 [关键词]RSView32;VBA;Excel;Access;报表;历史数据库;监控与数据采集系统 [中图分类号]TE978 [文献标识码]A [文章编号]1000—9752(2012)08—0358—03 在国内油气长输管道SCADA(监控与数据采集)系统中,Rockwell公司旗下的AB PLC产品被广 泛使用,而Rockwell公司的上位组态软件RSView 32,被誉为与AB PLC产品结合最好的人机界面交 互软件,也得到普遍应用。但与其他组态软件相类似,RSView32软件也没有绑定专业数据库,导致其 在处理历史数据和报表生成方面比较弱。 在实际应用中,经常需要调用历史数据或生成比较复杂的报表,通常实现的途径主要有两种,一是 脱离专业组态软件,利用高级语言编写人机界面系统(HMI),再结合数据库编程,可以快速方便 地实现历史数据库和复杂报表功能,但其HMI系统的稳定性和可靠性往往不被工程单位认可;另一种 方法是以专业组态软件为主,利用组态软件内嵌的寄宿程序,如:RSView32内嵌的VBA(Visual Basic for Application),Wincc内嵌的VBS(Visual Basic Script),再结合外部数据库(如:Microsoft Office Access、Microsoft SQL Server等),就可以实现调用历史数据或生成比较复杂报表的功能,这样 也保证了HMI系统的稳定和高效。 ‘ 笔者主要解决的问题是,如何实现周期性生产报表的定点自动生成,即:在T业控制中,需要保存 周期性的生产数据记录,在新的生产周期开始前,常常是在交时,需要将上一周期的生产记录自动 保存,防止交人员丢失关键生产和计量数据。下面结合实例(每天早上8:00交时,将此前 24h的整点生产记录以Excel报表文件格式自动生成和存盘),利用RSView 32组态软件和其内嵌的 VBA程序、Microsoft 0ffice套装组件中的Excel软件和Access数据库,探讨具体实现方法。 1 RSView32工程设置 RSView32组态软件编程功能强大,设置内容繁多,这里只阐述实现定点自动处理的必要相关设置 和命令。 1.1数据记录设置 1)ODBC数据源设置 ODBC数据源属于常规设置,不再赘述。需要注意的是,生成的DSN数据 源的默认保存路径是在系统盘上,开发人员最好改在自己的工程目录下,否则现场调试时无法调用,需 要重新设置ODBC数据源。 2)记录触发设置记录触发必须选择“要求”触发选项。具体设置在事件文件中,见1.2.1数据 [收稿日期]2012—05—06 [作者简介]杨文川(1970一)。男,2009年河北工程学院毕业,讲师,主要从事油气储运和自动化教学科研。 ・36O・ cursortype 1 石油天然气学报*油气管道工程与设备 2012年8月 ・.1ocktype:3 Source:gddel open .・End With 说明:在实际工业生产作业中,RSView32组态监控系统因各种原因的启停将导致启停时间点的数 据自动记录到数据库中,所以需要将这些非所需数据删除。 2.2交的时间函数设置 Dim objaccess As Object Dim gd As String Set objaccess—CreateObject(“adodb.recordset”) With objaccess open FloatTable .activeconnection一“provider—microsoft.jet.oledb.4.0;data source=”&gProject.Path 8L“/vba/数据库名.mdb” .cursor1ocation=3 cursortype=1 ..1ocktype一3 Source—gd open .・End With gd=“select*from FloatTable where datediff(‘h’,DateAndTime,date())<一15 order by DateAndTime” 说明:VBA自带的时间函数不多,datediff函数可以实现大多需求。实例是提取前一天上午9:O0 至当天上午8:0O间的24h整点记录,在2d的时间跨度内提取数据,所以选用h为参数,datediff (‘h’,DateAndTime,date())<一15,表示从当天0:00往回推15h,即为前一天9:00整开始采 集。如果是需要提取前一工作日的24h的整点数据,那么选用d为参数,datediff(‘d’,DateAnd— Time,date())<一1即可。 2.3实现报表的自动命名和存盘 Dim ai As String ai=Format(Now,“YYYY—mm-dd hh—mm“) With obj Exce1.Workbooks(“book1”) .saveas“d:/userdata/’’&ai&“.xls” cstr(val(ai))&“.xls” End With 说明:每天的整点记录将以的Exce.1文件格式自动存盘,其保存路径为D盘下的userdata文件 夹,其文件名为报表生成时的计算机系统时间,如:2010—12—30 08—01.xls。 3结 语 笔者探讨的周期性整点报表,不用人工操作,完全由计算机自动生成。如果想人为查看某时间段内 的历史数据报表,可以在HMI上设置选项,编程大同小异。总之,利用RSView32内嵌的VBA程序, 结合Excel报表和Access数据库,可以实现各类复杂报表功能。 [编辑] 萧雨 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务