如果项目已经做好了,不想改动现有项目。那么可以使用 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 项目中数据的方法。
如何快速切换 WinCC V7.5 Runtime 的显示模式,如进行日间、夜间显示模式切换?