come from:
http://blog.csdn.net/kind_li/archive/2002/12/25/10993.aspx
OPC 标准 — 你知道吗?
这些文章都是左抄右摘而得的,并不是我写的文章,我只不过是个汇总者。但无论如何,还是希望你能从这篇文章中了解到 OPC 标准。
什么是 OPC
OPC (OLE for Process Control—— 用于过程控制的 OLE) 是一个工业标准,它是许多世界领先的自动化和软、硬件公司与微软公司合作的结晶。这个标准定义了应用 Microsoft 操作系统在基于 PC 的客户机之间交换自动化实时数据的方法。管理该标准的组织是 OPC OPC基金会 。该基金会的会员单位在世界范围内超过220 个。包括了世界上几乎全部的控制系统、仪器仪表和过程控制系统的主要供应商。 OPC 基金会的先驱 —— 一支由 Fisher-Rosemount 、 Rockwell 软件公司、 Opto 22 、 Intellution 和 Intuitive Technology 公司组成的 “ 特别工作组 ”—— 在经过一年工作后,开发出一个基本的、可运行的 OPC 规范。简化的第一阶段的标准在 1996 年 8 月发布。
随着 1997 年 2 月 Microsoft 公司推出 Windows95 支持的 DCOM 技术, 1997 年 9 月新成立的 OPC Foundation 对 OPC 规范进行修改,增加了数据访问等一些标准, OPC 规范得到了进一步的完善。 OPC 是基于 Microsoft 公司的 Distributed Internet Application ( DNA )构架和 Component Object Model ( COM )技术的,根据易于扩展性而设计的。 OPC 规范定义了一个工业标准接口,这个标准使得 COM 技术适用于过程控制和制造自动化等应用领域。 OPC 是以 OLE/COM 机制作为应用程序的通讯标准。 OLE/COM 是一种客户 / 服务器模式,具有语言无关性、代码重用性、易于集成性等优点。 OPC 规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
OPC 的效率
从 OPC 标准的制定到现在已历经了 5 年的时间。在这过去的 5 年中,众多业界领先的制造商已开发了多种 OPC 服务器和客户机应用。在实际工程中也历经了多方面的测试和考验。以瑞士的 TetraPak 为例,其基于 OPC 服务器技术的数据采集系统,保证了对超过 500 个数据点的更新时间为 200 毫秒。
在 Softing 公司的 OPC 服务器性能测试中,分别对基于本地的 OPC 应用和基于 DCOM 的分布式应用进行了测试。
为了保证测试的可信程度,特别选用了两台低档配置的计算机。其配置如下:
硬件: CPU :奔腾 90MHz 处理器 RAM : 48 或 64M 软件: Windows NT 4.0
在本地测试中, OPC 客户机测试应用程序和 OPC 服务器安装在同一台 PC 上。在基于 DCOM 的分布式 OPC 应用测试中, OPC 客户机测试应用程序在第二台远程 PC 上运行。
测试结果:无论是在本地还是两台计算机之间, 5000 个过程变量的变化值能在 1 秒内在 OPC 服务器和客户机之间传送。对于只有 500 个过程变量的情况,只需 100 毫秒时间。因而, OPC 被认为是非常适合于在很短的更新速率内采集大量的动态过程变量的应用场合。
OPC 的优势
采用 OPC 规范设计系统的好处:
采用标准的 Windows 体系接口,硬件制造商为其设备提供的接口程序的数量减少到一个,软件制造商也仅需要开发一套通讯接口程序。即有利于软硬件开发商,更有利于最终用户。
OPC 规范以 OLE/DCOM 为技术基础,而 OLE/DCOM 支持 TCP/IP 等网络协议,因此可以将各个子系统从物理上分开,分布于网络的不同节点上。
OPC 按照面向对象的原则,将一个应用程序( OPC 服务器)作为一个对象封装起来,只将接口方法暴露在外面,客户以统一的方式去调用这个方法,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
OPC 实现了远程调用,使得应用程序的分布与系统硬件的分布无关,便于系统硬件配置,使得系统的应用范围更广。
采用 OPC 规范,便于系统的组态,将系统复杂性大大简化,可以大大缩短软件开发周期,提高软件运行的可靠性和稳定性,便于系统的升级与维护。
OPC 规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而实现系统的开放性,易于实现与其它系统的接口。
OPC 相关知识
1. COM -- Common Object Model 组件对象模型 2. OLE -- 对象链接和嵌入 3. OLE Automation -- OLE 自动化 4. DCOM -- 分布式组件对象模型 5. ActiveX 6. DDE —— 动态数据交换( Dynamic Data Exchange )
OPC 技术规范
OPC技术规范是以 Microsoft 的 OLE/COM 技术为基础,定义了一组接口规范。它包括 OPC 自动化接口( Automation Interface )和 OPC 定制接口( Custom Interface )。另外, OPC 技术规范定义的是 OPC 服务器程序和客户机程序进行通讯的接口或通讯的方法。 1 OPC 对象与接口: OPC服务器对象提供了对数据源进行存取(读 / 写)或通讯的方法,而数据源可以是现场的 I/O 设备,也可以是其它的应用程序。通过接口, OPC 客户应用程序可以同时连到由一个或多个厂商提供的 OPC 服务器上。如图 1 所示。 OPC 服务器封装了与 I/O 控制设备进行通讯和访问数据的类型与名字及进行设备操作的代码。 2 OPC 数据存取( Data Access )规范: 总体来说, OPC 数据存取规范包含几个对象:服务器对象( Server Object )、组对象( Group Object )、项对象( Item Object ) 。 OPC 服务器对象维护着服务器的信息,同时也是 OPC 组对象的包容器。 OPC 组对象维护着它自己的信息并提供包容 OPC 项的机制,同时管理 OPC 项。 OPC组提供客户应用程序组织数据的机制,例如:一个组可以包含一个显示面板所有数据的项,并可对数据进行读写。在一些特殊情况下,还可以在组里建立客户应用程序与项的连接,并可以根据需要禁止或允许这种连接。 OPC 客户应用程序还可以修改 OPC 服务器向 OPC 客户应用程序提交数据变化的刷新数率。 OPC组有两种类型:公共组( Public )和局部组( Local or Private )。公共组可以为多个客户程序共享,而局部组只为某一个客户程序所有。在每个组里,客户程序可以定义多个 OPC 项。如图 2 所示。 OPC项代表了与服务器里数据源的连接。从定制接口( Custom Interface )角度来看,一个 OPC 项不能被 OPC 客户程序作为一个对象来进行操作,因此,在 OPC 项中没有定义外部接口。所有对 OPC 项的操作都是利用 OPC 项的包容器 ( OPC 组)或 OPC 项的定义来进行的。 每个 OPC 项包含值( Value )、品质( Quality )和时间标签( Time Stamp )。值( Value )的类型是 VARIANT ,品质的类型是 SHORT 。 应当注意的是项不是数据源,而只是与数据源的连接。例如:在 DCS 系统中定义的可以让 OPC 客户程序访问的标签。 OPC 项应该被看成是数据地址的标示,而不是数据的物理源。 2.3 OPC 报警与事件( Alarm and Event )规范: OPC 报警与事件规范接口提供了一种机制。通过这种机制,当 I/O 设备中有指定的事件或报警条件产生时, OPC 客户应用程序能得到通知。通过 OPC 报警与事件规范接口, OPC 客户应用程序可以设置 OPC 服务器支持的事件和条件,并获的其当前状态。 这里使用了过程控制中常用的报警和事件的概念,在不严格的场合,报警和事件在意义上差别不是非常明显,二者可以互换。 在 OPC 中,一个报警就是一个非正常情况( Condition ),因此是一种特殊情况。一个情况是 OPC 事件服务器( Event Server )或其所包容的对象中命名了的一个状态,而这个状态对 OPC 客户应用程序来说是有用。例如:标签 FC101 可以有以下几种相关情况:上限报警、上上限报警、正常、下限报警、下下限报警。 另一方面,一个事件是某种可以检测到的变化,而这种变化对 OPC 服务器及其所表示的 I/O 设备或 OPC 客户来说是非常重要的。一个事件可能是和某种情况相关的,也可能和任何情况都无关。例如:系统从正常情况变化到上限报警或从上限报警变化到正常情况,这是和某种情况相关的事件。但是,操作人员的动作、系统配置的更改、系统故障就是与情况无关的事件。 OPC 客户程序可以得到这类特殊事件发生的通知。 OPC事件服务器接口类 IOPCEventServer 提供的方法可以使 OPC 客户程序完成如下功能: ● 决定 OPC 服务器支持的事件类型。 ● 对某些特定事件进行登记,以便 OPC 客户能在这些事件发生时得到通知,也可以采用过滤器定义这些事件的一个子集。 ● 对 OPC 服务器实现的情况进行存取或处理。 除了 IOPCEventServer 接口外, OPC 事件服务器还支持其它接口,可以对服务器实现的情况进行浏览和对公共组进行管理 2 . 4 OPC 历史数据存取( Historical Data Access ) 历史数据引擎能够把那些必须分散存储的信息组合成一个额外的数据源并把它们提供给对它们感兴趣的用户或 OPC 客户程序。当前大部分历史数据系统采用自己专用的接口分发数据,这种方式不能提供即插即用的功能,从而限制了其应用的范围和功能。 为了将历史数据和各种不同的应用系统进行集成,可以将历史信息认为是某种数据类型的数据。 目前, OPC 规范支持以下几种历史数据服务器: ● 简单趋势数据服务器。这种服务器只提供原始数据和简单的存储功能。数据一般是 OPC 数据存取服务器提供的数据类型,常常是 [ 数值,品质 ] 元组的形式。 ● 复合数据压缩和分析服务器。这种服务器能够提供与原始数据存储一样的数据压缩功能,还能提供数据汇总和数据分析功能,如平均值、最大值、最小值等。支持数据刷新及历史记录的刷新,另外,保存历史数据的同时还可以记录对数据的注释信息。
OPC 的安装
这些文件都是从 OPC 基金会网站上下载来的 www.opcfoundation.org opc_aeps.dll opccomn_ps.dll opchda_ps.dll opcproxy.dll aprxdist.exe opcenum.exe它们都是 OPC 的接口代理文件 客户端和服务器端都必须要安装这些文件
************************************************************* ******* 安装时千万不要把新版本的文件也覆盖掉了 .************** ************************************************************
安装步骤 : 1. 将所有文件拷贝到 Windows 的 System32 目录 . 例如 : copy opcproxy.dll c:/winnt/system32 copy opccomn_ps.dll c:/winnt/system32 copy opc_aeps.dll c:/winnt/system32 copy opchda_ps.dll c:/winnt/system32 copy aprxdist.exe c:/winnt/system32 copy opcenum.exe c:/winnt/system32 2. 安装代理 DLL 文件 REGSVR32 opcproxy.dll REGSVR32 opccomn_ps.dll REGSVR32 opc_aeps.dll REGSVR32 opchda_ps.dll
3. 如果你的 Windows 系统目录下不存在 actxprxy.dll 文件,请运行 aprxdist.exe 程序 aprxdist
4. 注册 opcenum.exe opcenum /regserver
欲了解更多的 OPC 标准,请参阅以下网址: OPC 基金会 http://www.opcfoundation.org 中国工控网 OPC 论坛 http://www.gongkong.com/tech/forum/list38.asp