基于SQL和Wincc的污水厂的EXCLE数据报表的开发

(整期优先)网络出版时间:2018-12-22
/ 3

基于SQL和Wincc的污水厂的EXCLE数据报表的开发

郝向东1许健1李子浩1周志鹏1谢仕武1陈

1深圳市新旗滨科技有限公司;2广东旗滨节能玻璃有限公司

摘要:针对东莞某污水处理厂项目,我们以MicrosoftSQLServer2005为后台数据库,wincc7.0读取数据传送到数据库。运用OBDC开发性数据接口技术,通过VBScript和C脚本编程,自行研究和开发EXCLE脚本.通过EXCLE来记录,查询和打印数据报表。

关键词:Wincc,SQL,脚本,报表

Abstract:Intheprojectofdongguanwastewatertreatmentfactory,weuseMicrosoftSQLServer2005forthebackgrounddatabase,getthedateformwincc7.0andsendthosetoSQL.WeresearchanddevelopmentEXCLEscript,byusingtheinterfacetechnologyofOBDCdevelopmentaldateandusingVBScriptandC.Wecanrecord,queryandprintthedatareport.

1前言

随着科技的日益进步,以及客户需求的不断增加,对系统集成的智能化和信息化提出了更高要求。目前,很多系统比较庞大,信息量大量增加,使得人们迫切需要一种能够使他们能够直观地展示出他们所要的各种信息,并提高他们对信息的处理、分析。报表是自动化工程和信息化项目中的重要组成部分。尤其是信息化项目,对报表的要求比较高,这部分工作量也比较大,实现起来也比较复杂。

Wincc是西门子公司开发的监控及数据采集软件,wincc7.0是目前全球最领先的HMI/SCADA自动化监控组态软件。采样MicrosoftSQLServer2005数据看进行生产数据的采集归档,该数据库支持多种开放接口。Wincc处理能力虽然很强大,但是它的报表功能有限,只能定时打印报表,报表格式单一,难以满足企业日益增长的各种需求。本文介绍了在某污水厂项目上,自行开发EXCLE宏程序,运用OBDC等开发性数据接口技术,通过VBScript和C脚本编程,将wincc系统实时数据采集功能,MicrosoftSQLServer数据库归档功能,以及EXCLE灵活查询功能结合起来,完成了数据记录和报表格式的自动生成,打印和显示污水处理厂生产班、日、月、年等各种报表。满足客户对报表的需求。

2工程简介

东莞某污水处理厂现每日处理污水约20万吨。有进水泵房控制分站、鼓风机房主变配电,室控制分站、污泥处理车间控制分站、加药控制分站、加氯系统控制分站、污水处理控制分站等。监控的设备多,数据采样量大,客户需要的报表种类和格式多,如日报表-进水水质汇总表,日报表-出水水质汇总表,日报表-设备运行时间表,月报表-设备运行时间表,等等。报表信息不仅包含每天数据,还要统计每月,季,年的数据。根据客户需求显示和打印相应报表。

此污水厂需要的实时数据通过下位机系统采集并转换,计算和整理,通过以太网传送到上位机。上位机通过Wincc7.0,根据客户报表需求,通过VBScript和C脚本编程,定期往MicrosoftSQLServer数据库写数据。在根据客户需求,通过VB6.0编程,制定灵活的界面,客户根据需要选定相应的报表,最后在EXCLE上显示出来,数据传输如图1。

图1

3wincc与数据库的建立

Wincc是一款功能强大的工业控制软件,它集成了监控和数据采集、组态、脚本(Script)语言和OPC等技术。Wincc集成了C脚本功能,遵循标准C语言规范,并提供了基于C脚本规范的系统函数,支持全开放的自由编程,进行深层次的二次开发。这位在Wincc中引进满足实际需要的各种算法提供了基础的编辑平台。

