基于RSView32组态软件生成站场的数据报表_第1页
基于RSView32组态软件生成站场的数据报表_第2页
基于RSView32组态软件生成站场的数据报表_第3页
基于RSView32组态软件生成站场的数据报表_第4页
基于RSView32组态软件生成站场的数据报表_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——基于RSView32组态软件生成站场的数据报表基于RSView32组态软件生成站场的数据报表

GeneratethestationdatareportbyRSView32configurationsoftware

[摘要]:

本文主要介绍利用工程组态软件RSView32内嵌的VBA程序与MicrosoftOffice组件相结合,以低廉的造价,高效稳定地实现输油气站场的历史数据报表的生成。并通过具体实例讲解了RSView32的命令设置、VBA定制EXECL报表、VBA调用ACCESS数据库及VBA实现报表自动生成等内容。[Abstract]:

ThepaperintroducesthecombinationofusingRSView32embeddedVBAlanguageandMicrosoftOfficemodule,whichgeneratetheoilandgasstationrecordsinlowcost,highefficiencyandstablymanner.Throughspecificexamples,explainRSView32projectset,theuseofvbatopreparetheEXECLstatement,tocalltheACCESSdatabase,togenerateautomaticllyproductionrecords,etc.

[关键字]:RSView32;VBA;Excel;Access;报表;历史数据库;

[Keywords]:RSView32;VBA;Excel;Access;Report;historicaldatabase

1、简介

在国内外的油气长输管道SCADA系统中,Rockwell公司旗下的ABPLC产品被广泛使用,而Rockwell公司的上位组态软件RSView32,被誉为与ABPLC产品结合最好的人机界面交互软件,也得到普遍应用。但与其它组态软件相类似,寻常,RSView32软件也没有绑定专业数据库,导致其在处理历史数据和报表生成方面比较弱。

在实际应用中,经常需要调用历史数据或生成比较繁杂的报表,寻常实现的途径主要有两种,一是脱离专业组态软件,利用高级语言独立编写人机界面系统

(HMI),再结合数据库编程,可以快速便利地实现历史数据库和繁杂报表功能,但其HMI系统的稳定性和可靠性往往不被工程单位认可;另一种方法是以专业组态软件为主,利用组态软件内嵌的寄宿程序,如:RSView32内嵌的VBA(VisualBasicForApplication),Wincc内嵌的VBS(VisualBasicScript),再结合外部数据库(如:MicrosoftOfficeAccess、MicrosoftSQLServer等),就可以实现调用历史数据或生成比较繁杂报表的功能,这样也保证了HMI系统的稳定和高效。

本文主要解决的问题是,如何实现周期性生产报表的定点自动生成,即:在工业控制中,需要保存周期性的生产数据记录,在新的生产周期开始前,往往是在交接班时,需要将上一周期的生产记录自动保存,防止交接班人员将关键生产和计量数据丢失。下面结合实例,探讨具体实现方法。

本案例具体要求为:每天早上8点交接班时,将此前24小时的整点生产记录以Excel报表文件格式自动生成和存盘。

编程环境:RSView32组态软件和其内嵌的VBA程序,MicrosoftOffice套装组件中的Excel办公软件和Access数据库。

主要工作:RSView32工程数据库设置、事件触发命令设置、项目启动设置等;VBA定制EXECL报表、VBA调用ACCESS数据库及VBA实现报表自动生成。

2、RSView32工程设置

RSView32组态软件编程功能强大,设置内容繁多,这里只阐述实现定点自动处理的必要相关设置和命令。

2.1设置数据记录(见图1数据设置记录)2.1.1ODBC数据源设置

ODBC数据源属于常规设置,不再赘述。需要注意的是,生成的DSN数据源的默认保存路径是在系统盘上,开发人员最好改在自己的工程目录下,否则现场调试时,无法调用,需要重新设置ODBC数据源。

2.1.2记录触发设置

记录触发必需选择“要求〞触发选项。具体设置在事件文件中,见2.2.1数据记录触发周期设置。

2.1.3标记在模式设置

标记在模式设置比较简单,直接从标记数据库中选择添加需要记录的标记即可。当数据记录设置完成后,工程项目路径下的VBA文件夹内将生成一个数据库文件*.mdb,该数据库文件包括三个数据库表格,即:标记表格TagTable、浮点表格FloatTable和字符串表格StringTable,在此项设置中添加的所有标记将自动写入以上表格。添加标记需要注意的是:排列好标记的添加次序,由于数据库表格中每一个标记自动生成的ID号是依据用户添加顺序决定的。

图1

2.2事件文件设置

2.2.1数据记录触发周期设置命令语句:DataLogSnapshotRSVIEW

命令描述:把指定模式的标记值记录到数据记录文件里

表达式:if((system\\Minute==0)&&(system\\Second==0))then1else0

说明:在且只在整点时,RSView32将数据记录的标记值写入指定的Access数据库的表格中。

2.2.2定点自动生成报表设置(见图2事件文件表达式)命令语句:VbaExecVBA程序名命令描述:执行VBA某个程序

