文档库 最新最全的文档下载
当前位置:文档库 › 基于WinCC的复杂报表功能实现

基于WinCC的复杂报表功能实现

基于WINCC组态软件的复杂报表实现

孙言岩李加文颜智慧田媛孙园泽

(机科发展科技股份有限公司北京100041)

摘要:本文介绍了在WinCC组态软件环境下,通过访问其历史数据库中压缩归档数据生成带有数据统计分析功能的报表的实现方法。并且以实际污水处理厂为例,根据此方法和步骤,完成现场需要的各种时间节点和数据分析统计的报表需求,报表性能稳定可靠。

关键词:VBS语言WinCC压缩归档WinCC OLE控件

The method of generating complex reports based on Wincc software

Yanyan Sun Jiawen Li Zhihui Yan Yuan Tian Yuanze Sun

(Machinery Technology Development CO LTD. Beijing 100041)ABSTRACT:A method of generating reports using WinCC is produced on this paper. The method can generate the report with data statistical analysis in historical database. According to this method, the report of every time node and data analysis for actual wastewater treatment plant can be finished. The practical application proves the report is stable and reliable.

Key words:VBS WinCC compressed archive WinCC OLE DB

1. 引言

WinCC是目前使用最为广泛的工业组态软件之一,被广泛应用于各种工业控制系统的数据采集及监控应用系统中。它把所有的过程数据保存在其专用的Microsoft SQL Sever 2005数据库中,用户可以通过WinCC提供的Online Trend Control等控件对其进行访问,但不能对这些数据进行直接访问和处理。对于现场日趋复杂的数据分析统计的报表要求,显然已经不能满足。针对此问题,本文提出了通过VBS、WinCC OLE DB方法和SQL相结合的编程方法,实现对数据的重新归档及统计分析,以满足不同场合对报表的需求。

2. 污水处理厂自控系统简介

该污水处理厂出水量3万吨/日。全厂使用西门子PLC进行监视、控制和数据采集存储,自控系统框图如图1所示。上位机采用WinCC作为人机交互界面的软件平台。鉴于当地环保局和污水厂自身的要求,报表系统要具有日报、月报、季报、年报和按时间间隔查询的自由报表功能。Wincc本身自带的历史数据查询控件不能够满足要求,因此需要通过编程实现

图1:污水厂自控系统框图

3.报表生成过程

WinCC历史数据库的存储方式及常规访问方法

WinCC在运行时,数据归档是以一定时间作为基准,形成数据片段。在数据片段下,与数据操作存储有关的表格主要有三个:ARCHIVE(用户归档记录);TAGPRESSED (TAGUNPRESSED)(压缩/非压缩变量归档记录);MSARCLONG(报警记录)。这些表格不允许直接访问,ARCHIVE和TAGPRESSED(TAGUNPRESSED)也不允许修改,MSARCLONG通过控件允许插入/修改等。如果仅仅对数据进行简单的查询和报警报表的修正,我们可以通过WinCC online Talbe Control 和WinCC Alarm Control 控件实现,但控件访问格式固定,在用户对报表功能要求较高的时候显然是不适用的。

3.2 利用WinCC OLE DB方法访问历史数据库

从WINCC6.0开始,SIEMENS就采用SQL3000SP3做为WINCC的后台数据。SQL2000SP3采用了一些独特的技术,和常规的SQL访问的方法是有不同的。WINCC的SQL 库操作是不需要表名的,他有自己定义的SQL语句,需要通过其特有的WinCC OLE DB进行访问。

①定义连接字符串

sPro = "Provider=WinCCOLEDBProvider.1;"

sDsn = "Catalog=数据库名称;"

sSer = "Data Source=.\WinCC"

其中数据库名称为WinCC运行后自动生成的数据库名称,其余为固定格式。

②利用连接字符串连接数据库

Set conn = CreateObject("ADODB.Connection")

conn.ConnectionString = sCon

③数据查询

https://www.wendangku.net/doc/888124340.html,mandText="Tag:R,(A1,A2),'"+StTime.OutputValue+"','"+SpTime.OutputV alue+"'"

其中A1、A2为数据库中Achieve表中归档变量的ID。

3.3RecordSet记录集中的数据存储格式

WinCC历史数据库中的数据通过WinCC OLE DB方法读出后存储在RecordSet记录集中。如果想要处理这些数据,首先需要知道它的存储方式,进而通过VBS编程对数据进行处理。图2为WinCC读取历史数据库数据至RecordSet并在WinCC Listview中显示。RecordSet每一条存储记录包括五列内容:

①ValueID—WinCC ARCHIVE表中变量的ValueID

②Timestamp—变量存储时间

③RealValue—变量值

④Quality—质量数,表示数据的好坏

⑤Flags—标志位

图2: WinCC历史数据—RecordSet显示

