【WinCC】使用VBS读取报警记录数据到EXCEL_第1页
【WinCC】使用VBS读取报警记录数据到EXCEL_第2页
【WinCC】使用VBS读取报警记录数据到EXCEL_第3页
【WinCC】使用VBS读取报警记录数据到EXCEL_第4页
【WinCC】使用VBS读取报警记录数据到EXCEL_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【WinCC】使用VBS读取报警记录数据到EXCEL1概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel文件。2软件环境Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20073访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过 WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。当使用 OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。连接字符串格式为“Provider=WinCCOLEDBProvider.1;

2、Catalog= *; Data Source= *;”,其中:Catalog为WinCC运行数据库的名称, 当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。建议使用WinCC内部变量 “DatasourceNameRT” 获得当前项目的Catalog。Data Source 为服务器名称,格式为“WinCC”。31 查询语句格式查询语句的格式要求如下:AlARMVIEW:SELECT * FROM WHEREoptional 其中参数信息如下所示:ViewName:数据库表名。必须用需要的语言指定该表。比如:中文字符表名为:ALGVIEWCHT,英文字符表明为:ALG

3、VIEWENU等。Condition:为过滤标准。详细说明请参见下表:表查询参数表查询结果查询结果作为记录集返回。可以根据需要有选择的返回特定的数据集。例如:oRs.Fields(0).Value 返回的是消息的编号;oRs.Fields(2).Value 返回的是消息的时间戳;oRs.Fields(37).Value返回的是消息文本的内容。记录集的结构如下表所示:表记录集结构表3记录集结构 (续表)注意:WinCC的归档数据是使用UTC(协调世界时)时间保存的。本例中所采用的时间均为UTC时间,如果需要实现在本地时间和UTC时间之间的转换,请参考下列连接:如何计算本地时间和 UTC 时间的时

4、间差,如何转换 UTC 时间成 SQL 语句格式?22115636如何将本地计算机时间的时间戳(日期时间)转换成协调世界时 (UTC)?24201113组态介绍准备工作)创建变量其中AlmTagA、AlmTagB和AlmTagC用于组态报警,MySqlStr用于动态化查询条件。如下图所示:图变量)组态报警在报警记录中组态如下报警:图2报警信息图3单个消息组态界面3)创建Excel模板在特定的路径下预先创建一个Excel文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创建一个名称为abc.xlsx的Excel文件。如下图所示:图EXCEL模板42组态查询界面

5、画面上新建五个按钮,上面的四个按钮分别用于设置不同的查询条件。按钮下方的静态文本用于显示查询条件。最下方的按钮用于执行查询报警记录的VBS脚本。其中查询条件的设定是通过按钮的直接连接方式实现。图5 查询界面在按钮属性对话框的鼠标动作中选择直接连接打开如下界面,配置查询条件。其中来源部分为查询字符串,目标部分为存储查询条件的变量。图6按钮直接连接配置43详细脚本介绍1)打开Excel模板以后台方式打开之前创建好的Excel模板。其中sheetname作为变量可以定义Excel中Sheet的名字。需要注意模板文件的存储路径。Set objExcelApp = CreateObject(Excel.

6、Application)objExcelApp.Visible = FalseobjExcelApp.Workbooks.Open D:WinCCWriteExcelabc.xlsxobjExcelApp.Worksheets(sheetname).Activate2)准备查询条件主要是确定和格式化Catalog和查询条件。关键脚本如下:准备查询条件 CatalogSet tagDSNName = HMIRuntime.Tags(DatasourceNameRT)tagDSNName.Read拼接查询条件MySqlStr.ReadsSql = ALARMVIEW:Select * FROM A

7、lgViewCHT &MySqlStr.Value其中MySqlStr为定义的内部字符串类型的变量,当点击查询条件中的按钮时 ,就会把相应的查询条件字符串传给该变量(需要根据项目的实际情况调整查询条件)。本例中的四条查询条件的完整语句如下图所示:图7查询条件3)完整的代码变量定义和初始化Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oComDim tagDSNNameDim m,iDim objExcelApp,objExcelBook,objExcelSheet,sheetnameDim MySqlStrSet MySqlStr = HMIRuntime.Tag

8、s(MySqlStr)item.Enabled = FalseOn Error Resume Nextsheetname=Sheet1打开Excel模板Set objExcelApp = CreateObject(Excel.Application)objExcelApp.Visible = FalseobjExcelApp.Workbooks.Open D:WinCCWriteExcelabc.xlsxobjExcelApp.Worksheets(sheetname).Activate准备查询条件 CatalogSet tagDSNName = HMIRuntime.Tags(Datasou

9、rceNameRT)tagDSNName.Read创建数据库联接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定义查询的命令文本 SQLMySqlStr.ReadsSql = ALARMVIEW:S

10、elect * FROM AlgViewCHT &MySqlStr.ValueHMIRuntime.Trace Sql is: & sSql & vbCrLfSet oRs = CreateObject(ADODB.Recordset)Set oCom = CreateObject(ADODB.Command)oCom.CommandType = 1Set oCom.ActiveConnection = connoCom.CommandText = sSql填充数据到Excel中Set oRs = oCom.Executem = oRs.RecordCountIf (m 0) ThenoRs.

11、MoveFirsti=3Do While Not oRs.EOF 是否到记录末尾,循环填写表格objExcelApp.Worksheets(sheetname).cells(i,1).value= CStr(oRs.Fields(0).Value)objExcelApp.Worksheets(sheetname).cells(i,2).value= CStr(oRs.Fields(1).Value)objExcelApp.Worksheets(sheetname).cells(i,3).value= CStr(oRs.Fields(2).Value)objExcelApp.Worksheets

12、(sheetname).cells(i,4).value= CStr(oRs.Fields(37).Value)oRs.MoveNexti=i+1LoopoRs.CloseElseMsgBox 没有所需数据item.Enabled = TrueSet oRs = Nothingconn.CloseSet conn = NothingobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp= NothingExit SubEnd If释放资源Set oRs = Nothingconn.CloseSet conn = Nothing生成新

13、的文件,关闭ExcelDim patch,filenamefilename=CStr(Year(Now)&CStr(Month(Now)&CStr(Day(Now)&CStr(Hour(Now)+CStr(Minute(Now)&CStr(Second(Now)patch= d:&filename&demo.xlsxobjExcelApp.ActiveWorkbook.SaveAs patchobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp= NothingMsgBox 成功生成数据文件!item.Enabled = True5结果和建议下图为程序执行的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论