zoukankan      html  css  js  c++  java
  • 听说看了这篇文章就彻底搞懂了什么是OPC(上)

    从2000年初以来,我们就一直在使用OPC软件互操作性标准,而那些正准备踏入和想要踏入工业自动化领域的人们却对这些含义感到困惑。

    所以在本中,我将系统地为你梳理OPC知识。

    OPC首字母缩写词代表什么?

    问一个OPC老手,他们或许会笑,因为他们知道有很多含义!在经典的且程序化的说法是:O LE for P rocess C ontrol(用于过程控制的OLE)。OLE 或对象链接和嵌入是Windows的基本早期构建块,允许应用程序在它们之间共享复杂的信息。我记得Windows 3.0的第一个演示中,人们将 Excel电子表格嵌入到 Microsoft Word文档中,以及更新电子表格,打开Word和更新文档的重要性。原始OPC标准源自该技术和 COM 或 Windows 组件对象模型。

    从那以后,我们会听到很多其他的一些定义,但是比较出名的是现在官方OPC基金会所给出的说法是:它的含义是O pen P latform C ommunications(开放平台通信)。其实无论它的定义是什么,其目标保持不变:消除自动化软件和硬件平台之间互操作性的障碍,为用户提供选择。

    OPC Client(OPC客户端)和OPC Server(OPC服务器)之间有什么区别?

    OPC客户端请求数据,有时也想写入数据。如果允许的话,服务器会响应客户端的请求并提供数据或接受其写入。最简单的形式就是这样。

    可以将OPC服务器看作是协议转换器,OPC服务器使用设备的专用协议与设备通信,然后使用OPC Classic和OPC UA规范定义的标准化格式提供对该数据的访问。通常情况下,OPC服务器在OPC客户端请求读取或写入数据之前不会执行任何操作。而某些OPC服务器可以配置为即使在没有客户端请求的情况下也可以从设备轮询数据。这通常是为了允许OPC服务器在其内部缓存中就具有当前数据并且在客户端请求它时就已经准备就绪(但是是以产生可能不需要的通信流量为代价。)目前许多OPC服务器为用户提供了灵活性,可以根据应用需求来进行配置。

    如果我的控制硬件供应商说他们支持OPC,那么为什么我还需要OPC服务器?

    当硬件供应商表示他们支持OPC时,通常并不意味着他们直接将OPC服务器嵌入到他们的硬件中。他们的意思是他们拥有OPC服务器软件,该软件在某个基于Windows的计算机上运行,​​​​该计算机与其硬件对话并使用一个或多个OPC标准公开数据。此外,对于某些硬件供应商,可能需要额外的许可费才能启用此OPC服务器功能。我们经常听到用户对这一点感到困惑。其实只是为了在销售时更好听一点,才会说“我们支持OPC”,所以在此需要澄清一下供应商所说的内容。

    现在,一些供应商开始利用多平台功能,并将OPC UA服务器直接嵌入到他们的PLC中。如果你的 HMI或SCADA软件支持OPC UA,那么这可能会非常方便。如果你的客户端应用程序不支持OPC UA,那么则可以使用OPC网关应用程序来帮助你从OPC UA 连接到 DA。

    OPC服务器必须在Server类计算机和操作系统上运行吗?

    OPC服务器不需要服务器类硬件或操作系统。有些供应商可能会针对其具体实施要求这样做,但OPC标准并没有规定这一点。OPC服务器软件通常相当轻巧,可以轻松地与台式PC上的其他软件应用程序共存。你可以咨询你的OPC服务器供应商,了解你的具体应用要求。(以Software Toolbox的产品为例,在它的每个产品网站区域都有一个规格页面,虽然他们的OPC服务器通常不需要服务器级硬件或操作系统。)

    2个OPC服务器如何相互通信?而2个OPC客户端又如何相互通信?

    在OPC世界中,通常客户端是与服务器通信的。但是好消息是OPC服务器可以与其他OPC服务器通信,OPC客户端也可以使用相同的方式。

    为什么两个OPC服务器需要通信?你可以想象一下,你有PLC供应商A和PLC供应商B,并且有一个OPC服务器需要使用两个不同的PLC供应商的特定设备协议与每个服务器进行通信。你希望将数据从PLC A移动到PLC B,这意味着2个不同的OPC服务器需要相互通信。你可以使用OPC Bridging(OPC桥)软件应用程序执行此操作。OPC桥接软件应用程序是OPC客户端应用程序,可以连接到许多不同的OPC服务器,然后允许你映射两个OPC服务器之间的数据移动,指定方向,数据转换等。

    在OPC客户端相互通信的情况下,最常见的应用是需要交换数据的两个不同的SCADA或HMI软件应用程序。第一个解决方案是查看HMI或SCADA软件是否支持OPC服务器接口以及OPC客户端。许多人都是这样做的,那么如果是这样,那么问题就解决了两个客户端应用程序使用其OPC客户端接口与彼此的OPC服务器接口进行通信。如果没有,并且客户端纯粹是OPC DA,UA或DA和UA客户端,那么使用诸如 Cogent DataHub 之类的应用程序也将是解决方案。Cogent DataHub可以充当OPC服务器,其中包含你定义的标记列表,并且两个OPC客户端都可以读取/写入这些公共标记。

    什么是 OPC数据质量 和 TImestamps ?

    在 OPC 之前,当你的 HMI 或 SCADA 软件用内置驱动程序读取数据之前,它要么得到数据要么没有数据。 如果你没有得到数据,你就无法知道最后一次获得数据是什么时候。 两者之间没有差别。

    使用OPC服务器,它们可以缓存或保留从设备读取的最后一个值。它们还会在缓存中为数据加时间戳(TImestamps),通常使用OPC服务器从设备读取值的时间。某些设备存储上次更改数据的时间戳,并可使用设备特定的通信协议将其传递给OPC服务器。如果设备支持该设备并且OPC服务器支持它,那么则可以使用设备时间戳。(如:支持该功能的协议的设备时间戳的Software Toolbox产品包括TOP Server DNP,IEC 61850和IEC 60870驱动程序。)

    OPC质量是OPC服务器告诉OPC客户更多关于它们提供价值的一种方式。这样做的方法是传递一个数字以及值和时间戳。在OPC中我们称之为VQT或"Value,Quality,Timestamp"(“价值,质量,时间戳”)。OPC质量编号实际上是通过设置字位来确定的,这会导致产生不同的值。值192表示“良好”质量,这意味着OPC服务器最后一次轮询设备它能够成功获取数据,因此OPC客户端可以信任该值。值为0表示质量不佳,通常表示OPC服务器与其轮询的设备之间存在通信故障。OPC服务器可以使用一系列其他值来表示质量差的原因,但目前它们并未得到广泛实施。我之前有发过一篇关于OPC数据质量的文章<<一分钟告诉你什么是OPC DA质量代码>>,感兴趣的朋友可以去看看。

    其实最重要的是OPC客户端应用程序通常可以配置为更改它们在操作员屏幕或历史数据库中向用户显示值的方式,以便人们知道该值不值得信任和不值得信任原因。

    关于OPC UA,OPC DA等相关内容,我会在下一篇文章中继续详细讲解,未完待续。

  • 相关阅读:
    [UVA 10603]Fill
    [BZOJ 4152][AMPPZ 2014]The Captain
    P4779单源最短路径(标准版)
    P3372 线段树模版1
    P1776宝物筛选
    最长上升子序列模版
    01背包问题
    SHOI2008 汉诺塔
    log P1080国王游戏
    最小生成树模版 Kruskal
  • 原文地址:https://www.cnblogs.com/NB-Juvien/p/9437778.html
Copyright © 2011-2022 走看看