在WINCC中使用VBS脚本通过EXCEL实现实时数据报表 

使用 VBS 脚本和 EXCEL 工具,同样可以生成需要的报表。一般的思路是:预先使用 excel 设计好报表的样式,然后在 WinCC 中使用 VBS 脚本把相应的数据写入事先定义好的 表格中。下面给出实现的方法。

 右键点击按钮打开属性对话框,在事件页右键单击鼠标动作选择 VBS 动作。如下图:

图片

在该事件中写入如下脚本:

 ‘定义变量

Dim objExcelApp,objExcelBook,objExcelSheet 

Dim tagwendu,tagyali,tagliuliang,tagzhongliang,tagyuanliao,tagchengfen 

Dim tagshijian,sheetname,username,zhushi 

Dim qushi1,qushi2,qushi3,qushi4,qushi5,qushi6,qushix,tagstring,qushivalue 

Dim x,y,z,i,j 

Dim msg 

'声明

Set tagwendu=HMIRuntime.Tags("wendu") 

Set tagyali=HMIRuntime.Tags("yali") 

Set tagliuliang=HMIRuntime.Tags("liuliang") 

Set tagzhongliang=HMIRuntime.Tags("zhongliang") 

Set tagyuanliao=HMIRuntime.Tags("yuanliao") 

Set tagchengfen=HMIRuntime.Tags("chengfen") 

Set username=HMIRuntime.Tags("@CurrentUserName") 

Set zhushi=HMIRuntime.Tags("zhushi") 

 msg="ok" 

 sheetname="sheetdemo"

'判断是否打开模版,如果打开先关闭保存

On Error Resume Next 

 Dim ExcelApp,ExcelBook 

 Set ExcelApp = GetObject(,"Excel.Application") 

 If TypeName(ExcleApp) = "Application" Then 

 For Each ExcelBook In ExcelApp.WorkBooks 

 If ExcelBook.FullName = "D:\excelreport\winccvbsexcel.xls" Then 

 ExcelApp.ActiveWorkbook.Save 

 ExcelApp.Workbooks.Close 

 ExcelApp.Quit 

 Set ExcelApp= Nothing 

 Exit For 

 End If 

 Next

End If

'创建对象

Set objExcelApp =CreateObject("Excel.Application") 

 'open file 

 objExcelApp.Visible=True 

 objExcelApp.Workbooks.Open"D:\excelreport\winccvbsexcel.xls" 

 objExcelApp.Worksheets(sheetname).Activate 

'清除模版数据

With objExcelApp.Worksheets(sheetname) 

 For i=5 To 25 

 For j=1 To 7 

 .cells(i,j)=Null 

 Next 

 Next 

 For i=26 To 26 

 For j=1 To 6 

 .cells(i,j)=Null 

 Next 

 Next 

End With 

'实时数据写入 

 tagshijian=Now 

 objExcelApp.Worksheets(sheetname).cells(2,2).value= tagshijian 

 username.Read 

 objExcelApp.Worksheets(sheetname).cells(2,7).value= username.Value 

 zhushi.Read 

 objExcelApp.Worksheets(sheetname).cells(27,7).value= zhushi.Value 

 objExcelApp.Worksheets(sheetname).cells(27,7).Font.Bold = TRUE

objExcelApp.Worksheets(sheetname).cells(27,7).Interior.ColorIndex = 25 

 objExcelApp.Worksheets(sheetname).cells(27,7).Font.ColorIndex = 7 

 objExcelApp.Worksheets(sheetname).cells(27,7).Font.size=18 

 tagstring="qushi" 

 For i=1 To 6 

        For j=30 To 35 

               qushix=tagstring&CStr(i) 

               Set qushivalue=HMIRuntime.Tags(qushix) 

                qushivalue.Read 

                 objExcelApp.Worksheets(sheetname).cells(j,2).value= 

qushivalue.Value 

 Next 

 Next 

For i=5 To 25 

 With objExcelApp.Worksheets(sheetname) 

         .cells(i,1).value= tagshijian 

           tagwendu.Read 

           .cells(i,2).value= tagwendu.Value 

            tagyali.Read 

           .cells(i,3).value= tagyali.Value 

            tagliuliang.Read 

            .cells(i,4).value= tagliuliang.Value 

              tagzhongliang.Read 

              .cells(i,5).value= tagzhongliang.Value 

               tagyuanliao.Read 

              .cells(i,6).value= tagyuanliao.Value 

               tagchengfen.Read 

                .cells(i,7).value= tagchengfen.Value 

 End With 

 Next 

