0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

WinCC如何做外部报表

1bGT_GKYXT1508 来源:未知 作者:李倩 2018-04-16 10:40 次阅读

用VB实现WinCC归档数据的复杂报表

最近在看WinCC如何做外部报表,网上找了一篇文章,供大家参考。

引言:

Siemens公司的WinCC是一个优秀的工控组态软件,广泛应用于各种工业控制系统的数据采集及监控,具有良好的人机界面、灵活的组态功能。WinCC本身也具有报表和曲线处理功能,但 WinCC V6.0以前的版本没有嵌入VB脚本功能,且其归档数据不能直接被SQL server数据库所用。对于一些较复杂的数据处理功能(如数据查询、数据备份、报表打印等)用WinCC实现就显得力不从心。同时,WinCC在处理报表时不能对历史数据进行任意查询和过滤,且报表格式设计也不够灵活方便,无法满足项目要求。

1.系统概述

本系统是将WinCC从PLC采集过来的过程数据通过VB编程进行归档、查询、过滤、报表打印。在每次试验前,先要清空WinCC归档数据库和Access临时数据库,以保证每一次试验数据的有效性和完整性。试验结束后,可立即进行数据处理(备份、查询、过滤、打印)。也可对备份的历史数据进行查询和报表打印。由于Excel实现报表功能非常强大,且VB的可扩展性强,可以利用Excel作为OLE服务器,实现VB与Excel的集成,所以各种复杂的报表可以很容易的实现。系统主要界面如下 :

图一:新试验起始画面

图二:数据查询画面

2. ODBC的配置连接和DAO

2.1 ODBC(Open Database Connectivity)配置

ODBC是一个用于访问数据库的统一标准接口,是Microsoft Windows的开放服务体系WOSA(Windows OpenServices Architecture)中有关数据库的一个组成部分。ODBC需要连接数据源,选择相应的驱动程序。本系统数据源配置在ODBC Config 对话框中进行,配置数据库文件名(此处输入Siemens组态软件Wincc自动生成存档的过程数据库《项目名》RT.DB)和路径。并在类型(Description)中输入Wincc5.0 。在Access中通过“获取外部数据“连接到在ODBC 管理器中建立的数据源。这样即使Wincc退出后,Access仍然与过程数据库保持后台动态连接。

2.2 DAO(dataaccessobjects)

VB访问数据库的方法有多种,访问的数据库类型也有多种。DAO(dataaccess objects)是一种基于Jet 数据库引擎的面向对象接口,它提供了完整的管理一个关系型数据库所需的全部操作属性和方法。DAO可以识别ODBC数据库。

3. VB创建数据库和Excel报表

3.1创建数据库、添加记录

Siemens组态软件Wincc自动生成归档的过程数据库《项目名》RT.DB,每一个标签变量对应一个表,需将若干个表汇总成为一个总表,另外需建一个包含变量名称、代号、允许值等字段的表。上述过程采用VB编程,用前面介绍的的DAO创建数据库、创建表、添加字段等来完成。并将Access中不同的采样周期对应数据添加到临时数据库中,然后进行备份、查询和报表处理等。主要程序如下:

SetWs = DBEngine.Workspaces(0)

Set dataBase = Ws.CreateDatabase(dataBasePath,dbLangGeneral, dbVersion60)

Set Table = dataBase.CreateTableDef(TableName)

Do Until recordTemp.EOF

Rs.AddNew:Rs(1) = recordTemp(0)

Rs.Update:recordTemp.MoveNext

Loop

3.2数据查询和过滤

使用SQL语句实现时间段和数据过滤时间的子查询,并将查询结果放在建立的临时查询表中,再将临时查询表的记录显示。

Set queryTemp =db.CreateQueryDef(“”, “SELECT * FROM 运行数据 WHERE 时间 IN ( SELECT 时间 From 运行数据 WHERE 时间 between #” & strStart & “# and #” &strEnd & “# ) and Val(序号) Mod ” & Tim& “=” & numMod & “ ORDER BY 时间 ”)

3.3生成Excel报表

由于生成的报表比较复杂,所以先在Excel中按照用户的要求作好一个模板(后缀为.xlt),对于报表中不固定的部分,需要VB程序动态生成。由于本项目过程变量数目及采样值较多,在VB程序中需同时控制Excel的Sheet和Page。整个过程都是后台调用Excel。

1)启动Excel、复制模板:

SetobjNew = New Excel.Application

SetobjNew = CreateObject(“Excel.application”)

FileCopystrS, strD ‘复制模板

SetobjEW = objNew.Workbooks.Open(strD) objNew.Visible = False

2)按要求将查询结果送到Excel的各个Range或Cells中:

Fori = 3 To 16

objEW.Sheets(1).Cells(4+ k * 33, i) = c(i - 2, 1): Next I

3)删除多余的模板:

