如何实现wincc用VBS做报表

上传人:公**** 文档编号:507906147 上传时间:2023-09-16 格式:DOC 页数:8 大小:372.50KB
返回 下载 相关 举报
如何实现wincc用VBS做报表_第1页
第1页 / 共8页
如何实现wincc用VBS做报表_第2页
第2页 / 共8页
如何实现wincc用VBS做报表_第3页
第3页 / 共8页
如何实现wincc用VBS做报表_第4页
第4页 / 共8页
如何实现wincc用VBS做报表_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《如何实现wincc用VBS做报表》由会员分享,可在线阅读,更多相关《如何实现wincc用VBS做报表(8页珍藏版)》请在金锄头文库上搜索。

1、 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方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。连接字符串格式为“Pro

2、vider=WinCCOLEDBProvider.1; Catalog= *; Data Source= *;,其中Catalog为WinCC运行数据库的名称, 当修改项目名称或在其它计算机上翻开原项目时, Catalog会发生变化。建议使用WinCC部变量 “DatasourceNameRT 获得当前项目的Catalog。Data Source 为效劳器名称,格式为“WinCC。 31 查询语句格式数据的查询语句的格式要求如下:8 字节长 ValueID 的请求:TAG_LLVID:R,4 字节长 ValueID 的请求:TAG:R,其中:ValueID:过程值归档变量的唯一标识符。Valu

3、eName:过程值归档变量的名称,格式为“ArchiveNameValue_Name,可以使用多个名称。TimeBegin,TimeEnd:时间围,格式 “YYYY-MM-DD hh:mm:ss.msc。SQL_Clause:SQL 语法中的过滤标准。TimeStep:时间间隔。使用 时,必须将 指定为绝对时间。禁止使用相对语句“0000-00-00 00:00:00.000”。其中ValueID和ValueName的对应关系如下列图所示: 图1 ValueID和ValueName的对应关系 32几种常用的查询需求和语句 1绝对时间间隔 2相对时间间隔 请注意,查询不能包含任何空格。习惯上,执

4、行绝对时间查询时需要将查询的时间条件转换成UTC (协调世界时)时间。执行相对时间查询时请一定要注意相对时间的格式。建议使用MsgBox或者HMIRuntime.Trace等方式输出数值以检查格式是否正确。 33 查询结果查询结果作为记录集返回。过程值归档的记录集结构如下表所示: 表1记录集结构 注意,WinCC的归档数据是使用UTC协调世界时时间保存的。因此在对数据进展查询和显示时,需要对时间进展适当的转换。 4组态介绍以绝对时间间隔为例41准备工作 1创立变量其中:NewTag用于创立过程值归档,strBeginTime 和strEndTime用于存储查询条件。sVal是时间间隔参数。如下

5、列图所示: 图2 变量 2 创立过程值归档创立归档周期为一分钟的过程值归档。如下列图所示: 图3 归档配置 3创立Excel模板在特定的路径下预先创立一个Excel文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创立一个名称为abc.xlsx的Excel文件。如下列图所示: 图4 Excel模板 42组态查询界面画面上新建三个输入/输出域,分别用于输入开场时间、完毕时间和间隔时间。按钮中执行用于访问变量归档数据的VBS脚本。 图5 查询界面 43关键脚本介绍 221156363读取数据并写入Excel中本段代码主要是获取数据并按照一定的格式填写到翻开的Ex

6、cel文件中。其中sSql可以很灵活的定义开场和完毕时间、排序方法和数据分析方法等。创立数据库联接sPro = Provider=WinCCOLEDBProvider.1;sDsn = Catalog= &tagDSNName.Value& ;sSer = Data Source=.WinCCsCon = sPro + sDsn + sSerSet conn = CreateObject(ADODB.Connection)conn.ConnectionString = sConconn.CursorLocation = 3conn.Open定义查询的命令文本 SQLsSql = Tag:R,(

7、PVArchiveNewTag), & UTCBeginTime & , & UTCEndTime & ,sSql=sSql+order by Timestamp ASC,TimeStep= & sVal.Value & ,1Set oRs = CreateObject(ADODB.Recordset)Set oCom = CreateObject(ADODB.Command)oCom.CommandType = 1Set oCom.ActiveConnection = connoCom.CommandText = sSql填充数据到Excel中Set oRs = oCom.Executem

8、= oRs.RecordCountIf (m 0) ThenobjExcelApp.Worksheets(sheetname).cells(2,1).value=oRs.Fields(0).NameobjExcelApp.Worksheets(sheetname).cells(2,2).value=oRs.Fields(1).NameobjExcelApp.Worksheets(sheetname).cells(2,3).value=oRs.Fields(2).NameobjExcelApp.Worksheets(sheetname).cells(2,4).value=oRs.Fields(3

9、).NameobjExcelApp.Worksheets(sheetname).cells(2,5).value=oRs.Fields(4).NameoRs.MoveFirsti=3Do While Not oRs.EOF 是否到记录末尾,循环填写表格objExcelApp.Worksheets(sheetname).cells(i,1).value= oRs.Fields(0).ValueobjExcelApp.Worksheets(sheetname).cells(i,2).value=GetLocalDate(oRs.Fields(1).Value)objExcelApp.Workshe

10、ets(sheetname).cells(i,3).value= oRs.Fields(2).ValueobjExcelApp.Worksheets(sheetname).cells(i,4).value= oRs.Fields(3).ValueobjExcelApp.Worksheets(sheetname).cells(i,5).value= oRs.Fields(4).ValueoRs.MoveNexti=i+1LoopoRs.CloseElseMsgBox 没有所需数据图6添加时间转换函数 主要的代码如下:Function GetLocalDate(vtDate)Dim DoYDim

11、dsoDim dwiDim strComputer, objWMIService, colItems, objItemDim TimeZoneDim vtDateLocalDatestrComputer = .Set objWMIService = GetObject(winmgmts: & impersonationLevel=impersonate! & strComputer & rootcimv2)Set colItems = objWMIService.ExecQuery(Select * from Win32_TimeZone)For Each objItem In colItem

12、sTimeZone = objItem.Bias / 60 offset TimeZone In hoursNextIf IsDate(vtDate) True ThenIS_GetLocalDate = FalseExit FunctionEnd IfDoY = DatePart(y, vtDate)dso = DatePart(y, 31.03) - DatePart(w, 31.03) + 1dwi = DatePart(y, 31.10) - DatePart(w, 31.10) + 1If DoY = dso And DoY dwi ThensommerTimeZone = Time

13、Zone + 1 additional offset 1h in summerEnd IfvtDateLocalDate = DateAdd(h, 1 * TimeZone, vtDate)GetLocalDate = vtDateLocalDateEnd Function更多关于时间转换的信息请参考连接:如何将本地计算机时间的时间戳日期时间转换成协调世界时 (UTC)?242011135结果和建议下列图为程序执行的结果。仅供参考: 图7输出结果 建议:为了改善本地访问期间的性能,请输入“WinCC作为数据源,而不是“.WinCC。为了提高系统的执行效率,建议仅读取少量的数据。为了防止可能造成的数据损失,建议在执行操作之前先退出Excel应用程序。附代码仅供参考: GetLocalDate.txt ( 1 KB ) VBSReadPVDatatoExcel.txt ( 4 KB ) 声明: /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号