MsgBox msg 

'关闭保存

Dim patch,filename 

filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))+C

Str(Minute(Now))&CStr(Second(Now)) 

patch= "d:\"&filename&"demo.xls" 

objExcelApp.ActiveWorkbook.SaveAs patch 

objExcelApp.Workbooks.Close 

objExcelApp.Quit 

Set objExcelApp= Nothing 

输出结果如下图:

图片

2、如何使用EXCEL访问WinCC中的实时数据实现报表 

如果项目已经做好了,不想改动现有项目。那么可以使用 EXCEL 通过 OPC 方式访问 WinCC 项目的数据。预先定义好 EXCEL 表格样式,通过以下方式实现。

 通过以下步骤打开 EXCEL 中的 VB 编辑器。

图片

引用 WinCC 提供的 OPC 客户端 Control 控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll)。

图片

图片

创建起始画面

图片

编程实现

‘变量声明

Option Explicit 

Option Base 1 

Const ServerName = "OPCServer.WinCC" 

Dim WithEvents MyOPCServer As OPCServer 

Dim WithEvents MyOPCGroup As OPCGroup 

Dim MyOPCGroupColl As OPCGroups 

Dim MyOPCItemColl As OPCItems 

Dim MyOPCItems As OPCItems 

Dim MyOPCItem As OPCItem 

Dim ClientHandles(10) As Long 

Dim ServerHandles() As Long 

Dim Values(1) As Variant 

Dim Errors() As Long 

Dim ItemIDs(10) As String 

Dim GroupName As String 

Dim NodeName As String 

Dim fxItemValue(10) As Variant 

‘在按钮“启动 OPC 客户端”中添加以下代码

'--------------------------------------------------------------------- 

' 目的: 连接到 OPC_server,创建组并添加条目

'--------------------------------------------------------------------- 

 ' 发生错误则转到 ErrorHandler 

 '----------- 可以自由选择 ClientHandle 和 GroupName 

Dim i As Integer 

‘On Error GoTo HANDLEeRROR 

 For i = 1 To 7 

 ClientHandles(i) = i 

 ' 先配置名柄索引 这将在读取 OPC 标签值时可要用到

 Next i 

 ' ClientHandles(1) = 1 

 GroupName = "MyGroup" 

 '----------- 从窗口对话框中取得 ItemID 

 NodeName = txtNoteName.Value 

 ItemIDs(1) = Range("j5").Value’从 EXCEL 表格 j5 中读取变量名称

 ItemIDs(2) = Range("j6").Value 

 ItemIDs(3) = Range("j7").Value 

 ItemIDs(4) = Range("j8").Value 

 ItemIDs(5) = Range("j9").Value 

 ItemIDs(6) = Range("j10").Value 

 '----------- 取得 OPC-Server 实例

 Set MyOPCServer = New OPCServer 

 MyOPCServer.Connect ServerName, NodeName 

 Set MyOPCGroupColl = MyOPCServer.OPCGroups 

 '----------- 设置用于添加组的默认活动状态

 MyOPCGroupColl.DefaultGroupIsActive = True 

 '----------- 将我们的组添加到集合中

 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) 

 Set MyOPCItemColl = MyOPCGroup.OPCItems 

 '----------- 调价一个条目,即返回 ServerHandle 

 MyOPCItemColl.AddItems 10, ItemIDs, ClientHandles, ServerHandles, Errors 

 '----------- 订阅的组收到异步通知

 MyOPCGroup.IsSubscribed = True

Exit Sub 

ErrorHandler: 

 MsgBox "Error: " & Err.Description, vbCritical, "ERROR" 

‘在按钮“停止 OPC 客户端”中添加以下代码

'--------------------------------------------------------------------- 

' 目的: 释放对象并断开与服务器的连接

'--------------------------------------------------------------------- 

 '----------- 释放组和服务器对象

 MyOPCGroupColl.RemoveAll 

 '----------- 断开与服务器的连接并清除

 MyOPCServer.Disconnect 

 Set MyOPCItemColl = Nothing 

 Set MyOPCGroup = Nothing 

 Set MyOPCGroupColl = Nothing 

 Set MyOPCServer = Nothing 

‘创建实时刷新数据的函数

' 目的: 组中的数值、质量或时间标志改变时,该事件激活

