如何使用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

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

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

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))

End Sub

'打印预览的代码

UserForm.Hide

Sheet1.PrintPreview

'退出画面

UserForm.Hide

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

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

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

JL 跳转指令的理解

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

数据丟了--WinCc历史数据丢失怎么办

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

MMC 卡数据的读写

如何快速切换 WinCC V7.5 Runtime 的显示模式,如进行日间、夜间显示模式切换?

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

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

PROFINET通讯中断如何分析和解决

PLC之间的Profibus 通讯

WinCC中的画面模板

怎么远程控制国外的PLC

远程上下载西门子1200PLC程序,在线调试

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

使用循环中断和读取循环时间作为定时器

单个S7-1200做服务器,和多个客户端做Modbus TCP通讯

使用STARTER软件使用同一套参数下载多台G120变频器

wincc如何实现远程监控1200PLC

相关推荐
巨控王工2_1530748396914 天前
跨子网的WinCC客户机/服务器如何实现通讯?
wincc
B_lack0265 个月前
C脚本实现用键盘按键控制Wincc某按钮动作
计算机外设·wincc·c脚本
gongkongxiaozhou9 个月前
西门子S7-1500作为智能设备共享功能
网络·智能路由器·wincc·博途wincc·西门子wincc·wincc发短信
gongkongxiaozhou10 个月前
WINCC读写EXCEL-VBS
wincc·博途wincc·西门子wincc·博途·西门子1200plc
杨铮...1 年前
WinCC趋势跨度设置(时间范围)
wincc·趋势时间轴设置