OPC 技术






4.77/5 (46投票s)
2005年12月18日
10分钟阅读

374459
基于 COM/OLE 的过程控制技术 - 概述。
目录
OPC 服务器示意图。
图1。
引言
COM/OLE 应用程序广泛应用于工业自动化和过程控制领域。由于了解这些技术的程序员不多,我决定分享我在 OPC 方面的经验,大多数开发人员会乐于扩展他们关于 COM/OLE 应用程序领域的知识。
这是我第一次在 Code Project 上发表文章,如果您觉得有什么需要改进的地方,请给我留言。非常欢迎您的建议和评论。
文章目标:提供 简单易懂 的 OPC 概述。更详细的信息和规范可以从 OPC 基金会和资源部分提到的网站下载。
首先,关于上图……
图 1 的理论现在回到 我们的 OPC 课程。本文概述了 OPC 并涵盖以下主题。源代码不可用,因为大多数服务器代码是特定于硬件的。而且客户端仍然需要一个服务器才能连接。但是,如果您想尝试 OPC,请查看下面的资源部分。
左下角是一个硬件设备。它可能是一个 PLC(可编程逻辑控制器)、一个温度传感器、一个辊道控制器,或者几乎任何工业设备。中心部分是 OPC 服务器。右侧是想要 操作设备 的客户端。OPC 服务器提供标准的 COM 接口,因此任何了解这些 OPC 接口 的客户端都可以与服务器交互并操作设备——无需为该硬件编写设备驱动程序。硬件的多样性可以由 OPC 服务器处理,客户端仍然可以从该硬件读取和写入。
OPC 的历史
1996 年,罗克韦尔软件、Intellution 等公司联合成立了一个联盟,为过程控制定义了一个标准。当时,SCADA 和类似标准化工作正在过程控制和自动化行业进行。该小组创建了一个基于微软的 OLE (Object Linking and Embedding) 的初步草案。它被称为 OLE for Process Control (OPC)。OPC 基金会 发布规范并管理 OPC 技术中的所有内容。
今天,超过 300 家公司是 OPC 基金会的成员。微软、通用电气、西门子、罗克韦尔、ABB、福特、霍尼韦尔等都是积极贡献和使用 OPC 技术的成员。
2005 年,OPC 基金会发布了 OPC 统一架构草案。在此之前发布了前身草案 - OPC HDA、OPC DX、OPC AE、OPC Commands、OPC Security。我们将在本文中简要研究它们。
为什么我们需要 OPC?它的优势
我最初也是 OPC 的初学者(之前在 DevTools、eLearning、CAD/PLM、Multimedia 方面有不同的经验),对它为什么需要一无所知。我发现通过案例研究学习非常有帮助,所以我将为您做同样的事情。为了理解过程控制行业标准化的需求,让我为您介绍一个石化巨头组织的实际案例研究。请参考图 2。它展示了该石化工厂中正在运行的设备和软件应用程序。
图2。
现在,像我这样的人 :) 来到他们面前说:“嘿,伙计们,我们为什么不聪明一点,按照图 3 的方式实现呢?”观察一下复杂性的降低。现在所有软件应用程序都只与 OPC 服务器通信。所有设备也只响应 OPC 服务器。OPC 服务器为围绕硬件的软件应用程序提供了 黑盒。
图3。
正如您正确观察到的,好处是
- 减少设备负载。
- 系统可伸缩性增加。
- OPC 服务器提供数据缓存。
- 客户端应用程序无需了解硬件协议细节。
- 延长设备寿命(它不再需要为多个客户端服务)。
- 互操作性(Unix/Linux 和 Windows - OPC 支持这两个平台)
- 标准化
OPC 概念和术语
OPC 规范定义了一致的术语来识别所涉及的各种实体。OPC 数据表示方式的最佳类比是文件系统层次结构。OPC 将其称为 OPC 地址空间。在这个地址空间中,每个实体都可以通过其“完整路径”唯一标识。例如,请参考图 4。 OPC 地址空间是分层的。它从根目录开始。然后是逻辑文件夹和子文件夹。叶节点是OPC 项或标签。通常您的传感器和执行器构成叶节点。这是一个重要的理解点,我们将花一些时间来讨论它。例如,您有一个可以感测温度、压力和湿度的设备。那么这些属性通常被映射为某些文件夹-子文件夹层次结构下的叶节点。我们稍后会看到这种层次结构可能是什么样子。如果您有一个执行器(例如,Turn_ON_Boiler),那么它也成为一个叶节点。您可以向Turn_ON_Boiler写入例如 1 或 0 的值,并且将采取必要的行动 - 当然我们只是假设您的硬件控制机制以这种方式运行。您可以从温度读取以了解感测值。希望我们到此为止都清楚了。现在让我们了解这个“逻辑”文件夹的东西。逻辑文件夹和子文件夹用于表示您的工业自动化系统的状态。这种配置实际上可以映射到一些物理配置甚至地理设置。让我们也花一些时间来理解这一点。例如,在此图中,我们有一个以太网通信通道,无线仪表连接到该通道。在无线仪表内部,有两个类“Average”和“Channel1”。这些文件夹和子文件夹是分组您的过程控制参数和值的非常有效的方法。
这个地址空间被“发布”给 OPC 服务器的所有客户端。OPC 客户端可以是简单的电子表格,如 Excel、记录来自各种工业设备数据的数据历史记录器。每个客户端都可以在 OPC 服务器内部创建一个名为组的逻辑实体。每个 OPC 组 可以包含一组 OPC 项。
同步和异步 OPC 项读取
OPC 规范支持对硬件设备的同步和异步读写。由于并非所有硬件设备操作都足够快,因此异步读写设备的机制非常方便。
COM 接口和组件类别
那么,现在假设您希望编写您的第一个 OPC 客户端。如果您正在开发一个与服务器运行在同一本地机器上的客户端,并且您了解所有 OPC Server ProgID,那么我们就不必担心。但是由于那是不可能的,我们需要一个枚举机制。以下是一个枚举机制。OPC Component Categories Enumeration issue is addressed by requiring OPC servers to implement component categories. For example, all servers that are OPC DA 1.0 (more about this in later sections) compliant implement COM category with CatID {63D5F430-CFE4-11d1-B2C8-0060083BA1FB}. Similarly the servers compliant with OPC Data Access 2.0 implement category with CatID {63D5F432-CFE4-11d1-B2C8-0060083BA1FB}.因此,OPC 基金会分发了一个名为 OPCEnum 的 Windows 服务。
Enumerating OPC Servers OPCEnum.exe runs as a Windows Service and provides enumeration functionality. Using OPCEnum, the client applications can query available OPC Servers on local as well as remote networked machines.现在我们来看看服务器组件接口。
图5。
IOPCBrowse 此接口具有允许浏览 OPC 地址空间的方法。客户端可以逐级查询文件夹和子文件夹,直到叶节点。层次结构如下图 4 所示。图 4。
IOPCItemIO 接口用于执行 OPC 项的读写操作。
现在让我们了解 OPC 客户端如何与 OPC 服务器交互。图 6 总结了所涉及的重要步骤。
图6。
- 更新率 [毫秒],即读取项值的速率。
- 活动或非活动标志 [布尔值],仅当组活动时才处理项。
- 死区 [%] 此带内的变化被认为是 NULL。
- IO 模式 [同步/异步] 所有执行的操作都是同步或异步的。
- 时间偏差 [时间] 相对于格林威治标准时间的本地时间带。
图7。
您可能已经识别出这些 IOPCSyncIO 等接口,它们与同步和异步 OPC 项读写操作相关。OPC 组组件还支持用于客户端通知事件的连接点容器。到现在您至少已经有一些概念,OPC 只是另一个正在运行的 COM 应用程序——只是它是一个标准,这意味着所有 OPC 客户端和 OPC 服务器都受设计契约的约束。
OPC 合规性
OPC 基金会提供合规性测试应用程序。使用这些套件,可以在 OPC 服务器上执行一定数量的测试用例,并确定它们是否符合特定的 OPC 规范。有几种可用的 OPC 规范(在下一节中解释)。典型的合规性报告如下图 8 和 9 所示。
图8。
图9。
OPC 规范
OPC 基金会负责维护和发布新规范。它是一个由行业专家、生产 OPC 产品的公司和使用 OPC 产品的组织组成的机构。到目前为止,OPC 基金会已发布以下规范。- OPC-DA(数据访问) 提供实时数据访问。我们可以从 OPC-DA 服务器查询温度、压力、密度、加速度和其他类型过程控制数据的最新值。
- OPC-HDA(历史数据访问) 用于检索历史过程数据进行分析。这些数据通常存储在档案、数据库或远程遥测系统中。
- OPC-AE(报警与事件) OPC AE 服务器用于交换和确认过程报警与事件。
- OPC-DX(数据交换) 定义了一个 OPC 服务器如何与其他 OPC 服务器交换数据。
- OPC-XML(XML 数据访问) 定义了基于 XML 标准的模式和数据表示格式。使得在所有操作系统(Windows、Unix、Solaris 等)之间共享和操作过程控制数据成为可能。
- 在 OPC 安全、OPC 批处理、OPC 命令、OPC for ERP 方面投入了大量努力。
最近,OPC 基金会发布了OPC 统一架构草案,旨在进一步集成过程控制数据和软件与 ERP 等其他工业软件系统。
资源
关于 OPC,网上有大量的资源。- OPC 基金会网站:http://www.OPCFoundation.Org
- OPC 统一架构:http://www.opcconnect.com/ua.php
- OPC Connect 网站:http://www.opcconnect.com
- Control.com 网站也有一些关于 OPC 的有用讨论:http://www.control.com