《(完整word版)在WinCC中如何使用VBS读取变量归档数据到EXCEL.pdf》由会员分享,可在线阅读,更多相关《(完整word版)在WinCC中如何使用VBS读取变量归档数据到EXCEL.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文档类型 常问问题,条目 ID:77940055,文档发布日期2013 年 7 月 23 日(4)评估在 WinCC 中如何使用 VBS 读取变量归档数据到EXCEL 推荐文档:西门子工程师推荐本文档!?文献?涉及产品1 概述介绍如何在 WinCC 项目中使用 VBS 脚本读取变量归档值,并把获取的数据保存成新的Excel 文件。文中示例代码仅适用于以绝对时间间隔方式访问。2 软件环境Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2007 3 访问原理WinCC 变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC
2、 连通性软件包提供的OLE-DB 接口才能够解压并读取这些数据。关于WinCC 连通性软件包的详细信息请参考连接:37436159当使用OLE-DB 方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。连接字符串格式为“Provider=WinCCOLEDBProvider.1;Catalog=*;Data Source=*;”,其中 Catalog 为 WinCC 运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时,Catalog 会发生变化。建议使用 WinCC 内部变量“DatasourceNameRT”获得当前项目的Catalog。Data Source 为服务器名
3、称,格式为“WinCC”。31 查询语句格式数据的查询语句的格式要求如下:8 字节长ValueID 的请求:TAG_LLVID:R,4 字节长ValueID 的请求:TAG:R,其中:ValueID:过程值归档变量的唯一标识符。ValueName:过程值归档变量的名称,格式为“ArchiveNameValue_Name”,可以使用多个名称。TimeBegin,TimeEnd:时间范围,格式“YYYY-MM-DD hh:mm:ss.msc”。SQL_Clause:SQL 语法中的过滤标准。TimeStep:时间间隔。使用 时,必须将 指定为绝对时间。禁止使用相对语句“0000-00-00 00:
4、00:00.000”。其中 ValueID 和 ValueName的对应关系如下图所示:图 1 ValueID和 ValueName的对应关系32 几种常用的查询需求和语句1)绝对时间间隔2)相对时间间隔请注意,查询不能包含任何空格。习惯上,执行绝对时间查询时需要将查询的时间条件转换成UTC(协调世界时)时间。执行相对时间查询时请一定要注意相对时间的格式。建议使用MsgBox 或者HMIRuntime.Trace等方式输出数值以检查格式是否正确。33 查询结果查询结果作为记录集返回。过程值归档的记录集结构如下表所示:表 1 记录集结构文档编码:CP5R6A1K5K8 HU2V7K8E7L2 Z
5、E4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6
6、A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 Z
7、E4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6
8、A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 Z
9、E4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6
10、A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 Z
11、E4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1注意,WinCC 的归档数据是使用UTC(协调世界时)时间保存的。因此在对数据进行查询和显示时,需要对时间进行适当的转换。4 组态介绍(以绝对时间间隔为例)41 准备工作1)创建变量其中:NewTag 用于创建过程值归档,strBeginTime 和 strEndTime用于存储查询条件。sVal 是时间间隔参数。如下图所示:图 2 变量2)创建过程值归档创建归档周期为一分钟的过程值归档。如下图所示:文档编码:CP5
12、R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2
13、 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5
14、R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2
15、 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5
16、R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2
17、 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5
18、R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1图 3 归档配置3)创建 Excel 模板在特定的路径下预先创建一个Excel 文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创建一个名称为abc.xlsx 的 Excel 文件。如下图所示:文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4
19、C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1
20、K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4
21、C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1
22、K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4
23、C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1
24、K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4
25、C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1图 4 Excel 模板42 组态查询界面画面上新建三个输入/输出域,分别用于输入开始时间、结束时间和间隔时间。按钮中执行用于访问变量归档数据的 VBS 脚本。图 5 查询界面43 关键脚本介绍1)打开 Excel 模板以后台方式打开之前创建好的Excel 模板。其中sheetname作为变量可以定义Excel 中 Sheet 的名字。Set objExcelApp=CreateObject(Excel.Application)objExcelApp.Visible=False objExcelAp
26、p.Workbooks.Open D:WinCCWriteExcelabc.xlsx objExcelApp.Worksheets(sheetname).Activate 2)准备查询条件主要是确定和格式化Catalog、UTC 开始时间、UTC 结束时间、时间间隔等查询条件。因为北京时间和UTC(协调世界时)时间相差8 个小时,所以直接在程序中写入固定的时间差值。Set tagDSNName=HMIRuntime.Tags(DatasourceNameRT)tagDSNName.Read Set LocalBeginTime=HMIRuntime.Tags(strBeginTime)Loca
27、lBeginTime.Read Set LocalEndTime=HMIRuntime.Tags(strEndTime)LocalEndTime.Read 文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7
28、K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档
29、编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7
30、K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档
31、编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7
32、K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档
33、编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1UTCBeginTime=DateAdd(h,-8,LocalBeginTime.Value)UTCEndTime=DateAdd(h,-8,LocalEndTime.Value)UTCBeginTime
34、=Year(UTCBeginTime)&-&Month(UTCBeginTime)&-&Day(UTCBeginTime)&Hour(UTCBeginTime)&:&Minute(UTCBeginTime)&:&Second(UTCBeginTime)UTCEndTime=Year(UTCEndTime)&-&Month(UTCEndTime)&-&Day(UTCEndTime)&Hour(UTCEndTime)&:&Minute(UTCEndTime)&:&Second(UTCEndTime)HMIRuntime.Trace UTC Begin Time:&UTCBeginTime&vbCr
35、Lf HMIRuntime.Trace UTC end Time:&UTCEndTime&vbCrLf Set sVal=HMIRuntime.Tags(sVal)sVal.Read 另外,因为 WinCC 中对访问数据库的时间格式有特殊的要求。所以程序中增加了格式化时间的代码。更多详细资料请参考连接:如何计算本地时间和UTC 时间的时间差,如何转换UTC 时间成SQL 语句格式?221156363)读取数据并写入Excel 中本段代码主要是获取数据并按照一定的格式填写到打开的Excel 文件中。其中 sSql 可以很灵活的定义开始和结束时间、排序方法和数据分析方法等。创建数据库联接sPro=
36、Provider=WinCCOLEDBProvider.1;sDsn=Catalog=&tagDSNName.Value&;sSer=Data Source=.WinCC sCon=sPro+sDsn+sSer Set conn=CreateObject(ADODB.Connection)conn.ConnectionString=sCon conn.CursorLocation=3 conn.Open 定义查询的命令文本SQL sSql=Tag:R,(PVArchiveNewTag),&UTCBeginTime&,&UTCEndTime&,sSql=sSql+order by Timesta
37、mp ASC,TimeStep=&sVal.Value&,1 Set oRs=CreateObject(ADODB.Recordset)Set oCom=CreateObject(ADODB.Command)oCom.CommandType=1 Set oCom.ActiveConnection=conn oCom.CommandText=sSql 填充数据到Excel 中Set oRs=oCom.Execute m=oRs.RecordCount If(m 0)Then objExcelApp.Worksheets(sheetname).cells(2,1).value=oRs.Fields
38、(0).Name objExcelApp.Worksheets(sheetname).cells(2,2).value=oRs.Fields(1).Name objExcelApp.Worksheets(sheetname).cells(2,3).value=oRs.Fields(2).Name objExcelApp.Worksheets(sheetname).cells(2,4).value=oRs.Fields(3).Name objExcelApp.Worksheets(sheetname).cells(2,5).value=oRs.Fields(4).Name oRs.MoveFir
39、st i=3 文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K
40、5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C
41、6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K
42、5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C
43、6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K
44、5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C
45、6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1Do While Not oRs.EOF 是否到记录末尾,循环填写表格objExcelApp.Worksheets(sheetname).cells(i,1).value=oRs.Fields(0).Value objExcelApp.Worksheets(sheetname).cells(i,2).value=GetLocalDate(oRs
46、.Fields(1).Value)objExcelApp.Worksheets(sheetname).cells(i,3).value=oRs.Fields(2).Value objExcelApp.Worksheets(sheetname).cells(i,4).value=oRs.Fields(3).Value objExcelApp.Worksheets(sheetname).cells(i,5).value=oRs.Fields(4).Value oRs.MoveNext i=i+1 Loop oRs.Close Else MsgBox 没有所需数据 item.Enabled=True
47、 Set oRs=Nothing conn.Close Set conn=Nothing objExcelApp.Workbooks.Close objExcelApp.Quit Set objExcelApp=Nothing Exit Sub End If 注意:因为数据库中数据存储的时间戳是UTC 时间,所以在显示的时候需要把UTC 时间转换为本地时间,上段代码中的GetLocalDate函数就是实现这样的功能。本例中是在全局脚本的VBS-Editor中创建的该函数。添加函数的方法如下图所示:图 6 添加时间转换函数主要的代码如下:Function GetLocalDate(vtDate)
48、Dim DoY Dim dso Dim dwi Dim strComputer,objWMIService,colItems,objItem Dim TimeZone 文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8
49、 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3
50、Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8 HU2V7K8E7L2 ZE4C6E3Y4V1文档编码:CP5R6A1K5K8