欢迎来到天天文库
浏览记录
ID:43442407
大小:366.39 KB
页数:14页
时间:2019-10-01
《WINCC+VBS报表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1概述介绍如何在WinCC项目中使用VBS脚本读取变量归档值,并把获取的数据保存成新的Excel文件。文中示例代码仅适用于以绝对时间间隔方式访问。2软件环境WindowsXPSP3中文版、WinCC7.0SP2ASIA、MicrosoftofficeExcel20073访问原理WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。关于WinCC连通性软件包的详细信息请参考连接:37436159当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询
2、语句的格式。连接字符串格式为“Provider=WinCCOLEDBProvider.1;Catalog=***;DataSource=***;”,其中Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时,Catalog会发生变化。建议使用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。DataSource为服务器名称,格式为“<计算机名称>WinCC”。3.1查询语句格式数据的查询语句的格式要求如下:8字节长ValueID的请求:TAG_LLVID:R,3、lueID或ValueName>,,[,][,]4字节长ValueID的请求:TAG:R,,,[,][,]其中:ValueID:过程值归档变量的唯一标识符。ValueName:过程值归档变量的名称,格式为“ArchiveNameValue_Name”,可以使用多个名称。TimeBegin,TimeEnd:时间范围,格式“YYYY-4、MM-DDhh:mm:ss.msc”。SQL_Clause:SQL语法中的过滤标准。TimeStep:时间间隔。使用时,必须将指定为绝对时间。禁止使用相对语句“0000-00-0000:00:00.000”。其中ValueID和ValueName的对应关系如下图所示:图1ValueID和ValueName的对应关系3.2几种常用的查询需求和语句1)绝对时间间隔2)相对时间间隔请注意,查询不能包含任何空格。习惯上,执行绝对时间查询时需要将查询的时间条件转换成UTC(协调世界时)时间。执行相对时间5、查询时请一定要注意相对时间的格式。建议使用MsgBox或者HMIRuntime.Trace等方式输出数值以检查格式是否正确。3.3查询结果查询结果作为记录集返回。过程值归档的记录集结构如下表所示:表1记录集结构注意,WinCC的归档数据是使用UTC(协调世界时)时间保存的。因此在对数据进行查询和显示时,需要对时间进行适当的转换。4组态介绍(以绝对时间间隔为例)4.1准备工作1)创建变量其中:NewTag用于创建过程值归档,strBeginTime和strEndTime用于存储查询条件。sVal是时间间隔参数。如下图所示:图2变量2)创6、建过程值归档创建归档周期为一分钟的过程值归档。如下图所示:图3归档配置3)创建Excel模板在特定的路径下预先创建一个Excel文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创建一个名称为abc.xlsx的Excel文件。如下图所示:图4Excel模板4.2组态查询界面画面上新建三个输入/输出域,分别用于输入开始时间、结束时间和间隔时间。按钮中执行用于访问变量归档数据的VBS脚本。图5查询界面4.3关键脚本介绍1)打开Excel模板以后台方式打开之前创建好的Excel模板。其中sheetnam7、e作为变量可以定义Excel中Sheet的名字。SetobjExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseobjExcelApp.Workbooks.Open"D:WinCCWriteExcelabc.xlsx"objExcelApp.Worksheets(sheetname).Activate2)准备查询条件主要是确定和格式化Catalog、UTC开始时间、UTC结束时间、时间间隔等查询条件。因为北京时间和UTC(协调世界时)时间相差8个小时8、,所以直接在程序中写入固定的时间差值。SettagDSNName=HMIRuntime.Tags("@DatasourceNameRT")tagDSNName.ReadSetLocalBeginTime=HMIRunti
3、lueID或ValueName>,,[,][,]4字节长ValueID的请求:TAG:R,,,[,][,]其中:ValueID:过程值归档变量的唯一标识符。ValueName:过程值归档变量的名称,格式为“ArchiveNameValue_Name”,可以使用多个名称。TimeBegin,TimeEnd:时间范围,格式“YYYY-
4、MM-DDhh:mm:ss.msc”。SQL_Clause:SQL语法中的过滤标准。TimeStep:时间间隔。使用时,必须将指定为绝对时间。禁止使用相对语句“0000-00-0000:00:00.000”。其中ValueID和ValueName的对应关系如下图所示:图1ValueID和ValueName的对应关系3.2几种常用的查询需求和语句1)绝对时间间隔2)相对时间间隔请注意,查询不能包含任何空格。习惯上,执行绝对时间查询时需要将查询的时间条件转换成UTC(协调世界时)时间。执行相对时间
5、查询时请一定要注意相对时间的格式。建议使用MsgBox或者HMIRuntime.Trace等方式输出数值以检查格式是否正确。3.3查询结果查询结果作为记录集返回。过程值归档的记录集结构如下表所示:表1记录集结构注意,WinCC的归档数据是使用UTC(协调世界时)时间保存的。因此在对数据进行查询和显示时,需要对时间进行适当的转换。4组态介绍(以绝对时间间隔为例)4.1准备工作1)创建变量其中:NewTag用于创建过程值归档,strBeginTime和strEndTime用于存储查询条件。sVal是时间间隔参数。如下图所示:图2变量2)创
6、建过程值归档创建归档周期为一分钟的过程值归档。如下图所示:图3归档配置3)创建Excel模板在特定的路径下预先创建一个Excel文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创建一个名称为abc.xlsx的Excel文件。如下图所示:图4Excel模板4.2组态查询界面画面上新建三个输入/输出域,分别用于输入开始时间、结束时间和间隔时间。按钮中执行用于访问变量归档数据的VBS脚本。图5查询界面4.3关键脚本介绍1)打开Excel模板以后台方式打开之前创建好的Excel模板。其中sheetnam
7、e作为变量可以定义Excel中Sheet的名字。SetobjExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseobjExcelApp.Workbooks.Open"D:WinCCWriteExcelabc.xlsx"objExcelApp.Worksheets(sheetname).Activate2)准备查询条件主要是确定和格式化Catalog、UTC开始时间、UTC结束时间、时间间隔等查询条件。因为北京时间和UTC(协调世界时)时间相差8个小时
8、,所以直接在程序中写入固定的时间差值。SettagDSNName=HMIRuntime.Tags("@DatasourceNameRT")tagDSNName.ReadSetLocalBeginTime=HMIRunti
此文档下载收益归作者所有