OPC客户端的研究与开发
- 格式:doc
- 大小:27.50 KB
- 文档页数:4
OPC客户端的研究与开发
随着计算机技术的发展,计算机在工业控制领域发挥着越来越重要的作用。各种仪器仪表都提供了与计算机通信的协议相通的功能。但是,不同厂家产品的协议互不相同,即使上一同一家公司的不同产品与计算机之间的通信协议也不尽相同。因为不同的语言和运行环境对驱动程序的接口有不同的要求,所以不仅软件厂商需要编写大量设备驱动,硬件厂家也需要为应用程序开发不同的驱动,这样软硬件厂商无疑都加大了开发成本,同时此方案也不符合软件工程的发展趋势,在这样的背景下,OPC技术应运而生。
OPC(OLE for Process Control)技术为工业控制领域提供了一种标准的数据访问机制,将硬件与应用软件有效的分离开来。不同的硬件厂商只需为各自的设备提供带有OPC接口的服务器,软件厂商可以采用支持OPC接口的客户端程序对它们进行统一方式的访问。
1OPC技术的特点
OPC(OLE for Process Control)是工控行业的软件接口标准,它试图按照标准的方法完成不同设备之间数据的交换。OPC基金会是OPC规范的制定者,制定了数据访问、历史数据访问、事件与报警、批处理、OPC DA XML等一系列标准。
OPC基于微软的COM技术,它具有如下的优点:
(1)高速的数据传输;
(2)基于分布式COM的安全性管理机制;
(3)降低开发成本;
(4)可以实现具有高度柔韧性功能的系统;
(5)可以实现具有高可靠性的系统。
1.1 OPC服务器
OPC数据访问提供数据源读取和写入特定数据的手段。OPC数据访问对象是如图1所示的分层结构构成。
一个OPC服务器对象(OPC SERVER)具有一个作为子对象的OPC组集合对象(OPC GROUPS);在这个OPC组集合对象里可以添加多个OPC组对象(OPC GROUP);各个OPC 组对象都具有一个作为子对象的OPC标签集合对象(OPC ITEMS);在这个OPC标签集合对象里面可以添加多个OPC标签对象(OPC ITEM)。此外,作为选用功能,OPC服务器对象还可以包含一个OPC浏览器对象(OPC BROWER)。一般OPC服务器包含下述的3类对象,即服务器、组、数据项。
(1)服务器对象。对象包含服务器的所有信息,同时也是组对象的容器。一个OPC服务器对应于一个OPC SERVER,即一种设备的驱动程序。在一个SERVER中,可以有若干个组;(2)组对象。组对象包含本组的所有信息,同时包含并管理OPC数据项。客户可以对其进行读写,还可以设置客户端的数据更新速率。OPC规范定义了2种组对象:公共组(全局组,PUBLIC)和局部组(局域组,LOCAL)。公共组可以被多个客户访问,而局域组只能由建立它的客户端访问;
(3)数据项。数据项是读写数据的最小逻辑单位。数据项不能独立与组存在,每个组可以有多个数据项。一般每个数据项对应一个设备的寄存器单元,客户对于设备寄存器的操作都是通过数据项完成的。
1.2 OPC接口方式
OPC规范提供了2套接口方案,即客户化接口和自动化接口。客户化接口效率高,采用它能够发挥OPC服务器的最佳性能。C++语言的客户一般采用客户化接口方案;采用VB或VBA 语言的客户一般使用自动化接口。
1.3 OPC的数据访问方式
OPC的数据访问方式主要有同步访问和异步访问两种。同步方式:OPC服务器把按照OPC 客户端要求得到的数据访问结果作为方法的参数返还给OPC客户端,OPC客户端在结果返回之前必须处于等待状态;异步方式:OPC服务器接到OPC客户端的要求后,几乎立即将方法返回,OPC客户端随后可以进行其它处理,当OPC服务器完成数据访问时,触发OPC客户端的异步访问完成事件,将数据访问结果传送给OPC客户端。
1.4 OPC客户端的开发
OPC客户端的开发大概可以概括为3种方法。
(1)利用MFC的COM库函数直接开发,但是这要求开发人员对于MFC和COM都有很深的了解,而且开发起来的工作量也很大;
(2)通过创建包装类实现客户端。包装类封装了COM函数,客户端程序利用包装类访问组件提供的属性和方法。这样使得COM的包装变得相对简单,但是工作量仍然很大;(3)利用第三方的开发工具包直接开发。这种开发包往往以动态链接库的形式将开发所用的API函数进行封装,在开发过程中直接调用即可,使得开发过程省时省力。
2 技术方案实现
本方案使用的开发运行平台是微软的WIN 2000系统,使用的开发语言是VISUAL C++6.0。
2.1 开发步骤
2.1.1开发运行环境设置
无论开发者还是最终用户都需要按照以下方法安装OPC代理/存根DLL,并进行环境设置:(1)将opcproxy.dll,opccomn-ps.dll,opcae_ps.dll,opcda_ps.dll四个文件复制到系统目录(system32)下;
(2)注册上述的四个文件;
(3)如果系统中没有actxprxp.dll文件,执行aprxdist.exe进行安装。
2.1.2 编程环境设置
(1)将开发包中的KOCRDK.dll文件复制到OPC客户端所在的文件夹下;
(2)在VC编程环境中的链接设置中加入KOCRDK.lib文件;
(3)在需要使用KOCRDK提供的API函数的源文件中包含KOCRDKapi.h文件。
2.1.3 系统设置和初始化
调用KOC_Init()初始化客户端程序。
2.1.4浏览和连接OPC服务器
(1)获取OPC服务器信息
int nCount = KOC_GetServerCount(
m_strNodeName,//计算机的名称
!m_bVerl);//OPC版本
(2)连接OPC服务器
HANDLE hConnect = KOC_Connect(
dlg.m_strNodeName,//计算机的名称