WINCC+VBS报表

合集下载

WinCC通过VBS的Excel文件操作

WinCC通过VBS的Excel文件操作
2.4 移动文件 objFSO.MoveFile "C:\Path\File.txt" "C:\Path\File2.txt"
2.5 删除文件 objFSO.DeleteFile "C:\Path\File.txt"
WinCC 通过 VBS 的 Excel 文件操作
二、 Excel 文件访问
1. Application 对象 WinCC 下使用 VBS 访问 Excel ,实际上是对 Excel 的 Application 对象成员进行编程。 Application 对象是 Excel 对象模型中最高级别的对象,表示 Excel 程序自身。 Application 对 象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开的当前对象。在
对象 /集合 FileSystemObject
Drive
Drives File Files Folder Folders TextStream
类型 主对象
对象
集合 对象 集合 对象 集合 对象
描述 包含用来创建、删除和获得有关信息以及通常用来操作驱 动器、文件夹与文件的方法和属性。和该对象相关联的许 多方法,与其他 FSO 对象中的方法完全相似;它们是为 了方便才被提供的。 包含用来收集信息的方法和属性,这些信息是关于连接在 系统上的驱动器的,如驱动器的共享名和它有多少可用空 间。可以是硬盘、光驱、 RAM 磁盘、网络共享驱动器 等。 提供驱动器的列表,这些驱动器物理地或逻辑地与系统相 连接。 Drives 集合包括所有驱动器,与类型无关。 包含用来创建、删除或移动文件的方法和属性,也用来向 系统询问文件名、路径和多种其他属性。
Tag1 、Tag2 、
4.1 创建 WinCC 起始画面 Start.pdl ,并在“打开画面”事件中加入如下脚本:

西门子wincc数据报表的实现方式

西门子wincc数据报表的实现方式

西门子wincc数据报表的实现方式【摘要】随着工业领域的不断发展,用户需求一种以人机界面为控制主体的视窗控制体系的过程监控系统,以此来取代原来的以现场操作按钮和仪表为主的操作体系。

通过开放性、灵活性的可视化界面,迅速并直接的处理生产过程中的事件信息。

凭借这种战略思想,WINCC,运行于Windows系统下的控制中心,已发展成为工业市场领域的领导者,乃至业界遵循的标准。

Wincc集生产自动化和过程自动化于一体,应用于各种工业自动化领域,是提高工厂生产效率的上乘之选,并支持多种语言。

工业生产中,报表系统通常是控制系统中非常重要的一部分,是企业管理的基本措施和途径,它通常用来记录重要的现场工艺参数和统计信息。

早期,都是由人工记录的方式进行统计汇总,数据也只能有一种几乎只有记录员才能理解的表现形式,且这种形式难于更改。

当进入计算机时代后,报表这部分工作完全可以由计算机软件来实现,数据动态化,格式多样化,用户可以自己修改数据或格式。

针对自动化工程师而言,如何利用wincc软件来开发适合用户需求的报表,并且高效灵活的解决统计数据是自动化工程师必须掌握的一门技术,也是企业日常生产维护和管理中不可或缺的管理手段之一。

报表的变现形式分为许多种,大体上可分为两种形式:曲线格式和表格格式。

曲线形式主要是利用WINCC自带控件来实现,在控件属性中,可对趋势、常规、字体、趋势窗口、时间轴、数值轴、工具栏、状态栏、在线组态、导出中具体参数进行设置,以符合用户的生产需求和审美要求。

例如,时间轴可设成1分钟,1小时或者1天的形式,数值轴可以设置成根据实际测量值实时改变数值轴的范围。

应用在线趋势曲线的前提条件是,用户需要在变量记录里设置需要归档的变量内容和归档周期等一系列参数。

针对于一些特殊归档要求,曲线形式的归档可能满足不了用户的需求,往往用户需要生成一种支持打印功能并以表格形式查询的数据归档报表。