从图2中可以看出,第一列为变量ID,第二列为存储时间,第三列为变量值,这三列数据是我们所需要的。这些数据经过计算,就可以完成报表的各种功能了,例如计算累计值、平均值、最大最小值等。

3.4 报表功能的实现

利用RecordSet数据集中的数据,通过计算就能够生成日报、月报、季报和年报了。创建一个用户数据库,并建立日报表,月报表等需要的表格,并将计算后的数据存储在与其相对应的表格中,形成报表。根据用户查询的不同报表按钮连接不同的表格,获取数据,并生成用户所需要的报表。下面以月报为例进行介绍。

月报实现每天生成一个平均数,根据月份不同生成30或31个数据。在SQLserver中创建一个用户数据库,命名为ReportData,在数据库中创建一个table,命名为Data-Month。在WinCC中创建一VBS全局脚本,此脚本运行时间间隔为10min,每条记录的时间格式为年—月—日00:00:00。每次日变量发生变化时,程序产生一条新的记录插入数据表中,否则程序只更新当前记录的数据内容。程序流程图如图3所示:

图3:月报表程序流程图

下面介绍程序中各部分的具体实现。

①打开WinCC历史数据库,将数据按时间要求读出,生成RecordSet对象。具体步骤在2.2中已经说明。图3为生成数据集之后,如何处理数据的程序流程图。

图4:计算功能程序流程图

②连接数据库

WinCC中连接用户数据库与VB连接数据库的语法一致,在此不多做陈述,主要程序如下所示②:

sCon_1 = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Baobiao_Month;Data Source=.\WINCC"

conn_1.Open

③新建数据记录

新建数据记录时,Sum1、Sum2、Sum3是由步骤①中计算得到的

strWork1 = "INSERT INTO [ReportData].[dbo].[ Data-Month]"

strWork2 = "(DateTime,temperature,press,height) "

strWork3 = "V ALUES('"+Date+"',"&(Sum1)&","&(Sum2)&","&(Sum3)&")"

strWork = strWork1 + strWork2 + strWork3

④更新数据记录

当日期关键字没有改变时,程序仅更新当前记录,不会产生新的数据记录。

strWork6 = "UPDA TE [ReportData].[dbo].[ Data-Month] "

strWork7 ="SET temperature = "&(Sum1)&" ,press = "&(Sum2)&",height = "&(Sum3)&"" strWork8 = " WHERE DateTime = '"+Date+"'"

strWork5 = strWork6 + strWork7 + strWork8

4.报表查询过程

经过上述步骤,报表数据库已经建立。日报表、月报表、季报表和年报表按照不同的时间间隔保存在不同的表中,接下来就可以在WinCC中利用按钮与DTPicker时间控件相结合的方法来进行数据查询了。按钮的功能是确定选择哪一张表格作为查询对象,DTPicker的功能是设置查询的起始时间和结束时间。

DTPicker是微软提供的OCX控件,在WinCC中添加此控件。当用户通过该控件设置时间后,经过VB编程可以获得控件中设置的时间参数,之后按照此时间进行数据库查询。

5.运行结果

报表系统已经在实际污水厂自控系统中正常运行使用,记录包括进水流量、出水流量、进水COD、出水COD、进水氨氮、出水氨氮、溶解氧、进水PH、出水PH、鼓风量以及污泥浓度十一个变量。系统中实现了日报表、月报表、季报表和年报表的查询以及累计值和平均值的计算。

6.结论

本报表系统通过WinCC OLE DB方法连接WinCC历史数据库读取数据,并采用VBS 和SQL相结合的编程方式,实现了数据的灵活访问,制作出满足污水厂要求的报表系统。利用此方法,我们可以制作出满足各行业要求的复杂报表系统,解决工程中关于报表的实际问题。

参考文献

1.龚沛曾等,Visual Basic 程序设计简明教程,第一版,2001年,高等教育出版社,北京

2.常桂英,蔚淑君,Visual Basic 程序设计+SQL Server 2005 数据库应用系统开发案例教

程,第一版,2012,清华大学出版社,北京

3. 刘彬彬,安剑等,Visual Basic从入门到精通,第二版,2010年,清华大学出版社,北京

4. 刘志妩等,基于VB和SQL的数据库编程技术,2008,清华大学出版社,北京

5. 孙浏毅,零基础学SQL,2012年,机械工业出版社,北京

补充作者简介:

李加文,男,1981年出生,学士,工程师,自动化方向。

颜智慧,男,1985年出生,学士,助理工程师,自动化方向。

田媛,女,1978年出生,学士,工程师,自动化方向。

孙园泽,男,1987年出生,学士,助理工程师,自动化方向。

详细通讯地址:北京市海淀区首体南路2号机械科学研究院320室

邮政编码:100041

联系电话:186********

E-mail:99141864@https://www.wendangku.net/doc/888124340.html,

相关文档
相关文档 最新文档