内容 |
1 引言
OPC是OLE for Process Control的缩写,即把OLE应用于工业控制领域。OLE的原意是对象链接和嵌入,随着OLE2的发行,其范围已远远超出了这个概念。现在的OLE包容了新的特征,如统一数据传输、结构化存储和自动化,已经独立于计算机语言、操作系统甚至硬件平台的一种规范,是面向对象程序设计概念的进一步推广。OPC建立在OLE规范之上,它为工业控制领域提供了一种标准的数据访问机制。
工业控制领域用到大量的现场设备,在OPC出现之前,软件开发商需要开发大量的驱动程序来连接这些设备。即使硬件供应商在硬件上做了一些小小的改动,应用程序就可能需要重写;同时,由于不同设备甚至同一设备不同单元的驱动程序也可能不同,软件开发商很难同时对这些设备进行访问以优化操作。硬件供应商也在尝试解决这个问题,然而由于不同客户有着不同的需要,同时也存在着不同的数据传输协议,因此也一直没有完整的解决方案。
自OPC出现之后,这个问题终于得到解决。OPC规范包括OPC服务器和OPC客户两个部分,其实质是在硬件供应商和软件开发商之间建立了一套完整的“规范”,只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商无须考虑应用程序的多种需求和传输协议,软件开发商也无须了解硬件的实质和操作过程。
2 OPC适用范围和基本概念
2.1 OPC适用范围
OPC的设计者们最终的目标是在工业领域建立了一套数据传输规范,并为之制定了一系列的发展计划。现有的OPC规范涉及如下领域:
(1) 在线数据监测。实现了应用程序和工业控制设备之间高效、灵活的数据读写。 (2) 报警和事件处理。提供了OPC服务器发生异常及OPC服务器设定事件到来时,向OPC客户发送通知的一种机制。 (3) 历史数据访问。实现了读取、操作、编辑历史数据库的方法。 (4) 远程数据访问。借助Microsoft的DCOM技术,OPC实现了高性能的远程数据访问能力。 (5) 安全性、批处理、历史报警事件数据访问等。
2.2 OPC基本概念
本系统使用的OPC服务器为台湾泓格科技有限公司的NAP7000 OPC Server。对数据项设定好代表的具体的通道,可以把数据项看作数据源的地址。
OPC服务器由三类对象组成:服务器(Server)、组(Group)、数据项(Item)。服务器对象拥有服务器的所有信息,同时也是组对象的容器。组对象拥有本组的所有信息,同时包容并逻辑组织OPC数据项。在这里数据项就是指12个位输入和2个位输出。
OPC组对象提供了客户组织数据的一种方法。客户可对之进行读写,还可以设置客户端的数据更新速率。当服务器缓冲区内的数据发生改变时,OPC将向客户发出通知,客户得到通知后再进行必要的处理。而无须浪费大量的时间进行查询。OPC规范定义了两种组对象:公共组和局部组(私有组)。公共组由多个客户共有,局部组只隶属于一个OPC客户。一般来说,客户和服务器的一对连接只需要定义一个组对象。
在每个组对象中,客户可以加入多个OPC数据项。OPC数据项是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的,通过OPC数据项,OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC数据项并不提供对外接口,客户不能直接对之进行操作,所有的操作都是通过组对象进行的。每个OPC数据项的数据结构包括三个成员变量:即数据值、数据质量和时间戳。数据值是以Variant形式表示的。
3 客户端监控程序开发一般步骤
OPC规范提供了两套接口方案,即COM接口和自动化。COM接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C++语言的客户一般用COM接口方案;自动化接口使用解释性和宏语言访问OPC服务器,采用Visaul Basic语言的客户一般采用自动化接口。自动化接口使解释性和宏语言编写客户应用程序变得简单。本文给出的客户端应用程序的应用实例就是用Visual Basic编写的。
3.1 OPC的连接
先在“引用”将OPC Automation 2.0加入,然后开始定义全局变量。在本程序中,笔者使用了两个OPC组进行OPC访问。首先定义了OPC组与OPC数据项。注意数据项的值一定要以Variant形式表示。在定义所有变量后,就要进行OPC连接了。
主要程序如下: Set Server = New OPCServer ’生成OPC对象, sServers = Server.GetOPCServers("") Server.Connect sServerName, "" ’连接OPC服务器 Set Group = Server.OPCGroups.Add("I7000") Set ItemObj = GroupObj.OPCItems.AddItem("XXXITEM", 1) ' XXXITEM为添加的ITEM名称
3.2 OPC的数据项读写
对OPC的写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择;但对少量的数据传输,同步表现得更好。要进行数据传输,先要将值数据进行赋值。
读数据项主要程序如下: Dim anItem As OPCItem Set anItem = Group.OPCItems.Item(1) anItem.Read OPCCache
写数据项主要程序如下: Dim anItem As OPCItem Group.OPCItems.AddItem lTagSelected.Caption, 1 Set anItem = Group.OPCItems.Item(1)
3.3 OPC连接断开
OPC客户端连接后要占用服务器资源,所以如果不需要使用OPC时,必须进行OPC连接断开。断开的程序相当简单,释放资源即可。
断开连接的主要程序如下: Server.OPCGroups.RemoveAll Server.Disconnect Set Server = Nothing
4 结论
通过OPC技术,经过直接访问硬件供应商提供的OPC服务器,从而达到访问硬件的数据。OPC的优越性是显而易见的:
(1) 硬件供应商只须提供一套符合OPC Server规范的程序组,无须考虑工程人员需求。 (2) 软件开发商无须重写大量的设备驱动程序。 (3) 工程人员在设备选型上有了更多的选择。 (4) OPC扩展了设备的概念。只要符合OPC Server规范,OPC客户都可与之进行数据交互,而无须了解究竟是PLC还是仪表,甚至在数据库系统上建立了OPC规范,OPC客户也可与之方便地实现数据交互。
|