Wincc提供了嵌入式C-Script和VBScript,用户可以通过脚本编程实现特殊的功能。此污水厂报表需要积累每天整点时刻的信息,因此在脚本中我们增加了读取系统时间的变量,在整点时刻采样变量值并传送到数据库中。在脚本中我建立起wincc和定义好的SQL数据库的链接,将需要的wincc变量一一对应到数据库中的变量。脚本程序如下所示。

Functionaction

Dimstrcn,cn,dd,DY,TM,WENBEN,gd,nnn

Dima,b,c,d,e,f'只列举出部分报表变量

DimMM,SS,hh'读取系统时间

Dimis_sql,rscom

Setcn=CreateObject("ADODB.Connection")

Setrscom=CreateObject("ADODB.Recordset")

MM=HMIRuntime.Tags("MMuters").Read

SS=HMIRuntime.Tags("SSecters").Read'分钟和秒钟

hh=HMIRuntime.Tags("hour1").Read

IfMM=00Andss=0Then

a=HMIRuntime.Tags("DATA_54").Read'1#进水流量1#进水流量

b=HMIRuntime.Tags("1_JSR").Read'1#进水累计

c=HMIRuntime.Tags("DATA_55").Read'1#污泥瞬时回流量

d=HMIRuntime.Tags("DATA_55").Read'1#污泥累计回流量

e=HMIRuntime.Tags("DATA_56").Read'1#剩余污泥瞬时量

f=HMIRuntime.Tags("1_SYR").Read'1#剩余污泥累计量

strcn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=dg_report;DataSource=.\wincc"'wincc与SQL数据库建立连接

cn.ConnectionString=strcn

cn.open

is_sql="insertintovDataView(iDateTime,e1,e2,e3,e4,e5,e6)values(getdate(),

"&a&","&b&","&c&","&c&","&e&","&f&")"'将wincc中的数据传送到数据库指定目录下。

cn.Executeis_sql

cn.close

EndIf

EndFunction

4EXCLE与数据库的建立

报表是自动化工程和信息化项目中的重要组成部分。尤其是信息化项目,对报表的要求比较高,这部分工作量也比较大,实现起来也比较复杂。Excel是微软0mce中的核心组件。是人们日常工作中经常用到的表格和计算统计的工具软件。特别是它能够生成统计分析图形,用起来很方便。通过二次开发,将它应用到实时数据库的报表组态中,制作出满足客户需求各种形式报表。

为满足客户对报表界面灵活方便的需求,本项目通过Vb6.0软件编程,建立数据库和EXCLE的连接,将数据库中相应变量数据按照客户需求(如进水日报表,出水日报表等等)传送到相应EXCLE中,并封装成EXE文件,客户不用安装其他程序,就可以打开此EXE文件,进入报表选择界面,选择需要查看的报表类型,打开后,系统生成客户所需数据的的EXCLE形式。

Vb6.0软件开发,以下是进水水质部分数据日报表,建立数据库和EXCLE连接的源程序如下:

AttributeVB_Name="mod_Excel_fuc"'功能:生成日报表类似于实时数据

PublicSubCreateDayToExcelType1(ListAsLabel,strTitelAsString,strDAsString,_

strMPpofixAsString,strSPAsString,_intNoAsInteger,strWhere()AsString)

DimobjAppAsExcel.Application,objWorkbookAsExcel.Workbook,objSheetAsExcel.Worksheet

DimrsAsNewADODB.Recordset,strSqlAsString,strTAsString,strLAsString,strKAsString,strXAsString,strYAsString,strZAsString

DimstrModPathAsString,strExcelSavePathAsString,intRowAsInteger,intCellAsInteger

DimintRow2AsInteger,intRow3AsInteger,intRow4AsInteger'mahaibiaonew20120620

DimiAsLong,nAsLong,jAsLong

DimdblBtimeAsSingle,dblEtimeAsSingle

DimArrRecordAsVariant

OnErrorGoToerr

