标题：OPC技术
OPC技术
OPC的发展OPC全称是OLE for Process Control，它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。在过去，为了存取现场设备的数据信息，每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多，且产品的不断升级，往往给用户和软件开发商带来了巨大的工作负担。通常这样也不能满足工作的实际需要，系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下，OPC标准应运而生。OPC标准以微软公司的OLE技术为基础，它的制定是通过提供一套标准的OLE/COM接口完成的，在OPC技术中使用的是OLE 2技术，OLE标准允许多台微机之间交换文档、图形等对象。OLE机制COM是Component Object Model的缩写，是所有OLE机制的基础。COM是一种为了实现与编程语言无关的对象而制定的标准，该标准将Windows下的对象定义为独立单元，可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通讯，而不需要知道对方是如何创建的。例如，用户可以使用C++语言创建一个Windows对象，它支持一个接口，通过该接口，用户可以访问该对象提供的各种功能，用户可以使用Visual Basic，C，Pascal，Smalltalk或其它语言编写对象访问程序。在Windows NT4.0操作系统下，COM规范扩展到可访问本机以外的其它对象，一个应用程序所使用的对象可分布在网络上，COM的这个扩展被称为DCOM（Distributed COM）。
通过DCOM技术和OPC标准，完全可以创建一个开放的、可互操作的控制系统软件。OPC采用客户/服务器模式，把开发访问接口的任务放在硬件生产厂家或第三方厂家，以OPC服务器的形式提供给用户，解决了软、硬件厂商的矛盾，完成了系统的集成，提高了系统的开放性和可互操作性。OPC访问接口OPC服务器通常支持两种类型的访问接口，它们分别为不同的编程语言环境提供访问机制。这两种接口是：自动化接口（Automation interface）；自定义接口（Custom interface）。自动化接口通常是为基于脚本编程语言而定义的标准接口，可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。OPC现已成为工业界系统互联的缺省方案，为工业监控编程带来了便利，用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者，如果它不能全方位地支持OPC，则必将被历史所淘汰。
OPC技术规范
OPC的发展和完善由OPC Task Force制定的OPC(OLE for Process Control)规范于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 基础委员会主席Dave Rehbein是这样描述的
OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式，具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数，不管现场设备以何种形式存在，客户都以统一的方式去访问，从而保证软件对客户的透明性，使得用户完全从低层的开发中脱离出来。
应用程序与OPC服务器之间必须有OPC接口，OPC规范提供了两套标准接口：Custom标准接口，OLE自动化标准接口。通常在系统设计中采用OLE自动化标准接口。OLE三层接口OLE自动化标准接口，及采用OLE自动化技术进行调用，其技术为上节所述的OLE自动化技术。OLE自动化标准接口定义了以下三层接口，依次呈包含关系。
OPC Server：OPC启动服务器，获得其他对象和服务的起始类，并用于返回OPC Group类对象；
OPC Group：存储由若干OPC Item组成的Group信息，并用于返回OPC Item类对象。
OPC Item：存储具体Item 的定义、数据值、状态值等信息。
由于OPC规范基于OLE/COM技术，同时OLE/COM的扩展远程OLE自动化与DCOM技术支持TCP/IP等多种网络协议，因此可以将OPC客户、服务器在物理上分开，分布于网络不同节点上。
OPC规范可以应用在许多应用程序中，如它们可以应用于从SCADA 或者DCS系统的物理设备中获取原始数据的最低层，它们同样可以应用于从SCADA 或者DCS系统中获取数据到应用程序中。实际上，OPC设计的目的就是从网络上某节点获取数据。图4.2.2OPC的客户/服务器关系图同样描述了OPC在SCADA系统的应用。OPC技术规范设计系统在进行新型微机远动系统的研制中，各个计算机以及各个模块的数据交换应该按照OPC规范进行。这样做有以下好处：
OPC规范以OLE/DCOM为技术基础，而OLE/DCOM支持TCP/IP等网络协议，因此可以将各个子系统从物理上分开，分布于网络的不同节点上。
OPC按照面向对象的原则，将一个应用程序（OPC服务器）作为一个对象封装起来，只将接口方法暴露在外面，客户以统一的方式去调用这个方法，从而保证软件对客户的透明性，使得用户完全从低层的开发中脱离出来。
OPC实现了远程调用，使得应用程序的分布与系统硬件的分布无关，便于系统硬件配置以及，使得系统的应用范围更广。
采用OPC规范，便于系统的组态化，将系统复杂性大大简化，可以大大缩短软件开发周期，提高软件运行的可靠性和稳定性，便于系统的升级与维护。
OPC规范了接口函数，不管现场设备以何种形式存在，客户都以统一的方式去访问，从而实现系统的开放性，易于实现与其它系统的接口。
OPC技术的应用
由于OPC技术的采用，使得可以以更简单的系统结构、更长的寿命、更低的价格解决工业控制成为可能。同时现场设备与系统的连接也更加简单、灵活、方便。因此OPC技术在国内的工业控制领域得到了广泛的应用，主要应用领域如下：1）数据采集技术OPC技术通常在数据采集软件中广泛应用。现在众多硬件厂商提供的产品均带有标准的OPC接口，OPC实现了应用程序和工业控制设备之间高效、灵活的数据读写，可以编制符合标准OPC接口的客户端应用软件完成数据的采集任务。2）历史数据访问OPC提供了读取存储在过程数据存档文件、数据库或远程终端设备中的历史数据以及对其操作、编辑的方法。3）报警和事件处理OPC提供了OPC服务器发生异常时，以及OPC服务器设定事件到来时向OPC客户发送通知的一种机制，通过使用OPC技术，能够更好的捕捉控制过程中的各种报警和事件并给予相应的处理。4）数据冗余技术工控软件开发中，冗余技术是一项最为重要的技术，它是系统长期稳定工作的保障。OPC技术的使用可以更加方便的实现软件冗余，而且具有较好的开放性和可互操作性。5）远程数据访问借助Microsoft的DCOM（分散式组件对象模型）技术，OPC实现了高性能的远程数据访问能力，从而使得工业控制软件之间的数据交换更加方便。
OPC技术在工业控制领域应用中的作用
OPC技术对工业控制系统的影响及应用是基础性和革命性的，简单地说，它的作用主要表现在以下几个方面：解决了设备驱动程序开发中的异构问题OPC解决了设备驱动程序开发中的异构问题。随着计算机技术的不断发展，用户需求的不断提高，以DCS（集散控制系统）为主体的工业控制系统功能日趋强大，结构日益复杂，规模也越来越大，一套工业控制系统往往选用了几家甚至十几家不同公司的控制设备或系统集成一个大的系统，但由于缺乏统一的标准，开发商必须对系统的每一种设备都编写相应的驱动程序，而且，当硬件设备升级、修改时，驱动程序也必须跟随修改。同时，一个系统中如果运行不同公司的控制软件，也存在着互冲突的风险。
有了OPC后，由于有了统一的接口标准，硬件厂商只需提供一套符合OPC技术的程序，软件开发人员也只需编写一个接口，而用户可以方便地进行设备的选型和功能的扩充，只要它们提供了OPC支持，所有的数据交换都通过OPC接口进行，而不论连接的控制系统或设备是哪个具体厂商提供。解决了现场总线系统中异构网段之间数据交换OPC解决了现场总线系统中异构网段之间数据交换的问题。现场总线系统仍然存在多种总线并存的局面，因此系统集成和异构控制网段之间的数据交换面临许多困难。有了OPC作为异构网段集成的中间件，只要每个总线段提供各自的OPC服务器，任一OPC客户端软件都可以通过一致的OPC接口访问这些OPC服务器，从而获取各个总线段的数据， 并可以很好地实现异构总线段之间的数据交互。而且，当其中某个总线的协议版本做了升级，也只需对相对应总线的程序作升级修改。可作为访问专有数据库的中间件OPC可作为访问专有数据库的中间件。实际应用中，许多控制软件都采用专有的实时数据库或历史数据库，这些数据库由控制软件的开发商自主开发。对这类数据库的访问不像访问通用数据库那么容易，只能通过调用开发商提供的API函数或其它特殊的方式。然而不同开发商提供的API函数是不一样的，这就带来和硬件驱动器开发类似的问题：要访问不同监控软件的专有数据库，必须编写不同的代码，这样显然十分繁琐。采用OPC则能有效解决这个问题，只要专有数据库的开发商在提供数据库的同时也能提供一个访问该数据库的OPC服务器，那么当用户要访问时只需按照OPC规范的要求编写OPC客户端程序而无需了解该专有数据库特定的接口要求。便于集成不同的数据OPC便于集成不同的数据，为控制系统向管理系统升级提供了方便。当前控制系统的趋势之一就是网络化，控制系统内部采用网络技术，控制系统与控制系统之间也网络连接，组成更大的系统，而且，整个控制系统与企业的管理系统也网络连接，控制系统只是整个企业网的一个子网。在实现这样的企业网络过程中，OPC也能够发挥重要作用。在企业的信息集成，包括现场设备与监控系统之间、监控系统内部各组件之间、监控系统与企业管理系统之间以及监控系统与Internet之间的信息集成，OPC作为连接件，按一套标准的COM对象、方法和属性，提供了方便的信息流通和交换。无论是管理系统还是控制系统，无论是PLC（可编程控制器）还是DCS，或者是FCS（现场总线控制系统），都可以通过OPC快速可靠的彼此交换信息。换句话说，OPC是整个企业网络的数据接口规范，所以，OPC提升了控制系统的功能，增强了网络的功能，提高了企业管理的水平。使控制软件能够与硬件分别设计OPC使控制软件能够与硬件分别设计、生产和发展，并有利于独立的第三方软件供应商产生与发展，从而形成新的社会分工，有更多的竞争机制，为社会提供更多更好的产品。
OPC作为一项逐渐成型的技术已得到国内外厂商的高度重视，许多公司都在原来产品的基础上增加了对OPC的支持。由于统一了数据访问的接口，使控制系统进一步走向开放，实现信息的集成和共享，用户能够得到更多的方便。OPC技术改变了原有的控制系统模式，给国内系统生产厂商提出了一个发展的机遇和挑战，符合OPC规范的软、硬件也已被广泛应用，给工业自动化领域带来了勃勃生机。[1]