OPC 系列(2)
OPC的基本概念
1. 服务器、组、数据项
(1)通过服务器对象接口枚举服务器端定义的所有数据项,如果客户对服务器所定义的数据项非常熟悉,此步可以 忽略。
(2)将要操作的数据项加入客户定义的组对象中。
(3)通过组对象对数据项进行读写等操作。
每个数据项的数据结构包括三个成员变量:即数据值、数据质量和时间戳。数据值是以VARIANT形式表示的。应当注意,数据项表示同数据源的连接而不等同 于数据源,无论客户是否定义数据项,数据源都是客观存在的。可以把数据项看作数据源的地址,即数据源的引用,而不应看作数据源本身。
报警和事件处理机制增强了OPC客户处理异常的能力。服务器在工作过程中可能出现异常,此时,OPC客户可通过报警和事件处理接口得到通知,并能通过该接口获得服务器的当前状态。在很多场合,报警(Alarm)和事件(Event)的含义并不加以区分,两者也经常互换使用。从严格意义上讲,两者含义略有差别。
依据OPC规范,报警是一种异常状态,是OPC服务器或服务器的一个对象可能出现的所有状态中的一种特殊情况。例如,服务器上标记为FC101的一个单元可能有如下状态:高出警戒,严重高出警戒,正常,低于警戒,严重低于警戒。除了正常状态外,其他状态都视为报警状态。
事件则是一种可以检测到的出现的情况,这种情况或来自OPC客户,或来自OPC服务器,也可能来自OPC服务器所代表的设备,通常都有一定的物理意义。事件可能与服务器或服务器的一个对象的状态有关,也可能毫无关系。如高出警戒和正常状态的转换事件和服务器的某个对象的状态有关,而操作设备,改变系统配置以及出现系统错误等事件和对象状态就无任何关系。
OPC规范提供了两套接口方案,即COM接口和自动化。COM接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C++语言的客户一般采用COM接口方案;自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB语言的客户一般采用自动化接口。自动化接口使解释性语言和宏语言编写客户应用程序变得简单,然而自动化客户运行时需进行类型检查,这一点则大大牺牲了程序的运行速度。OPC服务器必须实现COM接口,是否实现自动化接口则取决于供应商的主观意愿。
OPC服务器本身就是一个可执行程序,该程序以设定的速率不断地同物理设备进行数据交互。服务器内有一个数据缓冲区,其中存有最新的数据值,数据质量戳和时间戳。时间戳表明服务器最近一次从设备读取数据的时间。服务器对设备寄存器的读取是不断进行的,时间戳也在不断更新。即使数据值和质量戳都没有发生变化,时间戳也会进行更新。客户既可从服务器缓冲区读取数据,也可直接从设备读取数据,从设备直接读取数据速度会慢一些,一般只有在故障诊断或极特殊的情况下才会采用。
5. 同步和异步
OPC客户和OPC服务器进行数据交互可以有两种不同方式,即同步方式和异步方式。在同步方式下,客户端发出请求并进入等待,直到服务器端返回数据,同步方式实现较为简单,当然也很浪费资源,当客户数目较少而且同服务器交互的数据量也比较少的时候可以采用这种方式;异步方式实现较为复杂,需要在客户程序中实现服务器回调函数。然而当有大量客户和大量数据交互时,异步方式能提供高效的性能,尽量避免阻塞客户数据请求,并最大可能地节省CPU和网络资源
6.订阅方式
OPCclient 首先告诉OPCSERVER,她需要刷新哪些数据 以及刷新的频率是多少,然后立即返回做其它事情。当OPCSERVER发现这些数据发生了改变就采用回调机制将数据传给客户端,这种方式免除了客户端的 轮询,节省了很多资源。

浙公网安备 33010602011771号