针对于这类复杂的报表,可以通过用户归档和Wincc报表编辑器来实现此类功能。

如何实现wincc用VBS做报表

如何实现wincc用VBS做报表

如何实现wincc用VBS做报表1概述介绍如何在WinCC项目中使用VBS脚本读取变量归档值,并把获取的数据保存成新的Excel 文件。

文中示例代码仅适用于以绝对时间间隔方式访问。

2软件环境Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20073访问原理WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

关于WinCC连通性软件包的详细信息请参考连接:37436159当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。

连接字符串格式为“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中Catalog 为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。

Data Source 为服务器名称,格式为“<计算机名称>\WinCC”。

3.1 查询语句格式数据的查询语句的格式要求如下:8 字节长ValueID 的请求:TAG_LLVID:R,<ValueID或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]4 字节长ValueID 的请求:TAG:R,<ValueID 或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]其中:ValueID:过程值归档变量的唯一标识符。

Winccflexible报表

Winccflexible报表

14
WinCC Flexible
Hardware Software Workshop
WinCC flexible 如何创建报表系统
一、报表系统概述
4.使用工具箱
工具箱的对象用于设计报表和组态输出数据。 报表中可以根据需要添加“简单对象”和“报表对象”, 添加方法跟画面中添加对象方法相同。 某些对象在报表中使用时功能受到限制,例如“IO域”只 能用作输出域。报表中不能使用“简单对象”中的“按钮”、 “开关”和“棒图”等对象。
一、报表系统概述
1.报表编辑器组成
报表编辑器用于编辑报表文件。在打开的项目窗口中,双 击左侧项目视图中的“报表”组的“新建报表”,在中间的工 作区域即可打开如图所示的报表编辑器。
6
WinCC Flexible
Hardware Software Workshop
WinCC flexible 如何创建报表系统
WinCC flexible 如何创建报表系统
四、创建项目报表
• ቤተ መጻሕፍቲ ባይዱ目报表概念
输出数据的选择取决于所选的对象或组件,数据的组成取 决于所选的输出格式为“紧凑”还是“完整”,并且在系统生 成项目报表时进行。
如果输出WinCC flexible的多个或全部组件的组态数据, 则为每个组件输出单独的章节。考虑到可能的数据量,同时为 每个WinCC flexible画面输出独立的章节。
所示的属性视图。
16
WinCC Flexible
Hardware Software Workshop
WinCC flexible 如何创建报表系统
二、创建配方报表
• 组态配方报表常规属性
在属性视图的“常规”组中组态配方报表的常规属性,为 报表选择要打印的配方和配方记录。打印配方有三种选择: • “名称”:只打印一个配方,设置该配方的名称。 • “全部”:打印所有的配方。 • “编号”:打印连续若干个配方,需要设置开始打印的第一个 配方和最后一个配方。

VBS wincc报表模板批量生产

VBS wincc报表模板批量生产

Excel批量模板生成文件用于WINCC报表生成。

