OPC的适用范围 OPC设计者们最终目标是在工业领域建立一套数据传输规范,并为之制定了一系列的发展计划。现有的OPC规范涉及如下领域: 在线数据监测。实现了应用程序和工业控制设备之间高效、灵活的数据读写。 报警和事件处理。提供了OPC服务器发生异常时,以及OPC服务器设定事件到来时向OPC客户发送通知的一种机制 历史数据访问。实现了读取、操作、编辑历史数据库的方法。 远程数据访问。借助Microsoft的DCOM技术,OPC实现了高性能的远程数据访问能力。 OPC近期将实现的功能还包括安全性、批处理、历史报警事件数据访问等。 OPC的设计者在设计OPC时遵循如下原则: 易于实现。 灵活满足多种客户需求。 强大的功能。 高效的操作。
OPC的基本概念 1. 服务器、组、数据项
OPC服务器由三类对象组成:服务器(Server)、组(Group)、数据项(Item)。服务器对象(Server)拥有服务器的所有信息,同时也是组对象(Group)的容器。组对象(Group)拥有本组的所有信息,同时包容并逻辑组织OPC数据项(Item)。
OPC组对象(Group)提供了客户组织数据的一种方法。客户可对之进行读写,还可设置客户端的数据更新速率。当服务器缓冲区内数据发生改变时,OPC将向客户发出通知,客户得到通知后再进行必要的处理,而无需浪费大量的时间进行查询。OPC规范定义了两种组对象:公共组和局部组(私有组)。公共组由多个客户共有,局部组只隶属于一个OPC客户。一般说来,客户和服务器的一对连接只需要定义一个组对象。 在每个组对象中,客户可以加入多个OPC数据项(Item)。如下图所示:
OPC数据项是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的,通过定义数据项,OPC规范尽可能的隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC数据项并不提供对外接口,客户不能直接对之进行操作,所有操作都是通过组对象进行的。
客户操作数据项的一般步骤为:
通过服务器对象接口枚举服务器端定义的所有数据项,如果客户对服务器所定义的数据项非常熟悉,此步可以忽略。
将要操作的数据项加入客户定义的组对象中。
通过组对象对数据项进行读写等操作。
每个数据项的数据结构包括三个成员变量:即数据值、数据质量和时间戳。数据值是以VARIANT形式表示的。应当注意,数据项表示同数据源的连接而不等同于数据源,无论客户是否定义数据项,数据源都是客观存在的。可以把数据项看作数据源的地址,即数据源的引用,而不应看作数据源本身。
2. 报警(Alarm)和事件(Event)
报警和事件处理机制增强了OPC客户处理异常的能力。服务器在工作过程中可能出现异常,此时,OPC客户可通过报警和事件处理接口得到通知,并能通过该接口获得服务器的当前状态。
在很多场合,报警(Alarm)和事件(Event)的含义并不加以区分,两者也经常互换使用。从严格意义上讲,两者含义略有差别。
依据OPC规范,报警是一种异常状态,是OPC服务器或服务器的一个对象可能出现的所有状态中的一种特殊情况。例如,服务器上标记为FC101的一个单元可能有如下状态:高出警戒,严重高出警戒,正常,低于警戒,严重低于警戒。除了正常状态外,其他状态都视为报警状态。
事件则是一种可以检测到的出现的情况,这种情况或来自OPC客户,或来自OPC服务器,也可能来自OPC服务器所代表的设备,通常都有一定的物理意义。事件可能与服务器或服务器的一个对象的状态有关,也可能毫无关系。如高出警戒和正常状态的转换事件和服务器的某个对象的状态有关,而操作设备,改变系统配置以及出现系统错误等事件和对象状态就无任何关系。
3. OPC体系结构
OPC规范提供了两套接口方案,即COM接口和自动化。COM接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C++语言的客户一般采用COM接口方案;自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB语言的客户一般采用自动化接口。自动化接口使解释性语言和宏语言编写客户应用程序变得简单,然而自动化客户运行时需进行类型检查,这一点则大大牺牲了程序的运行速度。
OPC服务器必须实现COM接口,是否实现自动化接口则取决于供应商的主观意愿。
4. 服务器缓冲区数据和设备数据
OPC服务器本身就是一个可执行程序,该程序以设定的速率不断地同物理设备进行数据交互。服务器内有一个数据缓冲区,其中存有最新的数据值,数据质量戳和时间戳。时间戳表明服务器最近一次从设备读取数据的时间。服务器对设备寄存器的读取是不断进行的,时间戳也在不断更新。即使数据值和质量戳都没有发生变化,时间戳也会进行更新。客户既可从服务器缓冲区读取数据,也可直接从设备读取数据,从设备直接读取数据速度会慢一些,一般只有在故障诊断或极特殊的情况下才会采用。
5. 同步和异步
OPC客户和OPC服务器进行数据交互可以有两种不同方式,即同步方式和异步方式。同步方式实现较为简单,当客户数目较少而且同服务器交互的数据量也比较少的时候可以采用这种方式;异步方式实现较为复杂,需要在客户程序中实现服务器回调函数。然而当有大量客户和大量数据交互时,异步方式能提供高效的性能,尽量避免阻塞客户数据请求,并最大可能地节省CPU和网络资源
|