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
    +关注

    关注

    6

    文章

    204

    浏览量

    47948
  • VB编程
    +关注

    关注

    0

    文章

    44

    浏览量

    8409

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

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

收藏 人收藏

    评论

    相关推荐

    变压器没有抽头如何做正负压?

    变压器没有抽头如何做正负压?
    的头像 发表于 01-20 10:28 1677次阅读
    变压器没有抽头<b class='flag-5'>如何做</b>正负压?

    求教labview和wincc的接口问题?

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

    labview 和 wincc 的区别 使用场景

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

    WinCC数据报表实现方法介绍

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

    如何做一块好的PCB板

    如何做一块好的PCB板    大家都知道理PCB板就是把设计好的原理图变成一块实实在在的PCB电路板,请别小看这一
    发表于 01-18 13:16 2549次阅读

    手机企业如何做项目管理

    手机企业如何做项目管理 项目管理科学是一门关于项目资金、时间、人力、产品等资源控制的管
    发表于 07-15 07:51 1612次阅读

    半导体厂商如何做芯片的出厂测试

    半导体厂商如何做芯片的出厂测试呢,这对芯片来说,是流片后或者上市前的必须环节。
    发表于 06-18 15:56 1.5w次阅读

    半导体厂商如何做芯片的出厂测试

    半导体厂商如何做芯片的出厂测试,感兴趣的小伙伴们可以瞧一瞧。
    发表于 10-26 15:55 0次下载

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

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

    博图WINCC如何做画面模板

    博图WINCC 如何做画面模板
    的头像 发表于 10-10 09:10 3.2w次阅读
    博图<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 1975次阅读
    <b class='flag-5'>WINCC</b> flexiblo组态<b class='flag-5'>报表</b>是什么,如何创建

    涂鸦IoT平台如何做智能家居项目

    电子发烧友网站提供《涂鸦IoT平台如何做智能家居项目.zip》资料免费下载
    发表于 11-08 10:40 7次下载
    涂鸦IoT平台<b class='flag-5'>如何做</b>智能家居项目

    WINCC flexiblo组态报表详解

    出于产品测试和质量控制的目的,报表用于记录生产过程中的事件。这些事件,即报警和配方数据,以班次报表的形式定期输出。
    的头像 发表于 07-26 10:11 968次阅读
    <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 1325次阅读