如何创建一个Microsoft Excel的OPC客户端

更新时间:2023-06-05 11:45:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

如何创建一个Microsoft Excel的OPC客户端?

用法说明:

这个说明讲述了如何在Microsoft Excel 中用VBA脚本语言建立OPC 客户端,并通过OPC接口读取PLC中的数据,以及将数据写入PLC。

通过OPC接口,Microsoft Excel作为OPC 客户端发起通讯并发送读/写请求到OPC服务器。OPC服务器执行这些读/写请求。

Microsoft Excel 作为客户端的配置过程如下:

在Excel中创建一个接口,并保存分别申明的控制元件。

图 01

在VisualBasic 编辑器中的“工具->引用”中,选中“Siemens OPC DA Automation 2.0”组件,使VisualBasic能够识别OPC对象。 现在创建所需的所有对象,如:“MyOPCGroup”对象

Dim: 创建一个变量

WithEvents: 这个对象可以提供事件(如 DataChange)

MyOPCGroup: 对象名

As OPCGroup: 变量类型

图 02

为“MyOPCServer”对象分配内存: Set MyOPCServer = New ... Microsoft Excel建立与OPC服务器的连接: Call MyOPCServer.Connect(ServerName) 使用如下函数来访问 Microsoft Excel的单元格信息。在本例中,从单元格(第四行,B

列)中获取OPC服务器的名称。

图 03

Microsoft Excel与OPC服务器的连接一旦建立,OPC组即被创建。这个通过集合对象

来实现:

MyOPCServer.OPCGroups.Add(组名)

在本例中,最新创建的组通过“MyOPCGroup”变量来寻址。设置

MyOPCGroup.IsSubscribed = True,以便OPC组能够提供DataChange等事件。

图 04

创建OPC项。这个通过集合对象完成: MyOPCItems(i) = MyOPCGroup.OPCItems.AddItem(ItemID) 在此例中,ItemIDs 存储在单元格(9-12行,B列)中。使用函数Cells(line, column) ,

把指定的ItemIDs 传送给集合对象"MyOPCGroup.OPCItems.AddItem"。

图 05

使用下列函数从PLC中读取变量: MyOPCGroup.SyncRead() 以参数形式为此函数传递OPC项的服务器句柄。

图 06

从PLC读出的值显示在单元格(9-10行,E列)中。 这些读出值的质量代码和时间戳显示在单元格(9-10行,H、I列)中。函数

“MyOPCGroup.SyncRead()”以返回值的形式提供这些数据。

图 07

在Microsoft Excel中,调用如下用于OPC组事件处理的程序,它是一个OPC服务器

的DataChange 事件:

DataChange()

这个事件处理程序提供了许多参数,如ItemValue(OPC项的值),客户端句柄等。

通过DataChange事件,当OPC项的值变化时,数据会自动发送。OPC项的当前值显

示在单元格(9-12行,D列)中。

图 08

如果在Microsoft Excel的单元格(9-13行,F列)中输入一个值,通过下面的函数将

OPC项写入到PLC:

MyOPCGroup.SyncWrite()

写入值和服务器句柄以参数形式传递给此函数。

图 09

函数GetQualityText以字符串的形式,为预定义的错误代码传递错误消息。

Private Function GetQualityText(Quality) As String

Select Case Quality

Case 0: GetQualityText = "BAD"

Case 64: GetQualityText = "UNCERTAIN"

Case 192: GetQualityText = "GOOD"

Case 8: GetQualityText = "NOT_CONNECTED"

Case 13: GetQualityText = "DEVICE_FAILURE"

Case 16: GetQualityText = "SENSOR_FAILURE"

Case 20: GetQualityText = "LAST_KNOWN"

Case 24: GetQualityText = "COMM_FAILURE"

Case 28: GetQualityText = "OUT_OF_SERVICE"

Case 132: GetQualityText = "LAST_USABLE"

Case 144: GetQualityText = "SENSOR_CAL"

Case 148: GetQualityText = "EGU_EXCEEDED"

Case 152: GetQualityText = "SUB_NORMAL"

Case 216: GetQualityText = "LOCAL_OVERRIDE"

Case Else: GetQualityText = "UNKNOWN ERROR"

End Select

End Function

最后,断开与OPC服务器的连接。

图 10

在此下载在Microsoft Excel中实现OPC客户端编程的Visual Basic 示例程序。

此外,条目ID23829402包含一个使用Microsoft Excel 和VBA,创建个性化、可视化接口的简单程序。

注意:

对于通过DCOM访问OPC服务器,使用Microsoft Excel 作为客户端的本示例程序没有经过测试。

本文来源:https://www.bwwdw.com/article/ive1.html

Top