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的名字改成打印作业的名字即可。

  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的对应关系如下图所示:。

相关文档
最新文档