电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

如何实现wincc用VBS做报表

14页
  • 卖家[上传人]:ali****an
  • 文档编号:116029446
  • 上传时间:2019-11-15
  • 文档格式:DOC
  • 文档大小:389KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。连接字符串格式为“Provider=WinCCOLEDBProvider.1; Catalog= *; Data Source= *;”,其中Catalog为WinCC运行数据库的名称, 当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。建议使用WinCC内部变量 “DatasourceNameRT” 获得当前项目的Catalog。Data Source 为服务器名称,格式为“WinCC”。 31

      2、查询语句格式数据的查询语句的格式要求如下: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:00:00.000”。其中ValueID和ValueName的对应关系如下图所示: 图1 ValueID和ValueName的对应关系 32几种常用的查询需求和语句 1)绝对时间间隔 2)相对时间间隔 请注意,查询不能包含任何空格。习惯上,执行绝对时间查询时需要将查询的时间条件转换成UTC (协调世界时)时间。执行相对时间查询时请一定要注意相对时间的格式。建议使用MsgBox或者HMIRuntime.Trace等方式输出数

      3、值以检查格式是否正确。 33 查询结果查询结果作为记录集返回。过程值归档的记录集结构如下表所示: 表1记录集结构 注意,WinCC的归档数据是使用UTC(协调世界时)时间保存的。因此在对数据进行查询和显示时,需要对时间进行适当的转换。 4组态介绍(以绝对时间间隔为例) 41准备工作 1)创建变量其中:NewTag用于创建过程值归档,strBeginTime 和strEndTime用于存储查询条件。sVal是时间间隔参数。如下图所示: 图2 变量 2) 创建过程值归档创建归档周期为一分钟的过程值归档。如下图所示: 图3 归档配置 3)创建Excel模板在特定的路径下预先创建一个Excel文件作为模板,这样可以很好的控制输出格式。本例中在D:WinCCWriteExcel下创建一个名称为abc.xlsx的Excel文件。如下图所示: 图4 Excel模板 42组态查询界面画面上新建三个输入/输出域,分别用于输入开始时间、结束时间和间隔时间。按钮中执行用于访问变量归档数据的VBS脚本。 图5 查询界面 43关键脚本介绍 1)打开Excel模板以后台方式打开之前创建好的Excel模板。其中sh

      4、eetname作为变量可以定义Excel中Sheet的名字。Set objExcelApp = CreateObject(Excel.Application)objExcelApp.Visible = FalseobjExcelApp.Workbooks.Open D:WinCCWriteExcelabc.xlsxobjExcelApp.Worksheets(sheetname).Activate2)准备查询条件主要是确定和格式化Catalog、UTC开始时间、UTC结束时间、时间间隔等查询条件。因为北京时间和UTC(协调世界时)时间相差8个小时,所以直接在程序中写入固定的时间差值。Set tagDSNName = HMIRuntime.Tags(DatasourceNameRT)tagDSNName.ReadSet LocalBeginTime = HMIRuntime.Tags(strBeginTime)LocalBeginTime.ReadSet LocalEndTime = HMIRuntime.Tags(strEndTime)LocalEndTime.ReadUTCBegin

      5、Time = DateAdd(h ,-8,LocalBeginTime.Value)UTCEndTime= DateAdd(h ,-8,LocalEndTime.Value)UTCBeginTime = 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 & vbCrLfHMIRuntime.Trace UTC end Time: & UTCEndTime & vbCrL

      6、fSet sVal = HMIRuntime.Tags(sVal)sVal.Read另外,因为WinCC中对访问数据库的时间格式有特殊的要求。所以程序中增加了格式化时间的代码。更多详细资料请参考连接:如何计算本地时间和 UTC 时间的时间差,如何转换 UTC 时间成 SQL 语句格式?22115636 3)读取数据并写入Excel中本段代码主要是获取数据并按照一定的格式填写到打开的Excel文件中。其中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,(PVArch

      7、iveNewTag), & 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 = 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).cell

      8、s(2,3).value=oRs.Fields(2).NameobjExcelApp.Worksheets(sheetname).cells(2,4).value=oRs.Fields(3).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.Worksheets(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 没有所需数据item.Enabled = TrueSet oRs = Nothingconn.CloseSet conn = NothingobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp= NothingExit SubEnd If注意:因为数据库中数据存储的时间戳是UTC时间,所以在显示的时候需要把UTC时间转换为本地时间,上段代码中的GetLocalDate函数就是实现这样的功能。本例中是在全局脚本的VBS-Editor中创建的该函数。添加函数的方法如下图所示: 图6添加时间转换函数 主要的代码如下:Function GetLocalDate(vtDate)Dim DoY

      《如何实现wincc用VBS做报表》由会员ali****an分享,可在线阅读,更多相关《如何实现wincc用VBS做报表》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.