dim i,j,mDim fsoOn Error Resume Next‘**************************************************生成目录set fso=createobject("scripting.filesystemobject")if fso.FolderExists("F:\报表") then '判断生成目录为报表生成做准备如果存在什么都不干elseSet objFolder=fso.CreateFolder("F:\报表")'如果不存在则生成它(下面的一样)end ifif fso.FolderExists("F:\报表\日报") thenelseSet objFolder=fso.CreateFolder("F:\报表\日报")end iffor m=1 to 12if fso.FolderExists("F:\报表\日报\"&m&"月") thenelseSet objFolder=fso.CreateFolder("F:\报表\日报\"&m&"月")end ifnextSet fso = Nothing'**************************************************生成目录On Error Resume Nextset fso1=createobject("scripting.filesystemobject")Filename="F:\Repot.xls" '模板提取'**************************************************生成保存文件Set oExcel= CreateObject("Excel.Application")Set oWb = oExcel.Workbooks.Open(Filename) '打开Filenames的文件Set fso1 = CreateObject("Scripting.FileSystemObject")for i=1 to 12 '12个月for j=1 to 31 '每个月算31天patch="F:\报表\日报\"&i&"月\"&Year(Now )&"年"&i&"月"&j&"日.xls" '组建地址If fso1.FileExists(patch) Then '判断文件是否存在如果存在什么都不干else oExcel.ActiveWorkBook.SaveAs( patch ) '假如不存在则另存为(地址)end ifnextnext'**************************************************生成保存文件Set fso1 = NothingoExcel.WorkBooks.CloseoExcel.QuitSet oExcel = NothingOn Error Resume Next'********************************************结束进程Sub CloseProcess(sProcessName)For each Process inGetObject("winmgmts:{impersonation Level=impersonate}").InstancesOf("Win32_process") '利用wimp遍历所有进程If Process. Name = sProcessName Then '判断进程名称Process. terminate '关闭指定进程End IfNextEnd Sub'********************************************结束进程CloseProcess "EXCEL.EXE"'********************************************结束EXCELVBS Excel写入数据用于WINCC与EXCEL 报表生成,用动作定时产生。

wincc报表例子vb

wincc报表例子vb

用VBS脚本实现,就是把文件名称以变量的形式表示。

参考'关闭保存Dim patch,filenamefilename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(N ow))+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第一段:Option ExplicitFunction actionDim fso,myfile,daystr,dstr,fnamedstr = FormatDateTime(Date)fname="d:\" + dstr + ".xls"Set fso = CreateObject("s cripting.FileSystemObject")Set MyFile = fso.GetFile("d:\ExcelExample.xls")MyFile.Copy (fname)End Function第二段:Option ExplicitFunction actionDim fso,myfilep,daystr,dstr,fnameSet fso = CreateObject("s cripting.FileSystemObject")dstr = FormatDateTime(Date)HMIRuntime.Tags("i").write fso.GetAbsolutePathName("")fname=HMIRuntime.ActiveProject.Path++dstr+.xlsDim ObjExcelAppSet objExcelApp = CreateObject("Excel.Application")objExCelApp.Visible = TrueobjExcelApp.Workbooks.Open fnameDim ii=1Do While objExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue<>""i=i+1LoopobjExcelApp.worksheets ("sheet1").Cells(i, 2).VAlue = HMIRuntime.Tags("I-COD").read objExcelApp.worksheets ("sheet1").Cells(i, 3).VAlue = HMIRuntime.Tags("I-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 4).VAlue = HMIRuntime.Tags("I-PH").readobjExcelApp.worksheets ("sheet1").Cells(i, 5).VAlue = HMIRuntime.Tags("I-F").readobjExcelApp.worksheets ("sheet1").Cells(i, 6).VAlue = HMIRuntime.Tags("I-FI").readobjExcelApp.worksheets ("sheet1").Cells(i, 7).VAlue = HMIRuntime.Tags("O-COD").read objExcelApp.worksheets ("sheet1").Cells(i, 8).VAlue = HMIRuntime.Tags("O-SS").readobjExcelApp.worksheets ("sheet1").Cells(i, 9).VAlue = HMIRuntime.Tags("O-NH4N").read objExcelApp.worksheets ("sheet1").Cells(i, 10).VAlue = HMIRuntime.Tags("0-P").readobjExcelApp.worksheets ("sheet1").Cells(i, 11).VAlue = HMIRuntime.Tags("O-F").read objExcelApp.worksheets ("sheet1").Cells(i, 12).VAlue = HMIRuntime.Tags("O-FI").read objExcelApp.worksheets ("sheet1").Cells(i, 1).VAlue =NowobjExcelApp.ActiveWorkbook.SaveobjExcelApp.Workbooks.ClosEobjExcelApp.QuiTSet ObjEXceLapp = NothingEnd Functionc。

WINCC报表详解

WINCC报表详解

在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。

早期是由人工抄录然后统计出相关的报表。

进入计算机控制阶段,这份工作就需要工控软件来实现。

对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。

论坛上很多人都在寻求灵活高效的解决方法。

经过这段时间的网上讨论。

综合网友们的意见和建议,我们做了总结。

并结合WinCC软件本身作了相关的说明。

希望能对大家在以后的报表开发中有所帮助。

接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。

最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。

一.报表的需求分析从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。

1.内容需求内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系的处理,比如班组相关对应信息的统计分析等。

下面是一个很典型的报表需求,就很能说明这样的问题:图1. 月报表分析此报表是典型的工业现场应用,在数据采集没有难度。

唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。

此类报表在连续生产的行业需求很广泛。

比如:钢铁冶金行业需要一天24小时不停运转的系统。

还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部分数据的统计,比如汇总、求和、平均等。

如下图也是很典型的应用。

图2. 总分报表另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。

如下图。

图3. 复杂报表这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。

既有历史数据也有实时信息。

当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。

用户自己可以灵活的定义报表的内容和样式。

关于WinCC通讯、报表及变量管理的总结

关于WinCC通讯、报表及变量管理的总结

关于WinCC通讯、报表及变量管理的总结关于WinCC的总结一、通讯问题1、采用MPI与SIMATIC S7通信(1)PC上MPI通信卡的安装和设置打开PC\PG接口,选择PC Adapter适配器,再单击属性选择‘连接到’(一般是USB或者RS232),最后单击确定。

(2)选择WinCC通信卡在WinCC的变量管理器中添加驱动程序,选择MPI,然后右击MPI 选择系统参数,此刻需要需要说明的是在‘逻辑设备名称’选项中要根据情况选择,如果有适配器则选择相应的适配器,否则应该选择仿真器(PLCSIM(MPI))。

(3)WinCC的MPI通道单元连接右击MPI通道单元,单击属性找到连接参数将插槽号改为2即可。

2、采用PROFIBUS通信采用PROFIBUS通信其设置大致相同其通信卡都是(CP5611或CP5613)其他就不在赘述了与MPI大同小异。

3、通道单元(1)采用这种通信方法首先需要安装(CP1613或普通网卡),然后在PG\PC接口找到TCP\IP,最后确定。

(2)其他地方的设置于MPI相同,需要注意的是在‘逻辑设备名称’中要选择ISOInd.Ethernet.二、关于报表到目前为止本人只会采用两种办法制作报表1、采用控件(在线表格)首先在报表编辑器里面将需要的表格制作好,静态部分按照所需制作即可,而动态部分需右击在线表格,点击参数分配将参数一一分配到表格里去(注意:在做表格之前需要先在变量纪录将项目进行归档,至于归档按照向导指示即可)2、将报表设计好之后命名(命名没有特殊要求)3、打开打印设置,新建打印布局此时我们应该选择上述做好的表格,名字要和上述表格命名相同4、打开画面编辑器把相应的控件拖进去(主要是在线报表和趋势两个控件)5、在画面编辑器里拖一个按钮出来,命名打印,鼠标动作右击C 动作打开标准函数,选择标准函数的Report里面的RPTjobprint在弹出的新的一列代码中将RPTjobprint的名字改成打印作业的名字即可。

基于数据库查询的WINCC报表制作步骤

基于数据库查询的WINCC报表制作步骤

基于数据库查询的WINCC报表制作步骤一、报表优点:1、数据写入SQL数据表,数据不容易丢失,保存时间长,数据库容量大;2、数据从数据库里面查询和统计,冗余少,速度快,具有直接性、可靠性和稳定性。

3、查询方便灵活,依靠SQL强大的查询和统计功能,想怎么查询就怎么查询,并依靠MSFlexGrid控件做显示,做出来的不仅报表美观大方。

而且还可根据做出很复杂的报表。

二、报表制作流程1、创建SQL数据库,打开Microsoft SQL Server2005,选择SQL Server Manage Studio,点击Connect2、在Databases,右键选择New Database,在Database Name处输入数据库名称,如SQL-Report3、点击Databases,此时可以看到刚才新建的数据库SQL-Report,点击该数据库,右击Tables,选择New Table,在Column Name、Data Type处输入变量名称并选择数据类型,输入完成后,保存并输入表格名称。

4、在WINCC的全局脚本中编写用于写入SQL报表的脚本程序,脚本正常运行后,打开Databases---SQL-Report---Tables---Report会看到记录的数据二、 WINCC报表画面组态在组态报表画面时,需要用到MSFlexGrid控件、DT Picker控件。

选定ActiveX Controls,右键选择Add/Remove,从弹出菜单中选择Microsoft FLexGrid Control,Version 6.0和Microsoft Date and Time Picker Control 6.0(SP4)控件。

从ActiveX Controls中将这两个控件拖到日报表画面,可以在其属性中更改控件的名称,设置MSFlexGrid控件属性。

注意:通常情况下,直接选择Microsoft FLexGrid Control,Version 6.0控件时,需要注册。

WINCC报表详细设计步骤

WINCC报表详细设计步骤

无锡康博自动化设备工程有限公司WINCC报表详细做法2014年2月10日珍藏版(如有雷同,就是盗版)一、报表的需求分析从需求上讲报表一般分为:①内容上的需求:涉及求和、平均、最大值和最小值的计算,同时还有复杂报表中混合排列上的处理。

②样式上的需求:简单报表的样式多为固定格式,固定内容。

复杂报表的样式可以有用户自己设计和决定显示的内容,甚至涉及历史趋势及报警信息。

③任务上的需求:报表不仅能显示查看,重要的是打印任务,WINCC的全局脚本能够实现事件触发打印或者定时打印。

报表实例:汉阴污水厂二、WINCC的数据存储④WINCC自带强大的数据归档功能,WINCC的数据记录已包含周期记录归档、非周期动作触发、动作触发的周期记录,甚至在数据处理中可以自动统计出平均值、最大值、最小值以及求和等数据信息。

④对于过程归档的访问,我们可以使用WINCC的在线表格,报表编辑器中自带的打印控件实现报表数据记录功能。

④对于存储数据的访问,WINCC提供了另外一个数据存储和处理工具就是用户归档。

报表实例:用户归档界面三、报表的具体做法关键词:④①报表编辑④②用户归档④③全局脚本④④创建打印任务④⑤画面编辑关于报表编辑器④WINCC的报表制作完成后存储在当前项目下的PRT文件夹内,可以直接复制粘贴到其他项目内使用,只需要修改数据库链接变量即可。

④对于大量数据信息存储的项目,可以创建多张报表进行分类,更准确直接的查看和生成报表。

④每一张报表对应一个新的打印作业,并且需要与用户归档里记录的数据库信息一一对应,下面将一一介绍详细。

报表编辑器—编辑报表报表编辑器—编辑报表动态数据库的创建链接报表编辑器—编辑报表动态数据库的创建链接报表编辑器—编辑报表静态文本的编辑报表编辑器—编辑报表一张完整的报表格式,可以查询10个数据,如果数据较多,可以创建多张报表关于用户归档④WINCC变量记录是系统的存储部分,使用的是SQL数据块。

而用户归档是基于数据库而生成的记录表。

WINCC+用户归档+VBS+EXCEL实时报表

WINCC+用户归档+VBS+EXCEL实时报表
ExcelApp.Workbooks.Close
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

WinccV7.3使用VBS脚本读取excel文件数值

WinccV7.3使用VBS脚本读取excel文件数值

WinccV7.3使用VBS脚本读取excel文件数值WinccV7.3 使用VBS脚本读取excel文件数值案例:wincc项目路径下有一个excel文件,数据表sheet1内容如下:现在我们需要把这个文件中的数据读取出来,显示在输入输出域当中,本例以读取R1C1和R2C2为例。

在wincc页面上放置两个输入输出域,名字分别为R1C1和R2C2,R1C1数据类型为字符串,R2C2数据类型为十进制数,页面上放置一个按钮,用于读取数据。

wincc新建一个内部变量path,用于存放excel文件的路径。

在wincc 页面打开事件中写入一下VBS脚本。

Sub OnOpen()Dim pathSet path=hmiruntime.Tags("path")path.write HMIRuntime.ActiveProject.Path & "\\myxls.xlsx"End Sub在按钮的点击事件中写入以下脚本:Sub OnClick(Byval Item)Dim xlApp,xlBook,pathDim r1c1,r2c2Set r1c1=ScreenItems("r1c1")Set r2c2=ScreenItems("r2c2")path=HMIRuntime.Tags("path").ReadSet xlApp=CreateObject("excel.application")xlApp.Visible=FalsexlApp.Workbooks.Open pathxlApp.Worksheets("Sheet1").Activater1c1.outputvalue=xlApp.Worksheets("Sheet1").cells(1,1).valuer2c2.outputvalue=xlApp.Worksheets("Sheet1").cells(2,2).value xlApp.Workbooks.ClosexlApp.QuitSet xlApp=NothingEnd Sub经测试可以实现需要的功能。

WinCC数据报表实现方法介绍

WinCC数据报表实现方法介绍

n=oRs.RecordCount' MsgBox n If (n>0)Then oRs.MoveFirst n=0 Sum = 0 Avg = 0 Min = oRs.Fields(2).Value Max = oRs.Fields(2).Value Do While Not oRs.EOF n=n+1 V = oRs.Fields(2).Value Sum = Sum + V If V>Max Then Max = V If V<Min Then Min = v oRs.MoveNext Loop oRs.Close If(n>1) Then Avg = Sum / n HMIRuntime.Tags("incount").Write n HMIRuntime.Tags("AavgTag").Write FormatNumber(Avg,2) HMIRuntime.Tags("AmaxTag").Write FormatNumber(Max,2) HMIRuntime.Tags("AMinTag").Write FormatNumber(Min,2) Else HMIRuntime.Trace "selection return no fields"&vbNewLine End If conn.Close Set oCom= Nothing Set oRs=Nothing Set conn=Nothing ' Printer0.Read If Printer0.Value = 0 Then Printer0.Write 1 Else Printer
',sum(fuliao3) as '3# '

21.Wincc控件制作报表以及导出EXCEL方法介绍

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数据报表实现方法介绍 How use WinCC create data report摘要 本文对数据报表的需求进行了分析,结合WinCC就复杂数据报表的实现进行了介绍。

关键词WinCC,报表Key Words WinCC, ReportIA&DT Service & Support Page 2-34目录WinCC报表实现方法综述 (1)一.报表的需求分析 (4)1.内容需求 (4)2.报表样式和打印任务 (6)二.WinCC的报表系统 (7)1.数据存储 (7)2.数据分析和输出 (9)三.复杂报表的WinCC报表系统实现分析 (12)1.普通归档结合Connectivity Pack实现报表 (12)2.用户归档实现分总式报表 (19)四.WinCC报表功能总结 (24)五.使用脚本和EXCEL实现报表 (24)1.在WINCC中使用VBS脚本通过EXCEL实现报表 (24)2.如何使用EXCEL访问WinCC中的数据实现报表 (29)IA&DT Service & Support Page 3-34在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。

早期是由人工抄录然后统计出相关的报表。

进入计算机控制阶段,这份工作就需要工控软件来实现。

对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。

论坛上很多人都在寻求灵活高效的解决方法。

经过这段时间的网上讨论。

综合网友们的意见和建议,我们做了总结。

并结合WinCC软件本身作了相关的说明。

希望能对大家在以后的报表开发中有所帮助。

接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。

最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。

一.报表的需求分析从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。

最新wincc生成excel

最新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使用VBS读取报警记录数据到EXCEL

WinCC使用VBS读取报警记录数据到EXCEL

【WinCC使用VBS读取报警记录数据到EXCEL1、概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel 文件。

2、软件环境WindowsXPSP3中文版、WinCC7.0SP2ASIA、Microsoft office Excel 20073、访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。

连接字符串格式为“ Provider=WinCCOLEDBProvider.1; Catalog二***; Data Source二***; ”,其中:Catalog 为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog 会发生变化。

建议使用WinCC内部变量“ @DatasourceNameRT获得当前项目的Catalog 。

Data Source 为服务器名称,格式为“ <计算机名称>\Wi nCC”。

3.1 查询语句格式查询语句的格式要求如下:AIARMVIEW:SELECT * FROM [ WHERE-optio nal ]其中参数信息如下所示:ViewName数据库表名。

必须用需要的语言指定该表。

比如:中文字符表名为:ALGVIEWCHT英文字符表明为:ALGVIEWENU 等。

Condition :为过滤标准。

详细说明请参见下表:3 . 2查询结果表1查询参数表查询结果作为记录集返回。

可以根据需要有选择的返回特定的数据集。

例如:oRs.Fields(0).Value 返回的是消息的编号;oRs.Fields (2).Value 返回的是消息的时间戳;oRs.Fields(37).Value 返回的是消息文本的内容。

记录集的结构如下表所示:表2记录集结构表2记录集结构表3记录集结构(续表)注意:WinCC勺归档数据是使用UTC(协调世界时)时间保存的。

如何实现wincc用VBS做报表

如何实现wincc用VBS做报表
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
tagDSNName.Read
Set LocalBeginTime = HMIRuntime.Tags("strBeginTime")ﻫLocalBeginTi.Read
Set LocalEndTime = HMIRuntime.Tags("strEndTime")
当使用 OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。连接字符串格式为“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中Catalog为WinCC运行数据库的名称, 当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。建议使用WinCC内部变量 “@DatasourceNameRT” 获得当前项目的Catalog。Data Source 为服务器名称,格式为“<计算机名称>\WinCC”。
ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]ﻫ其中:
ValueID:过程值归档变量的唯一标识符。
ValueName:过程值归档变量的名称,格式为“ArchiveName\Value_Name”,可以使用多个名称。
TimeBegin,TimeEnd:时间范围,格式 “YYYY-MM-DD hh:mm:ss.msc”。
2软件环境ﻫWindows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2007
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WINCC+VBS报表
1概述
介绍如何在WinCC项目中使用VBS脚本读取变量归档值,并把获取的数据保存成新的Excel文件。

文中示例代码仅适用于以绝对时间间隔方式访问。

2软件环境
Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2007
3访问原理
WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

关于WinCC连通性软件包的详细信息请参考连接:37436159
当使用 OLE-DB方式访问数据库时关键需要注意连接字符串的写法
和查询语句的格式。

连接字符串格式为
“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使
用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。

Data Source 为服务器名称,格式为“<计算机名
称>\WinCC”。

3.1 查询语句格式
数据的查询语句的格式要求如下:
8 字节长 ValueID 的请求:
TAG_LLVID:R,<ValueID或
ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep> ]
4 字节长 ValueID 的请求:
TAG:R,<ValueID 或
ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep> ]
其中:
ValueID:过程值归档变量的唯一标识符。

ValueName:过程值归档变量的名称,格式为
“ArchiveName\Value_Name”,可以使用多个名称。

TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD
hh:mm:ss.msc”。

SQL_Clause:SQL 语法中的过滤标准。

TimeStep:时间间隔。

使用 <TimeStep> 时,必须将 <TimeBegin> 指定为绝对时间。

禁止使用相对语句“0000-00-00
00:00:00.000”。

其中ValueID和ValueName的对应关系如下图所示:。

相关文档
最新文档