Screen.MousePointer=11

dblBtime=Timer

strExcelSavePath=App.Path&strSP&"日报表\"&Format(strD,"yyyymm")

strExcelSavePath=MkAmdDir(strExcelSavePath)

strExcelSavePath=strExcelSavePath&Format(strD,"yyyymmdd")&strTitel&".xls"

List.Caption=""

List.Caption=List.Caption&Space(10)&"Excel模板配置......"&vbCrLf'文字描述

strModPath=App.Path&strMPpofix'模板

SetobjApp=CreateObject("Excel.Application")

SetobjWorkbook=objApp.Workbooks.Open(strModPath)

List.Caption=List.Caption&Space(10)&"提取数据并写入Excel开始......"&vbCrLf

strK=List.Caption

Forn=1TointNo

strZ=Format((n/intNo)*100,"0")&"%"

DimstrData()AsString,strTempAsString

strTemp=strWhere(n-1)

strData=Split(strTemp,",")

SetobjSheet=objApp.Workbooks(1).Worksheets(n)

objSheet.Activate'时间

objSheet.Cells(2,1)=Format(strD,"yyyy年mm月dd日")

strSql=strSql&"SELECT*FROMvDataViewWHERECONVERT(CHAR(10),iDateTime,21)='"&strD&"'"

rs.OpenstrSql,objConnection,adOpenKeyset,adLockReadOnly

IfNotrs.EOFThen

rs.MoveFirst

Forj=0Tors.RecordCount-1

intRow=6+rs.Fields(122).Value

objSheet.Cells(intRow,2)=rs.Fields(1).Value

objSheet.Cells(intRow,3)=rs.Fields(2).Value

objSheet.Cells(intRow,5)=rs.Fields(3).Value

objSheet.Cells(intRow,6)=rs.Fields(4).Value

objSheet.Cells(intRow,8)=rs.Fields(5).Value‘列举部分变量

DoEvents

Nextj

EndIf

rs.Close

Setrs=Nothing

Nextn

List.Caption=List.Caption&vbCrLf

List.Caption=List.Caption&Space(10)&"提取数据并写入Excel完毕......"&vbCrLf

5报表界面

在东莞某污水厂的项目上,通过VB开发出的报表界面友好,归类清晰,查询方便,方便客户选择操作,如图2。在图2的窗口里,我们选择日期,从而查询有记录开始的任何一天的数据,在报表类型中,可以选择日报表,月报表,季报表和年报表。每种报表中分别有进水水质汇总表,出水水质汇总表,设备运行时间表等。选择需要的报表,点击查询,该程序就会从数据库中查询需要的数据传送到EXCLE中,在EXCLE中生产数据报表。图3为污水厂2014年11月13日的进水水质汇总日报表,记录了一天中每整点时刻采样的数据,并汇总计算出各项数据当天的最大值,最小值和平均值。程序设计中我们建立了一个时间变量,EXCLE报表的第2行中自动生成报表的日期。

图2

图3

5总结

Wincc自带的报表格式单一,有很大的局限性,不能很好满足客户特殊需求。本项目运用VB编程,结合wincc强大的脚本功能,以及SQL强大的数据存储和开放性,开发出的报表有以下优点:1.数据写入SQL数据库,数据库不丢失,保存时间长,数据库容量大。2.数据从数据库里查询,速度快,更直接,可靠,稳定性好。3.依据客户需求设计多种类报表,查询更方便,界面更友好。本项目二次开发的报表最大程度地满足了客户需求,得到客户一致好评。

参考文献

1)一种基于关系数据库的FIX工控系统报表生成方法王志琪,方康玲计算机工程与科学2002年第24卷第6期

2)脚本在Wincc中的应用刘剑,奚邦庆,杨杰传中国高新技术企业2010年第27期

3)用wincc脚本实现对SQL_SERVER数据库管理及产品报表丛雪松工程科技NO.32012