【技术应用案例】怎样通过OPC Client与世纪星交互
作者:技术部 刘月新
1 OPC简介
OPC是 OLE for Process Control 的缩写,即把 OLE 技术应用于工业控制领域。
OPC的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,OPC标准应运而生。OPC标准以微软公司的 OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是 OLE2技术,OLE标准允许多台微机之间交换文档、图形等对象。
OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
应用程序与OPC服务器之间必须有 OPC 接口,OPC 规范提供了两套标准接口:Custom 标准接口,OLE 自动化标准接口。通常在系统设计中采用OLE自动化标准接口,OLE 自动化标准接口,及采用 OLE 自动化技术进行调用,其技术为上节所述的 OLE 自动化技术。OLE 自动化标准接口定义了以下三层接口,依次呈包含关系:
1)OPC Server:OPC 启动服务器,获得其他对象和服务的起始类,并用于返回 OPC Group 类对象。
2)OPC Group:存储由若干 OPC Item 组成的 Group 信息,并用于返回 OPC Item 类对象。
3)OPC Item:存储具体 Item 的定义、数据值、状态值等信息。
2 采用OPC规范设计系统的优势
1)OPC规范以 OLE/DCOM 为技术基础,而 OLE/DCOM 支持 TCP/IP 等网络协议,因此可以将各个子系统从物理上分开,分布于网络的不同节点上。
2)OPC按照面向对象的原则,将一个应用程序(OPC 服务器)作为一个对象封装起来,只将接口方法暴露在外面,客户以统一的方式去调用这个方法,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
3)OPC实现了远程调用,使得应用程序的分布与系统硬件的分布无关,便于系统硬件配置以及使得系统的应用范围更广。
4)采用OPC规范,便于系统的组态化,将系统复杂性大大简化,可以大大缩短软件开发周期,提高软件运行的可靠性和稳定性,便于系统的升级与维护。
5)OPC 规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而实现系统的开放性,易于实现与其它系统的接口。
3 使用VB6.0编写OPC Client访问世纪星
世纪星同时提供OPC Client和OPC Server两种功能,想要通过OPC方式和世纪星交换数据,必须要编写OPC Client和OPC Server其中的任意一种。由于编写OPC Server程序具有一定难度,所以我们建议工程技术人员开发OPC Client来和世纪星的OPC Server交互。
1)世纪星工程
使用OPC Client访问世纪星是不需要在世纪星中做任何特殊配置的,我们在世纪星中创建如下类型变量。在应用程序命令语言中让这些变量发生变化。
图1 变量列表
图2 应用程序命令语言脚本
图3 世纪星运行画面
2)VB6.0编写OPC Client
A、脚本
Option Explicit
Dim WithEvents opcSvr As OPCServer
Dim WithEvents opcGrp As OPCGroup
Dim opcItm(3) As OPCItem
Dim opcInt As Variant
Dim opcInfo As Variant
Dim opcDsc As Variant
Dim v As Variant
Dim q As Variant
Dim t As Variant
Private Sub cmdConnect_Click()
On Error GoTo ed
If opcSvr Is Nothing Then Set opcSvr = New OPCServer
opcSvr.Connect "CenturyStar.OPCServer", txtIP.Text
opcSvr.OPCGroups.DefaultGroupUpdateRate = 50
Set opcGrp = opcSvr.OPCGroups.Add("Group")
Set opcItm(0) = opcGrp.OPCItems.AddItem("opcInt", 1)
Set opcItm(1) = opcGrp.OPCItems.AddItem("opcInfo", 2)
Set opcItm(2) = opcGrp.OPCItems.AddItem("opcDsc", 3)
Set opcItm(3) = opcGrp.OPCItems.AddItem("opcFlt", 4)
If opcSvr.ServerState = 1 Then
MsgBox "opc服务器已连接!", vbOKOnly, "提示:"
tmrRun.Enabled = True
cmdConnect.Enabled = False
cmdDisConnect.Enabled = True
Else
MsgBox "opc服务器连接错误!", vbOKOnly, "提示:"
End If
ed:
End Sub
Private Sub cmdDisConnect_Click()
On Error GoTo ed
tmrRun.Enabled = False
opcSvr.OPCGroups.RemoveAll
opcSvr.Disconnect
Set opcSvr = Nothing
cmdDisConnect.Enabled = False
cmdConnect.Enabled = True
ed:
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ed
cmdDisConnect_Click
ed:
End
End Sub
Private Sub tmrRun_Timer()
On Error GoTo ed
tmrRun.Enabled = False
If opcSvr.ServerState Then
opcItm(0).Read 1, v, q, t
txtInt.Text = v
opcItm(1).Read 1, v, q, t
txtInfo.Text = v
opcItm(2).Read 1, v, q, t
txtDsc.Text = v
opcItm(3).Read 1, v, q, t
txtFlt.Text = v
End If
tmrRun.Enabled = True
ed:
End Sub
B、画面
图4 OPC Client界面
3)示例说明
A、使用OPC之前可能需要安装OPC Data Access 2.0 Components。
B、联网运行需要配置DCOM,配置的详细情节请参考世纪星帮助或世纪星安装光盘中的《世纪星OPC Server配置指南》。
C、本例只演示从世纪星中读取数据,读者可自行研究回写数据的例子。
4 世纪星 OPC Server 配置指南
由于Windows XP SP2操作系统的安全特性非常高,所以配置也相对其他系统而言是最复杂的。下面以 Windows XP SP2操作系统为例来说明CenturyStar OPCServer的配置方法。
1) CenturyStar OPCServer的安装
在安装CenturyStar的过程中,CenturyStar OPCServer和OPC的核心组件会自动被安装到计算机上。安装成功后,计算机上会注册有一个服务器: CenturyStar. OPCServer。
2)Windows安全性配置
1.防火墙
第一种方法是关闭防火墙。在控制面板中打开Windows防火墙,在“常规”页面中选择关闭。
第二种方法是不关闭防火墙,添加一个例外到防火墙并开放DCOM端口。在控制面板中打开安全中心,选择Windows防火墙,在“例外”页面中选择添加程序。需要“添加的程序”有Microsoft Management Console(即:mmc.exe,目录:C:\Windows\System32), OPCServer.exe(目录:C:\CenturyStar),OPCClient.exe(目录:C:\CenturyStar),OPCEnum.exe(目录:C:\Windows\System32)。选择“添加端口”,名称:DCOM,端口:135,类型:TCP。
2.启用文件共享
在控制面板中打开网络安装向导,在“文件和打印机共享”页面选择启用。
3)DCOM配置
在开始菜单中选择“运行”,输入dcomcnfg,回车。打开“组件服务——计算机”,右键“我的电脑”——属性,在“默认”属性页面,“在此计算机上启用分布式COM”上打勾;“默认身份级别”选择无,“默认模拟级别”选择标识;在“默认协议”页面,将“面向连接的TCP/IP”移到最上方;在“COM安全”页面里,“访问权限”中“编辑限制”添加Everyone并附给所有权限,附给Anonymous Logon所有权限,“编辑默认值”添加Everyone并附给所有权限,附给System所有权限;“启动和激活权限”中“编辑限制”添加Everyone并附给所有权限,“编辑默认值”添加Everyone并附给所有权限,附给Interactive,System所有权限。
展开我的电脑——DCOM配置,选择CenturyStar.OPCServer,“常规”页面“身份验证”选择无;“位置”页面“在此计算机运行应用程序”上打勾;“安全”页面在“配置权限”中添加Everyone并附给所有权限,附给System所有权限;在“标识”页面中选择“交互式用户”。
OPCEnum的DCOM配置参考CenturyStar.OPCServer。
注意:配置完必须重起计算机才能生效,客户机可配置参考服务器配置。
5 小结
如果需要世纪星和第三方软件通讯尽量使用OPC方式,这种方式的优点是效率较高,容易实现网络连接。