表达式:if((system\\Hour==8)&&(system\\Minute==1)&&

数据记录设置

(system\\Second==0))then1else0

说明:每天上午8点01分交班时,RSView32将自动执行VBA程序。

图2

2.3项目启动设置

在项目启动设置中需要选择激活“数据记录〞和“事件文件〞选项。3、VBA程序编写

主要介绍三部分内容,即VBA如何定制EXECL报表格式、VBA如何调用RSView32生成的ACCESS数据库的三个表和VBA如何实现报表的自动生成。

3.1VBA如何定制EXECL报表格式

用VBA调用EXECL报表常用的方法有二个,一是可以在EXECL中定义具体样式,然后由VBA调用;二是在VBA中直接定义EXECL报表的各种属性,本文采用其次种方法。下面是实例的源代码:

DimobjExcelAsObject'创立EXECL对象

SetobjExcel=CreateObject(\'设置EXECL的属性WithobjExcel'显示EXCEL

.Application.Visible=True

事件文件命令表达式

'创立新的工作簿

.Application.Workbooks.Add'EXCEL生成报表后全屏显示.Application.WindowState=-4137'激活第一个工作表

.Worksheets(\'给表格加边框

.Range(\.Range(\'.Range(\'.Range(\'设置表格背景颜色

.Range(\'设置小数点位数

.Range(\'合并单元格

.Range(\.Range(\站场名称

.Range(\.Range(\.Range(\

'显示系统时间

.Range(\

.Range(\产生报表时间yyyy-mm-ddhh:mm:ss\.Range(\

.Range(\.Range(\.Range(\备注\.Range(\

.Range(\值班员\.Range(\白班\.Range(\夜班à\.Range(\负责人\

'定义列宽

.Columns(1).ColumnWidth=18.Columns(2).ColumnWidth=13.Columns(3).ColumnWidth=13.Columns(4).ColumnWidth=13.Columns(5).ColumnWidth=13.Columns(6).ColumnWidth=16.Columns(7).ColumnWidth=15.Columns(8).ColumnWidth=15'定义行的内容

.Rows(4).Font.Size=10.Rows(5).Font.Size=11

.cells(4,1).Value=\进站压力(Kpa)\.cells(4,2).Value=\进站温度()\.cells(4,3).Value=\出站压力(Kpa)\.cells(4,4).Value=\出站温度()\.cells(4,5).Value=\瞬时流量(Nm/h)\.cells(4,6).Value=\累积流量(m3)\.cells(4,7).Value=\累积流量(m)\.cells(30,6).Value=\站内累积流量(m3)\.cells(31,7).Value=\日累计流量(m3)\.cells(32,7).Value=\月累计流量(m3)\.cells(33,7).Value=\年累计流量(m3)\EndWith

3

3.2VBA如何调用RSView32生成的ACCESS数据库

前面讲过在RSView32的ODBC数据源设置完成后,将生成一个数据库文件*.mdb,该数据库文件包括三个数据库表格,即:标记表格TagTable、浮点表格FloatTable和字符串表格StringTable。通过OPC服务器,在浮点表格FloatTable和字符串表格StringTable中,存放各个标记的历史数据记录。但是其生成的数据记录是依照TagTable中标记序号来排序的,并依照时间顺序循环排列,VBA难以直接调用,解决的方法有二种,一是新建二个表,依照所需的排序,存放标记的浮点数据和字符串数据,这种方法适合数据量较大的状况,不过由于桌面数据库ACCESS本身的特点不适合作为数据繁杂与数据量大的数据库选择,这是不如选用如MSSQL等专业数据库;二是利用VBA进行数据比对,从原有数据表中提取所需数据,这种方法编程工作量小,计算机运算量较大,速度较慢,但对于生成站场的24小时整点数据报表等数据量较小的报表没有问题。本文采用的是其次种方法,下面是实例的源代码:

OnErrorResumeNextDoWhileNotobjaccess.EOF

Ifobjaccess.fields(2).Value=0Then

objExcel.cells(line0,2)=objaccess.fields(3).Value'将tag为0的val值放到EXECL单元格中

objExcel.cells(line0,1)=objaccess.fields(0).Valueline0=line0+1EndIf

Ifobjaccess.fields(2).Value=1Then

objExcel.cells(line1,3)=objaccess.fields(3).Value'将tag为1的val值放到EXECL单元格中

objExcel.cells(line1,1)=objaccess.fields(0).Valueline1=line1+1EndIf

Ifobjaccess.fields(2).Value=2Then

objExcel.cells(line2,4)=objaccess.fields(3).Value'将

tag为2的val值放到EXECL单元格中

objExcel.cells(line2,1)=objaccess.fields(0).Valueline2=line2+1EndIf

Ifobjaccess.fields(2).Value=3Then

objExcel.cells(line3,5)=objaccess.fields(3).Value'将tag为3的val值放到EXECL单元格中

objExcel.cells(line3,1)=objaccess.fields(0).Valueline3=line3+1EndIf

Ifobjaccess.fields(2).Value=4Then

objExcel.cells(line4,6)=objaccess.fields(3).Value'将tag为4的val值放到EXECL单元格中

objExcel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论