objEW.Sheets(1).Range(“A”& Trim$(Str$(k)) & “:” & “P660”).Select objNew.Selection.EntireRow.Delete

Selection.DeleteShift:=xlUp

4)设置纸张、打印预览和打印:

objEW.ActiveSheet.PageSetup.Orientation= xlLandscape ‘设置纸张方向为横向

objEW.ActiveSheet.PageSetup.PaperSize= xlPaperA4 ’设置纸张尺寸为A4

objNew.Visible= True

objEW.Sheets(1).PrintPreview

objNew.Visible= False

objEW.Sheets(1).PrintOut

objNew.DisplayAlerts= False: objNew.Quit objNew.DisplayAlerts= True:

SetobjNew = Nothing

KillApp.Path + “\temp1.xls” ‘删除临时模板

4.结束语:

本系统将WinCC从PLC采集过来的过程数据,通过VB编程进行归档、查询、过滤、报表打印,以及对历史数据查询、过滤、报表打印。系统充分利用Excel非常强大的报表处理功能,以及VB的可扩展性强,将VB与Excel集成,以实现用户所要求的报表;同时,实现了数据灵活备份,解决了工程实际问题。目前该系统已投入运行,性能良好。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WinCC
    +关注

    关注

    5

    文章

    195

    浏览量

    47644
  • VB编程
    +关注

    关注

    0

    文章

    44

    浏览量

    8358

原文标题:用VB实现WinCC归档数据的复杂报表

文章出处:【微信号:GKYXT1508,微信公众号:工控云学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32扩展IO口如何做

    STM32扩展IO口,如何做
    发表于 04-16 08:27

    如何做labview串口

    如何做labview串口
    发表于 08-24 14:59

    求教labview和wincc的接口问题?

    现在在许多行业的HMI用的是西门子的WinCC ,有没有用labview和西门子的SCADA软件WINcc的接口?
    发表于 11-24 17:05

    请教如何做时序分析

    请教如何做时序分析
    发表于 06-01 22:45

    关于WINCC的问题

    如何将VB中的声明语句成功导入到WINCC中,我现在试了,但是显示语句错误
    发表于 08-06 16:08

    实现wincc手机APP远程监控方案

    wincc是西门子公司开发的上位机视窗监控编程软件,用户可以利用软件提供的控件、脚本、方法等进行开发,将控制系统动做成动画画形式的人机界面,从而实现对控制系统的监控。现在智能手机已经可以实现电脑
    发表于 07-23 19:07

    如何做稳定的单片机程序

    如何做稳定的单片机程序?如何做稳定的上位机程序?
    发表于 09-30 06:59

    labview 和 wincc 的区别 使用场景

    labview 和 wincc 的区别 使用场景 都是上位机软件,都可以监控软件 wincc的名气也比较大 对比的资料较少 写这些文章的人,从自己的从事的行业出发,带有自己的思维 使用的场景 肯定
    发表于 10-27 18:01

    WinCC数据报表实现方法介绍

    WinCC数据报表实现方法介绍:本文对数据报表的需求进行了分析,结合WinCC就复杂数据报表的实现进行了介绍。关键词
    发表于 07-03 15:53 191次下载

    SIMATIC WinCC V7.4 过程可视化系统样本

    、262144个外部变量)。外部变量是指,通过WinCC通道连接到控制器或其它数据源的数据点。WinCC基本系统已集成图形系统、报警消息系统、归档系统、
    发表于 04-26 14:26 13次下载

    博图WINCC如何做画面模板

    博图WINCC 如何做画面模板
    的头像 发表于 10-10 09:10 3w次阅读
    博图<b class='flag-5'>WINCC</b><b class='flag-5'>如何做</b>画面模板

    利用第三方软件实现WinCC打印实时报表的方法

    利用第三方软件实现WinCC打印实时报表的方法A说明。
    发表于 04-25 11:07 10次下载

    WINCC flexiblo组态报表是什么,如何创建

    出于产品测试和质量控制的目的,报表用于记录生产过程中的事件。这些事件,即报警和配方数据,以班次报表的形式定期输出。
    的头像 发表于 06-30 17:26 1695次阅读
    <b class='flag-5'>WINCC</b> flexiblo组态<b class='flag-5'>报表</b>是什么,如何创建

    WINCC flexiblo组态报表详解

    出于产品测试和质量控制的目的,报表用于记录生产过程中的事件。这些事件,即报警和配方数据,以班次报表的形式定期输出。
    的头像 发表于 07-26 10:11 543次阅读
    <b class='flag-5'>WINCC</b> flexiblo组态<b class='flag-5'>报表</b>详解

    SIMATIC WinCC产品特性及亮点

    SIMATIC WinCC 基本系统包分运行版和完全版(组态+ 运行)两种,软件授权以外部变量进行划分(可支持128、512、2048、8192、65536、102400、153600、262144 个外部变量)。
    的头像 发表于 08-09 14:25 703次阅读