'----------- 如果安装了 OPC-DA Automation 2.1,使用:

Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal 

NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, 

TimeStamps() As Date) 

 '----------- 将数据表单元格的值设置为读取的数值

 Dim ii As Integer 

 For ii = 1 To NumItems 

fxItemValue(ClientHandles(ii)) = ItemValues(ii) 

Next ii 

 Range("A5").Value = CStr(TimeStamps(1)) 

 Range("B5").Value = CStr(fxItemValue(1)) 

 ' Range("C5").Value = Hex(Qualities(1)) 

 Range("C5").Value = CStr(fxItemValue(2)) 

 Range("D5").Value = CStr(fxItemValue(3)) 

 Range("E5").Value = CStr(fxItemValue(4)) 

 Range("F5").Value = CStr(fxItemValue(5)) 

 Range("G5").Value = CStr(fxItemValue(6))

‘打印预览的代码

UserForm.Hide 

Sheet1.PrintPreview 

‘退出画面

UserForm.Hide 

打开 EXCEL 激活宏。运行的界面如下,在服务器名称中输入相应的计算机节点名称,

点击“启动 OPC 客户端”。就能得到相应的数据

End Sub 

图片

至此完成了使用 EXCEL 通过 OPC 方式访问 WinCC 项目中数据的方法。

微信群:PLC自动化技术交流(加好友入群,请标注:姓名-单位)工控王工:188****7316***6826

广州巨控手机 APP 监控PLC 方案

如何从wincc上采集数据

如何实现手机APP控制PLC

如何采集wincc数据并转成HTTPS协议给第三方软件

wincc异地监控1200PLC的方法

组态王与PLC的无线4G通讯

工控人如何用云组态做手机APP实现PLC远程监控

如何实现PLC短信微信报警

两台PLC之间的4G远程无线通讯

如何远程读取wincc数据

如何快速实现互联网远程监控plc?

S7-400H和WINCC通讯

WinCC 画面中浏览 PDF 文件

WinCC V7.5 SP1VBS全局变量的使用

200smart怎么通过4G网络与wincc通讯

WINCC中比较实际趋势曲线和设定值(理想)曲线的实现方法

西门子1500PLC怎样异地远程监控

经典WinCC移植到WinCC Professional

WinCC 数据使用MQTT传送到云端

NET421/NET431西门子plc与ABplc通讯网关

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

如何在 WinCC Runtime Professional 中自动调整画面分辨率适应窗口的大小?

如何实现简单的 WinCC 项目分屏?

s7-1200通过4G网连接中控室

WinCC C/S结构快速入门

如何防止多个WinCC客户机同时操作或更改数值?

精智Comfort屏如何周期性调用脚本

巨控协议转换网关GRM321GRM322GRM323应用场景

精智面板/二代精简PN面板如何使用Modbus TCP/IP 通信组态

如何快速实现OPC DA转为WEBSEVER

200smart数据日志的功能

HMI如何通过PLC变量控制开始和停止数据记录

WinCC flexible配方与PLC的同步

HMI面板与S7-1500 R/H 冗余PLC的通信

WinCC Flexible Smart快速导入 Smart PLC变量

巨控OPC560系列远程智能控制终端

S7_1200配方功能快速入门

PLC远程调试监控模块-巨控GRM530

PN IO设备ET 200SP将支持R1模式

SCL 常见问题

PLC协议转换网关:巨控NET400

如何判断S7通信中断

S7-1500R/H PROFIBUS DP 通信

如何实现PLC短信报警

WinCC  Modbus TCP 通信

wincc 远程和PLC通讯方案

1500PLC与wincc通过4G网络远程通讯

WINCC中自定义 XY 轴的多功能曲线的实现方法

wincc报警如何通过短信发送给手机

在WinCC(TIA Portal)项目中,如何正确的使用面板,模板,弹出窗口和滑入窗口?

通过巨控GRM532Y-C远程调试下载国外PLC

巨控GRM远程模块配置使用流程简介

巨控远程模块微信报警配置方法

TIA中如何将数据块的实际值转到初始值中

wincc 远程和PLC通讯方案

如何使用EXCEL访问WinCC中的实时数据实现报表

西门子PLC无线通讯解决方案

巨控无线通讯模块在带式输送机行业的应用

WinCC激活故障排除及解决思路

Wincc在手机端监控_巨控OPC560解决方案

PLC之间的Profibus 通讯

怎么远程控制国外的PLC

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