Wincc报表Excel
ecel表格和WINCC报表
如何使用WinCC DataMonitor 基于Web 发布浏览Excel 报表文档How to use WinCC DataMonitor publish and view excel document base on Web文档类型(Getting-started)Edition (2008 年7 月)摘要本文介绍使用WinCC DataMonitor 的"Excel Workbooks",通过Excel 表格显示WinCC 项目的过程值、归档变量值和归档消息。
并可以通过 Web 发布浏览访问数据。
关键词WinCC,DataMonitor,ExcelKey Words WinCC,DataMonitor,ExcelA&D Service & Support Page 2-14目录1.WinCC DataMonitor 是什么 (4)简介 (4)WinCC DataMonitor 的主要功能 (4)2.使用WinCC DataMonitor 基于Web 发布浏览Excel 报表文档 (7)使用“Excel 工作簿向导”组态发布Excel 工作簿 (7)在线显示浏览Excel 工作簿 (12)A&D Service & Support Page 3-141.WinCC DataMonitor 是什么DataMonitor 是 SIMATIC WinCC 工厂智能中用于数据显示和分析的一个组件,它基于WinCC 的实时、历史数据进行车间管理级的数据汇总和分析,借助标准工具(例如微软的 IE 浏览器或者 MS Office Excel)可以显示并分析 WinCC 上的过程信息和历史数据。
简介SIMATIC WinCC/DataMonitor 提供用于显示交互数据及分析当前过程状态和历史数据的分析工具集合。
DataMonitor 客户端是纯粹用于显示和评估来自 WinCC 的过程值或来自WinCC 长期归档服务器的数据的系统。
西门子wincc数据报表的实现方式
西门子wincc数据报表的实现方式【摘要】随着工业领域的不断发展,用户需求一种以人机界面为控制主体的视窗控制体系的过程监控系统,以此来取代原来的以现场操作按钮和仪表为主的操作体系。
通过开放性、灵活性的可视化界面,迅速并直接的处理生产过程中的事件信息。
凭借这种战略思想,WINCC,运行于Windows系统下的控制中心,已发展成为工业市场领域的领导者,乃至业界遵循的标准。
Wincc集生产自动化和过程自动化于一体,应用于各种工业自动化领域,是提高工厂生产效率的上乘之选,并支持多种语言。
工业生产中,报表系统通常是控制系统中非常重要的一部分,是企业管理的基本措施和途径,它通常用来记录重要的现场工艺参数和统计信息。
早期,都是由人工记录的方式进行统计汇总,数据也只能有一种几乎只有记录员才能理解的表现形式,且这种形式难于更改。
当进入计算机时代后,报表这部分工作完全可以由计算机软件来实现,数据动态化,格式多样化,用户可以自己修改数据或格式。
针对自动化工程师而言,如何利用wincc软件来开发适合用户需求的报表,并且高效灵活的解决统计数据是自动化工程师必须掌握的一门技术,也是企业日常生产维护和管理中不可或缺的管理手段之一。
报表的变现形式分为许多种,大体上可分为两种形式:曲线格式和表格格式。
曲线形式主要是利用WINCC自带控件来实现,在控件属性中,可对趋势、常规、字体、趋势窗口、时间轴、数值轴、工具栏、状态栏、在线组态、导出中具体参数进行设置,以符合用户的生产需求和审美要求。
例如,时间轴可设成1分钟,1小时或者1天的形式,数值轴可以设置成根据实际测量值实时改变数值轴的范围。
应用在线趋势曲线的前提条件是,用户需要在变量记录里设置需要归档的变量内容和归档周期等一系列参数。
针对于一些特殊归档要求,曲线形式的归档可能满足不了用户的需求,往往用户需要生成一种支持打印功能并以表格形式查询的数据归档报表。
针对于这类复杂的报表,可以通过用户归档和Wincc报表编辑器来实现此类功能。
如何在Excel中访问WinCC变量归档数据
1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。
2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。
3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。
建议使用WinCC系统变量“@DatasourceNameRT” 获得当前的Catalog。
Data Source :服务器名称本地:“.\WinCC” 或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。
TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD hh:mm:ss.msc”。
在wincc中怎么做才能把报表生成按日期的Excel文件
在wincc中怎么做才能把报表生成按日期的Excel文件在wincc 中怎么做才能把报表生成按日期的Excel 文件VBS脚本实现,就是把文件名称以变量的形式表示。
参考'关闭保存Dim patch,filenamefilename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(N ow))&CStr(Hour(Now))+CStr(Minute(Now))&CStr(Second(Now)) patch= "d:\"&filename&"demo.xls"objExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp= Nothing对于Excel报表,用VBS最灵活,Excel 定义好格式后wincc来填空,平均累计值就用Excel 的功能。
Dim excelappDim aa,bb,ccSet excelapp = CreateObject("Excel.Application")Set aa = HMIRuntime.tags("tag1")excelapp.visible = False'Trueexcelapp.workbooks.open "D:\excel.xls"bb = Now 'getcurrent_datetime()aa.ReadMsgBox CStr(bb)excelapp.cells(1,1).value = "rrrrrr"'111111excelapp.cells(1,2).value = CStr(bb)excelapp.cells(2,2).value = CStr(aa.value)excelapp.cells(3,2).value = CInt(aa.value)excelapp.cells(4,2).value = CSng(aa.value)excelapp.cells(5,2).value = CDbl(aa.value)excelapp.cells(6,2).value = CLng(aa.value)excelapp.cells(3,3).value = ScreenItems("33").outputvalueexcelapp.cells(4,4).value = ScreenItems("35").outputvaluecc = "D:\excel" + Mid(CStr(bb), 1, 4)+ Mid(CStr(bb), 6, 2)+ Mid(CStr(bb), 9, 2)+ Mid(CStr(bb), 12, 2)+ Mid(CStr(bb), 15, 2)+ Mid(CStr(bb), 18, 2) + ".xls"MsgBox ccexcelapp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖excelapp.activeworkbook.saveas cc '根据当前日期时间,另存为新的文件'excelapp.activeworkbook.save ’对打开的文件,直接保存'excelapp.activeworkbook.saveAs "D:\excelcopy.xls" ’直接另存为新的文件excelapp.workbooks.closeexcelapp.quitSet excelapp = Nothing这个报表的数据采集没有难度;唯一的难度在于4班3 倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法的。
wincc 通过excel生成 日报表 月报表
wincc 通过excel生成日报表月报表
请教:怎样把wincc的归档变量存储到excel中,而且每天生成一个日报表,每月生成一个月报表
问题补充:
请教范范老师,因为我对vb实在是不熟悉,还得请教两个问题:1.这个脚本是不是编在vb的全局脚本里面,2.你说到的执行时间,我不知道要怎么控制这个时间,3.我把变量导入到excel里的是瞬时值还是平均值,因为我想在excel 里显示一个小时的平均值,需要怎么做呢
最佳答案
要做这个需要有一定的VB功底,你可以抄一抄别人的程序,然后运行试验试验,最后把程序变成自己的,这样最快最容易达到目的。
下面是我写的一段日报表,已经投入项目使用。
需要注意的是脚本执行的时间要控制好。
因为字数限制发的是图片版的,还需要敲一下程序。
图片说明:1,程序2,程序23,程序3
标签。
wicc 写EXCEL 表格
3 其他图形代码
Hale Waihona Puke WICC 写EXCEL 表格
1. WINCC新建EXCEL,并把变量值和公式值计算后的值写入 EXCEL表格中
On Error Resume Next Dim objExcelApp Set objExcelApp=CreateObject("Excel.Application")'创建表格对象模型 objExcelApp.Visible=False objExcelApp.Workbooks.add objExcelApp.worksheets(1).name="我的" objExcelApp.Worksheets("我的").Activate '激活工作表格 With objExcelApp.worksheets("我的") '数据写 .cells(2,2).value = HMIRuntime.Tags("EXCEL_1").read .cells(2,3).value= HMIRuntime.Tags("EXCEL_2").read .cells(3,2).value= HMIRuntime.Tags("EXCEL_3").read .cells(3,3).Formula = HMIRuntime.Tags("EXCEL_4").read .cells(4,2).Formula = "=MAX(R2C2:R3C2)" .cells(4,3).Formula = "=AVERAGE(R2C2:R3C3)" End With
objExcelApp.Activeworkbook.saveAs "e:\我的.xls" objExcelApp.Workbooks.Close'退出工作簿 objExcelApp.Quit '表格模型退出 Set objExcelApp= Nothing'释放资源 Set fso=Nothing'释放资源
WINCC嵌入式EXCEL报表系统使用手册
WINCC 嵌入式EXCEL 报表系统使用手册1、打开报表画面点击主画面中“报表”按钮,打开报表画面:2、界面介绍报表画面功能介绍时间设置3、选择报表文件在“报表选择”栏中选择需要生成报表的名称:4、选择报表类型在“类型选择”栏选择报表类型:日报表、月报表、年报表、自由报表,具体介绍如下:●日报表——为一天的报表数据,每小时产生一个记录,共24条记录,时间为“00:00:00”至“23:59:59”。
●月报表——为一月的报表数据,每天产生一个记录,根据月份的不同分别产生28-31条记录,时间为“01 00:00:00”至“30 23:59:59”(或“2823:59:59”/“29 23:59:59”/“31 23:59:59”)。
●年报表——为一年的报表数据,每月产生一个记录,共12条记录,时间为“01-01 00:00:00”至“12-31 23:59:59”。
●自由报表——为指定时间段的报表数据,时间段由“开始时间”和“结束时间”共同决定,每一个“时间间隔”产生一个记录,记录条数由时间段和时间间隔决定。
5、设置报表时间根据报表类型,选择报表时间。
点击“日历”可以打开日历控件,控件中可以快速选择日月年,也可以通过下拉窗口进行选择。
当为日报表时,需要设置“年”、“月”、“日”;当为月报表时,需要设置“年”、“月”;当为年报表时,需要设置“年”;当为自由报表时,需要设置开始和结束时间的“年”、“月”,“日”、“时”、“分”等全部项,间隔时间也需要设置。
6、生成报表当“报表选择”、“类型选择”和时间选择均设置完成后,点击“生成报表”按钮,系统将开始在右边表格中生成出报表,在生成报表的过程中能看见表格中数据逐渐显示,也能通过下方进度条看见完成情况。
生成报表时,空数据区用“#”填充,错误数据区用“##”填充,报表生成完毕后将有“成功生成数据文件!”提示。
同时,报表生成后将自动保存到项目中“report”文件夹下。
WinCC数据报表实现方法介绍
WinCC数据报表实现方法介绍WinCC是西门子公司开辟的一款工业自动化软件,用于监控和控制工业过程。
它提供了丰富的功能和工具,使用户能够轻松地创建、配置和管理工业自动化系统。
其中一个重要的功能就是数据报表的生成和分析。
WinCC数据报表功能可以匡助用户对工业过程中的数据进行采集、存储和分析,从而提供决策支持和性能优化。
下面将介绍WinCC数据报表的实现方法。
1. 数据采集和存储:在WinCC中,数据报表的实现首先需要进行数据的采集和存储。
用户可以通过配置WinCC的数据采集功能,将需要监控和分析的数据从现场设备或者控制系统中获取。
这些数据可以是温度、压力、流量等过程变量,也可以是设备状态、报警信息等。
WinCC提供了多种数据采集方式,如OPC、数据库连接、PLC通讯等,用户可以根据实际需求选择合适的方式。
2. 报表模板设计:在数据采集和存储完成后,用户需要设计报表模板,用于展示和分析数据。
WinCC提供了丰富的报表模板设计工具,用户可以根据自己的需求自定义报表的样式和布局。
用户可以选择添加表格、图表、图象等元素,还可以设置报表的标题、页眉、页脚等。
此外,WinCC还提供了多种数据处理和计算功能,如数据筛选、排序、求和、平均值计算等,用户可以根据实际需求对数据进行处理和分析。
3. 报表生成和导出:在设计好报表模板后,用户可以通过WinCC的报表生成功能生成报表。
用户可以选择生成实时报表或者历史报表,实时报表可以实时展示当前的数据,而历史报表可以展示一段时间内的数据。
生成报表时,用户可以选择报表的时间范围、数据类型、数据筛选条件等。
生成的报表可以以各种格式导出,如PDF、Excel、Word等,方便用户进行打印和共享。
4. 报表分析和优化:生成报表后,用户可以进行报表的分析和优化。
WinCC提供了丰富的数据分析工具,用户可以通过图表、图象等方式直观地展示和比较数据。
用户可以根据报表的分析结果,发现问题和改进措施,并进行性能优化。
WINCC报表说明
WINCC报表制作说明本次报表制作以WINCC7.0为基础,利用自带的“变量记录”功能,进行变量归档操作。
然后利用WINCC自带的控件“Wincc Online Table Control”关连变量归档,可实现简单的报表的查询功能。
另一种方法为利用EXCEL的宏访问WINCC数据库(变量归档)。
本方法中需安装Microsoft Office 2003版本。
此种方法优点在于利用WINCC的数据库的开放性,将EXCEL与数据库进行关联,可方便的读取所要查询的数据。
另外EXCEL文件可以按照要求编辑修改表格样式、数据格式等,方便用户存档及打印。
具体实现方法如下:1、在WINCC中新建变量归档2、新建EXCEL文件,用于读取变量归档数据3、打开EXCEL文件,按照要求编辑报表表格样式,在表格中添加“Microsoft Date and Time Picker Control6.0”控件,此控件用于设定要查询报表的日期4、在EXCEL表格中新建查询按钮,作为报表的查询触发器5、编辑代码,进入Visual Basic编辑器进行代码编写,代码中涵盖WINCC归档时间与本地时间的转换及变量与表格的关联性操作。
6、代码编辑完成后,需运行WINCC组态软件,打开新建的EXCEL文件,提示是否启用“宏”操作,此时要选择启用,进入报表表格界面,在日期控件中选择要查询的数据日期,点击查询按钮,归档变量数据就可以显示在对应的表格中,可保存,可打印,可修改。
以上两种报表均在1608009风机在线监测项目上应用。
对于VB代码编辑部分,只需要根据EXCEL表格的样式及变量归档数据名称做出相应的修改即可。
设计部:付友维2017年6月20日。
excel 表格和wincc的报表
如何使用WinCC DataMonitor基于Web发布浏览Excel报表文档 How to use WinCC DataMonitor publish and view excel document base on Web摘要本文介绍使用 WinCC DataMonitor 的 "Excel Workbooks",通过 Excel 表格显示 WinCC 项目的过程值、归档变量值和归档消息。
并可以通过 Web 发布浏览访问数据。
关键词WinCC,DataMonitor,ExcelKey Words WinCC,DataMonitor,ExcelA&D Service & Support Page 2-14目录1.WinCC DataMonitor是什么 ? (4)1.1 简介 (4)1.2 WinCC DataMonitor 的主要功能 (4)2.使用WinCC DataMonitor基于Web发布浏览Excel报表文档 (7)2.1 使用“Excel 工作簿向导”组态发布 Excel 工作簿 (7)2.2 在线显示浏览Excel 工作簿 (12)A&D Service & Support Page 3-141.WinCC DataMonitor是什么 ?DataMonitor 是 SIMATIC WinCC 工厂智能中用于数据显示和分析的一个组件,它基于WinCC 的实时、历史数据进行车间管理级的数据汇总和分析,借助标准工具(例如微软的 IE 浏览器或者 MS Office Excel)可以显示并分析 WinCC 上的过程信息和历史数据。
1.1 简介SIMATIC WinCC/DataMonitor 提供用于显示交互数据及分析当前过程状态和历史数据的分析工具集合。
DataMonitor 客户端是纯粹用于显示和评估来自 WinCC 的过程值或来自 WinCC 长期归档服务器的数据的系统。
wincc的excel报表实例
wincc的excel报表打印实例因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html 改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式word页面只要在jsp头设置如下指令:<%@page contentType="application/msword;charset=GBK" %>excel如下:<%@page contentType="application/vnd.ms-excel;charset=GBK" %>使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用wor d或excel打开该页面。
此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。
简单示例:使用word建立一文档,画表格如下:----------------------------| 用户名| 真实姓名| 性别|----------------------------| guest | 路人甲| 男|----------------------------保存为Web页test.htm,将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下:<%@ page contentType="application/msword;charset=GBK" %><%@ page import="java.sql.*" %><html xmlns:o="urn:schemas-micr osoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns="http://www.w3.or g/TR/REC-html40"><head><meta http-equiv=C ontent-Type content="text/html; charset=GB2312"><meta name=ProgId content=W ord.Document><meta name=Generator content="Microsoft Word 9"><meta name=Originator content="Microsoft Wor d 9"><title>用户信息</title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>evan zhao</o:Author><o:LastAuthor>evan zhao</o:LastAuthor><o:Revision>1</o:Revision><o:TotalTime>1</o:TotalTime><o:Created>2003-08-20T16:26:00Z</o:Created><o:LastSaved>2003-08-20T16:27:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Company>taiping</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Par agraphs><o:Version>9.2812</o:Version></o:DocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:PunctuationKerning><w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGr idV erticalSpacing><w:DisplayH orizontalDrawingGridEvery>0</w:D isplayH orizontalDrawingGr idEvery> <w:DisplayV erticalDrawingGr idEvery>2</w:D isplayVerticalDrawingGr idEvery><w:Compatibility><w:SpaceForUL><w:BalanceSingleByteDoubleByteW idth><w:DoNotLeaveBackslashAlone><w:ULTrailSpace><w:DoNotExpandShiftReturn><w:AdjustLineH eightInTable><w:UseFELayout></w:Compatibility></w:WordDocument></xml><![endif]--><style><!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-alt:SimSun;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:var iable;mso-font-signatur e:3 135135232 16 0 262145 0;}@font-face{font-family:"\@宋体";panose-1:2 1 6 0 3 1 1 1 1 1;mso-font-charset:134;mso-generic-font-family:auto;mso-font-pitch:var iable;mso-font-signatur e:3 135135232 16 0 262145 0;}/* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal{mso-style-parent:"";margin:0cm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph;mso-pagination:none;font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:宋体;mso-font-kerning:1.0pt;}/* Page D efinitions */@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section1{size:595.3pt 841.9pt;margin:72.0pt 90.0pt 72.0pt 90.0pt;mso-header-margin:42.55pt;mso-footer-margin:49.6pt;mso-paper-source:0;layout-gr id:15.6pt;}div.Section1{page:Section1;}--></style></head><body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'><div class=Section1 style='layout-gr id:15.6pt'><table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;border:none;mso-border-alt:solid w indowtext .5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'><tr><td w idth=189 valign=top style='width:142.0pt;border:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>用户名</span></p></td><td w idth=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;border-left:none;mso-border-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>真实姓名</span></p></td><td w idth=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;border-left:none;mso-border-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'>性别</span></p></td></tr><%Class.forName("sun.jdbc.odbc.JdbcOdbcDr iver");String url="jdbc:odbc:mydb";//连接mydb数据库Connection con=Driver Manager.getC onnection (url, "", "");try{Statement stmt=con.createStatement();//查询employee表ResultSet rs=stmt.executeQuery("select user_name, real_name, gender from employee ");while(rs.next()){%><tr><td w idth=189 valign=top style='width:142.0pt;border:solid w indowtext .5pt;border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span lang=EN-US><%=rs.getString("user_name")%></span></p></td><td w idth=189 valign=top style='width:142.05pt;border-top:none;border-left:none;border-bottom:solid w indowtext .5pt;border-right:solid w indowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-bor der-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"'><%=rs.getStr ing("real_name")%></span></p></td><td w idth=189 valign=top style='width:142.05pt;border-top:none;border-left:none;border-bottom:solid w indowtext .5pt;border-right:solid w indowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-bor der-left-alt:solid w indowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'><%=rs.getStr ing("gender")%></span></p></td></tr><%} // end whilers.close();stmt.close();} finally {con.close();}%></table><p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>。
WINCC+用户归档+VBS+EXCEL实时报表
ExcelApp.Quit
Set ExcelApp= Nothing
Exit For
End If
Next
End If
'************************Report waiting massgae***************************
Dim fso,folder
Dim type1
Dim patch,filename
Dim testposition,testnumber,startdate,printdate,brand,tyremodel,rim,tread,condition,load,speed,pressure,status
Dim objExcelApp,objExcelBook,objExcelSheet
On Error Resume Next
Dim ExcelApp,ExcelBook
Set ExcelApp = GetObject(,"Excel.Application")
If TypeName(ExcleApp) = "Application" Then
objExcelApp.Cells(n,10).Value=oRs.Fields(10).Value
objExcelApp.Cells(n,11).Value=oRs.Fields(11).Value
objExcelApp.Cells(n,12).Value=oRs.Fields(12).Value
startdate.Read
objExcelApp.cells(6,3).value=startdate.value
21.Wincc控件制作报表以及导出EXCEL方法介绍
21.Wincc控件制作报表以及导出EXCEL⽅法介绍假设希望做这样⼀个报表界⾯,可以根据⽇期查询:希望导出的excel报表⽂件在C盘根⽬录,是这个样⼦:接下来我们⼀步步实现这个功能。
1. Wincc历史趋势的数据库表结构有点不好理解,我们新建⼀个数据库名字叫做Report,新建⼀张表,结构是这个样⼦:注意开放sa⽤户,设置sa⽤户有管理report数据库权限,使⽤sql登陆模式。
2. 我们每5秒往report表写⼊⼀条记录,在全局VBS脚本写⼊如下代码:Option ExplicitFunction action'添加纪录Dim T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2Dim ors,conn,con,ssql,ocomDim PCNamePCName=hmiruntime.Tags("@LocalMachineName").ReadT1=HMIRuntime.Tags("温度1").ReadT2=HMIRuntime.Tags("温度2").ReadP1=HMIRuntime.Tags("压⼒1").ReadP2=HMIRuntime.Tags("压⼒2").ReadF1=HMIRuntime.Tags("流量1").ReadF2=HMIRuntime.Tags("流量2").ReadL1=HMIRuntime.Tags("液位1").ReadL2=HMIRuntime.Tags("液位2").ReadA1=HMIRuntime.Tags("分析仪1").ReadA2=HMIRuntime.Tags("分析仪2").ReadS1=HMIRuntime.Tags("转速1").ReadS2=HMIRuntime.Tags("转速2").Readcon="Provider = SQLOLEDB.1;password = sa;user id = sa;Initial Catalog =Report;Data Source = " & PCName & "\WINCC" Set conn=CreateObject("ADODB.Connection")conn.ConnectionString=conconn.Cursorlocation=3conn.openssql="insert into Report(CurDateTime,T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2) values(Getdate()," _& T1 & "," & T2 & "," & P1 & "," & P2 & "," & F1 & "," & F2 & "," & L1 & "," & L2 & "," & A1 & "," & A2 & "," & S1 & "," & S2 & ")"Set ors=CreateObject("ADODB.RecordSet")Set ocom=CreateObject("mand")Set ocom.activeconnection=connmandType=1mandText=ssqlSet ors=ocom.ExecuteSet ors=Nothingconn.closeSet conn=NothingEnd Function脚本中的函数不做解释。
WINCC报表详解
在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。
早期是由人工抄录然后统计出相关的报表。
进入计算机控制阶段,这份工作就需要工控软件来实现。
对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。
论坛上很多人都在寻求灵活高效的解决方法。
经过这段时间的网上讨论。
综合网友们的意见和建议,我们做了总结。
并结合WinCC软件本身作了相关的说明。
希望能对大家在以后的报表开发中有所帮助。
接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。
最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。
一.报表的需求分析从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。
1.内容需求内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系的处理,比如班组相关对应信息的统计分析等。
下面是一个很典型的报表需求,就很能说明这样的问题:图1. 月报表分析此报表是典型的工业现场应用,在数据采集没有难度。
唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。
此类报表在连续生产的行业需求很广泛。
比如:钢铁冶金行业需要一天24小时不停运转的系统。
还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部分数据的统计,比如汇总、求和、平均等。
如下图也是很典型的应用。
图2. 总分报表另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。
如下图。
图3. 复杂报表这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。
既有历史数据也有实时信息。
当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。
用户自己可以灵活的定义报表的内容和样式。
如何能在Excel中访问WinCC变量归档大数据
1 功能说明在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:图1: Excel中访问WinCC的历史数据生成报表选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。
2 软件环境本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20033 WinCC/Connectivity Pack 介绍WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC/Connectivity Pack 提供的OLE-DB接口才能够解压并读取这些数据。
3.1 连接字符串“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“其中:Catalog:WinCC运行数据库的名称注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。
建议使用WinCC系统变量“@DatasourceNameRT”获得当前的Catalog。
Data Source :服务器名称本地:“.\WinCC”或者“<计算机名称>\WinCC”远程:“<计算机名称>\WinCC”3.2 查询语句“TAG:R,<ValueID orValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]”其中:ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。
TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD hh:mm:ss.msc”。
最新wincc生成excel
1给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。
方便初学者学习!//log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次//如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。
//本程序主要是演示数据记录的过程。
//在c:\建立一个excel文件,该文件可以是你的报表模版Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim tagshijian,sheetname,username,zhushiDim tagdayDim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a1 8,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a3 5,a36,a37,a38,a39,a40Dim i,j,t,countDim msgDim patch,fnDim d,m,y,oh,mm,ssd=" "m="-"y="-"oh=":"mm=":"ss=""msg="记录报表成功"fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls"Set a1=HMIRuntime.Tags("a1")Set a2=HMIRuntime.Tags("a2")Set a3=HMIRuntime.Tags("a3")Set a4=HMIRuntime.Tags("a4")Set a5=HMIRuntime.Tags("a5")Set a7=HMIRuntime.Tags("a7") Set a8=HMIRuntime.Tags("a8") Set a9=HMIRuntime.Tags("a9") Set a10=HMIRuntime.Tags("a10") Set a11=HMIRuntime.Tags("a11") Set a12=HMIRuntime.Tags("a12") Set a13=HMIRuntime.Tags("a13") Set a14=HMIRuntime.Tags("a14") Set a15=HMIRuntime.Tags("a15") Set a16=HMIRuntime.Tags("a16") Set a17=HMIRuntime.Tags("a17") Set a18=HMIRuntime.Tags("a18") Set a19=HMIRuntime.Tags("a19") Set a20=HMIRuntime.Tags("a20") Set a21=HMIRuntime.Tags("a21") Set a22=HMIRuntime.Tags("a22") Set a23=HMIRuntime.Tags("a23")Set a25=HMIRuntime.Tags("a25") Set a26=HMIRuntime.Tags("a26") Set a27=HMIRuntime.Tags("a27") Set a28=HMIRuntime.Tags("a28") Set a29=HMIRuntime.Tags("a29") Set a30=HMIRuntime.Tags("a30") Set a31=HMIRuntime.Tags("a31") Set a32=HMIRuntime.Tags("a32") Set a33=HMIRuntime.Tags("a33") Set a34=HMIRuntime.Tags("a34") Set a35=HMIRuntime.Tags("a35") Set a36=HMIRuntime.Tags("a36") Set a37=HMIRuntime.Tags("a37") Set a38=HMIRuntime.Tags("a38") Set a39=HMIRuntime.Tags("a39") Set a40=HMIRuntime.Tags("a40")Set count=HMIRuntime.Tags("count")sheetname="Sheet1"tagshijian=NowSet objExcelApp=CreateObject("Excel.Application") objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activatecount.Readt=count.Value +1If t<4 Thencount.Write 4t=4Elsecount.Write tEnd IfIf t>10080 Thencount.Write 3t=4End IfFor t=t To tWith objExcelApp.worksheets(sheetname).cells(t,1).value=tagshijiana1.Read.cells(t,2).value=a1.Valuea2.Read.cells(t,3).value=a2.Valuea3.Read.cells(t,4).value=a3.Valuea4.Read.cells(t,5).value=a4.Valuea5.Read.cells(t,6).value=a5.Valuea6.Read.cells(t,7).value=a6.Valuea7.Reada8.Read.cells(t,9).value=a8.Value a9.Read.cells(t,10).value=a9.Value a10.Read.cells(t,11).value=a10.Value a11.Read.cells(t,12).value=a11.Value a12.Read.cells(t,13).value=a12.Value a13.Read.cells(t,14).value=a13.Value a14.Read.cells(t,15).value=a14.Value a15.Read.cells(t,16).value=a15.Value a16.Reada17.Read.cells(t,18).value=a17.Value a18.Read.cells(t,19).value=a18.Value a19.Read.cells(t,20).value=a19.Value a20.Read.cells(t,21).value=a20.Value a21.Read.cells(t,22).value=a21.Value a22.Read.cells(t,23).value=a22.Value a23.Read.cells(t,24).value=a23.Value a24.Read.cells(t,25).value=a24.Value a25.Reada26.Read.cells(t,27).value=a26.Value a27.Read.cells(t,28).value=a27.Value a28.Read.cells(t,29).value=a28.Value a29.Read.cells(t,30).value=a29.Value a30.Read.cells(t,31).value=a30.Value a31.Read.cells(t,32).value=a31.Value a32.Read.cells(t,33).value=a32.Value a33.Read.cells(t,34).value=a33.Value a34.Reada35.Read.cells(t,36).value=a35.Value a36.Read.cells(t,37).value=a36.Value a37.Read.cells(t,38).value=a37.Value a38.Read.cells(t,39).value=a38.Value a39.Read.cells(t,40).value=a39.Value a40.Read.cells(t,41).value=a40.ValueEnd WithNextobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//SAVE子程序//保存文件//读出系统时间,把文件保存为以日期为文件名的文件//每周日的23:59:10执行一次Option ExplicitFunction actionDim objExcelApp,objExcelbook,objExcelSheetDim sheetname,usernameDim tagdayDim i,j,tDim msgDim patch,fnfn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))+CStr(Hour(Now)) &CStr(Minute(Now))patch="c:\"&fn&".xls"sheetname="Sheet1"Set objExcelApp=CreateObject("Excel.Application")objExcelApp.visible=FalseobjExcelApp.workbooks.open "C:\Table.xls"objExcelApp.worksheets(sheetname).activateobjExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.ActiveWorkbook.SaveobjExcelApp.ActiveWorkbook.closeobjExcelApp.ActiveWorkbook.QuitSet objExcelApp=NothingEnd Function//delete子程序//删除模版,拷贝空白模版到当前目录//有人会问,为什么不用vb清空当前已经记录数据的模版文件//问的好,如果这个模版里面已经存了几万条数据了呢?//所以最快的方法是用vc脚本,将当前模版删除,拷贝一个空的模版到c:/ /每周日的23:59:30执行一次#include "apdefap.h"int gscAction( void ){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END#pragma code("kernel32.dll")long CopyFileA(LPCTSTR,LPCTSTR,long);long DeleteFileA(LPCTSTR);#pragma code()DeleteFileA("C:\\Table.xls");CopyFileA("C:\\bak\\Table.xls","C:\\Table.xls",TRUE);// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}2。
wincc与access形成EXCEL报表的实现(自己写的)
使用wincc、access、excel生成生产报表,希望对大家有所帮助!Excel需要安装datetime控件Excel的使用:在Excel表格中,将每个工位分为一个表格来用,右击底部表格,查看代码。
在代码段,将数据库的实际存放路径相对应。
如需该表头,在底部的表格value后边括号中修改。
在wincc中打开excel文件的方法:ProgramExecute("D:\\Program Files\\Microsoft Office\\OFFICE11\\excel.exe D:\\大自然报表.xls");//说明:双引号里边有两部分路径组成(execel安装路径、excel表格文件所在路径)路径之间//有空格隔离;路径阶层有双斜杠(\\)隔离。
Wincc中用于向access形成的数据源存储数据脚本程序:数据库:wincce; 表3;ODBC名称:wincce1A:B计量泵电流1B:B计量泵频率设置1C:B计量泵频率1D:A计量泵电流1E:A计量泵频率设置1F:A计量泵频率程序:Dim objConnectionDim strConnectionStringDim a,b,c,d,e,f,g,h,i,j,kDim strSQLDim objCommandstrConnectionString = "Provider=MSDASQL;DSN=wincce;UID=;PWD=;"a = HMIRuntime.Tags("B计量泵电流").Readb = HMIRuntime.Tags("B计量泵频率设置").Readc = HMIRuntime.Tags("B计量泵频率").Readd = HMIRuntime.Tags("A计量泵电流").Reade = HMIRuntime.Tags("A计量泵频率设置").Readf = HMIRuntime.Tags("A计量泵频率").ReadstrSQL = "INSERT INTO 表 3 (时间,1A,1B,1C,1D,1E,1F) VALUES (Now(),"&a&","&b&","&c&","&d&","&e&","&f&");"Set objConnection = CreateObject("ADODB.Connection")objConnection.ConnectionString = strConnectionStringobjConnection.OpenSet objCommand = CreateObject("mand")With objCommand.ActiveConnection = objConnection.CommandText = strSQLEnd WithobjCommand.ExecuteSet objCommand = NothingobjConnection.CloseSet objConnection = NothingExcel中用于对数据进行通讯的VBA程序Dim sstart, sstop, bstart, btop As StringPublic Function a()'首先引用ado --------- 點“工具-引用”再找到Microsoft ActiveX Date Objects X.X LibraryWorksheets("蒸馏塔2").StandardWidth = 14Worksheets("蒸馏塔2").Columns.Font.Size = 8Dim YEAR, MONTH, DAY As StringDim conn As New ADODB.ConnectionDim connstr As StringDim db As StringDim rs As New ADODB.RecordsetDim i, j As Long, rowa As Longdb = "D:\winccb.mdb"connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbOn Error Resume Nextconn.Open connstrrs.Open "select * from 表3 where 时间between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "# ", conn, 1, 3If rs.EOF Or rs.BOF ThenMsgBox "It is nothing."Elserowa = 3Worksheets("蒸馏塔2").Cells(2, 1).Value = "时间"Worksheets("蒸馏塔2").Cells(2, 2).Value = "测取泵流量"Worksheets("蒸馏塔2").Cells(2, 3).Value = "测取泵流量"Worksheets("蒸馏塔2").Cells(2, 4).Value = "E603温度"Worksheets("蒸馏塔2").Cells(2, 5).Value = "E504温度"Worksheets("蒸馏塔2").Cells(2, 6).Value = "E501温度"Worksheets("蒸馏塔2").Cells(2, 7).Value = "蒸馏塔冷却器温度"Worksheets("蒸馏塔2").Cells(2, 8).Value = "蒸馏塔回流流量"Do Until rs.EOFFor j = 0 To rs.Fields.CountWorksheets("蒸馏塔2").Cells(rowa, j).Value = rs(j - 1)Next jrowa = rowa + 1rs.MoveNextLoopEnd IfEnd FunctionPrivate Sub CommandButton1_Click() aEnd SubPrivate Sub CommandButton2_Click() Worksheets("蒸馏塔2").Cells.Clear End Sub。