用 VB 编写 OPC 客户端访问 WINCC
OPC 是一个工业标准,它是由一些世界上著名的自动化系统和硬件、软件公司和 Microsoft(微软)紧密合
作而建立的。〔O 代表 OLE(对象链接和嵌入),P (process 过程),C (control 控制)。OLE 已从面向对象重
新定义为基于对象并更名为 Active X〕。
WinCC 是西门子公司在自动化领域采用最先进的技术与微软公司在共同开发的居于世界领先地位的工控
软件。WinCC 即 WINDOWS CONTROL CENTER(视窗控制中心)。WinCC 是一个功能强大的全面开放
的监控系统,既可以用来完成小规模的简单的过程监控应用,也可以用来完成复杂的应用。在任何情况
下 WinCC 都可以生成漂亮而便捷的人机对话接口,使操作员能够清晰地管理和优化生产过程。它集成的
OPC(OLE for process control)服务器使得过程数据可由其它应用程序(OPC 客户机)访问。
WinCC 在安装时提供了 OPC 的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll),这个控件
就是我们在 VB 中要用到的控件,我们也可以使用通用的 OPC 客户端控件: OPC Automation 2.0.
在 WINCC 的帮助中,有 Siemens OPC DAAutomation 2.0 使用的简略帮助,但说得不很详细,我在使用中
碰到不少问题,现一并写出来,与大家共享。
一、OPC 的连接
先在“引用”将近 Siemens OPC DAAutomation 2.0 加入,然后开始定义全局变量。在本程序中,我使用了
两个 OPC 组进行 OPC 访问,所以定义了全局变量。我们要首先定义 OPC 服务类型与计算机结点名。定
义 OPC 组与 OPC 标签组。并定义 OPC 的标签数组与值数,注意,值数组一定要设为 Variant。
'OPC 处理:只对 WINCC
Const ServerName = "OPCServer.WinCC" 'OPC 的类型
Const NodeName = "GUK" '结点名,即计算机名
'Dim NodeName As String
Dim WithEvents MyOPCServer As OPCServer 'OPC 服务
Dim MyOPCGroupColl As OPCGroups '
Dim WithEvents MyOPCGroupOut As OPCGroup 'OPC 组,本程序用两个组进行 OPC 连接
Dim WithEvents MyOPCGroupIn As OPCGroup
Dim MyOPCItemCollIn As OPCItems 'OPC 标签组
Dim MyOPCItemCollOut As OPCItems
Dim ServerHandlesIn() As Long '句柄
Dim ServerHandlesOut() As Long
Dim ErrorsIn() As Long '错误句柄
Dim ErrorsOut() As Long
Dim WatchDataReadItem(100) As String '记录 OPC 的标签
Dim WatchDataReadValue(100) As Variant '存放 OPC 的值
Dim WatchDataWriteItem(100) As String '记录 OPC 的标签
Dim WatchDataWriteValue(100) As Variant '存放 OPC 的值
在定义所有变量后,我们就要进行 OPC 连接了,要进行 OPC 连接之前,先要配置要访问的 OPC 标签名,
我们 WatchDataReadItem、WatchDataWriteItem 中加入相应的标签名,注意:这两个数组必须由 1 开始,
不能由 0 开始。
配置好标签后就要进行 OPC 连接了。如下面子程序:
1、 ClientHandles1 先配置名柄索引,这将在读取 OPC 标签的值时可要用到
2、 生成 OPC 对象,
3、 进行 OPC 标签连接
至此:OPC 连接就成功了,我们可以对 OPC 进行读与写的操作了。
评论15