从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等相关内容,我会在下一篇文章中继续详细讲解,未完待续。

听说看了这篇文章就彻底搞懂了什么是OPC(上)的更多相关文章

  1. 看了这篇文章,我搞懂了StringTable

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 String应该是Java ...

  2. 什么是5G,看了这篇文章你就彻底懂了

    人类已经经历了六次信息技术革命为: 第一次:语言的使用 让信息可以分享 第二次:文字的创造 让信息可以记录 第三次:印刷术的发明 让信息可以传得更远 第四次:无线电的发明 让信息可以远距离实时传输 第 ...

  3. 【转帖】我以为我对Kafka很了解,直到我看了这篇文章

    我以为我对Kafka很了解,直到我看了这篇文章 2019-08-12 18:05 https://www.sohu.com/a/333235171_463994?spm=smpc.author.fd- ...

  4. APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了

    APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了 彻底理解android中的内部存储与外部存储 存储在内部还是外部 所有的Android设备均有两个文件存储区域:"intern ...

  5. [转帖]看完这篇文章你还敢说你懂JVM吗?

    看完这篇文章你还敢说你懂JVM吗? 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用 ...

  6. [转帖]看完这篇文章,我奶奶都懂了https的原理

    看完这篇文章,我奶奶都懂了https的原理 http://www.17coding.info/article/22 非对称算法 以及 CA证书 公钥 核心是 大的质数不一分解 还有 就是 椭圆曲线算法 ...

  7. 细心看完这篇文章,刷新对Javascript Prototype的理解

    var person={name:'ninja'}; person.prototype.sayName=function(){ return this.name; } 分析上面这段代码,看看有没有问题 ...

  8. Python正则表达式,看完这篇文章就够了...#华为云&#183;寻找黑马程序员#【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  9. 如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章

    前言 当你准备去复习Spring中Bean的生命周期的时候,这个时候你开始上网找资料,很大概率会看到下面这张图: 先不论这张图上是否全面,但是就说这张图吧,你是不是背了又忘,忘了又背? 究其原因在于, ...

随机推荐

  1. 【LeetCode】70. 爬楼梯

    爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解 ...

  2. mysql操作数据表

    目录 创建数据表 列约束 查看数据表结构 列类型(字段类型) 整型 浮点型 字符串 时间日期类型 Date Time Datetime Timestamp Year 枚举enum 修改表名 增加字段 ...

  3. LR11录制手机/pad App脚本多种方法介绍(Mobile App补丁包)

    总体来说,通过LR录制手机脚本的方式有三种:1)通过代理方式录制,保证手机电脑在同一个网段:2)通过抓包录制,在手机上安装Mobile Recorder:3)通过安卓模拟器录制,本地安装android ...

  4. SpringDataJpa-多表操作

    多表之间的关系和操作多表的操作步骤 表关系 一对多 一对多      >>  一:主表     多:从表 多对多     >>  中间表中最少应该由两个字段组成,这两个字段作为 ...

  5. 2019徐州网络赛 H.function

    题意: 先有\(n=p_1^{k_1}p_2^{k_2}\cdots p_m^{k_m}\),定义\(f(n)=k_1+k_2+\cdots+k_m\). 现在计算 \[ \sum_{i=1}^nf( ...

  6. 密标与pdf有什么关系

    密标与pdf有什么关系 密标与pdf有什么关系 密标与pdf有什么关系

  7. Django之ContentType,GenericRelation, GenericForeignKey

    contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. models.py文件的表结构写好后,通过makemigr ...

  8. LeetCode 动态规划

    动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算. ...

  9. js 构造函数中的 return

    本文链接:https://blog.csdn.net/qq_36209248/article/details/89190978 默认情况下,没有return的函数的返回值为undefined(即没有定 ...

  10. Excel日历控件实现下拉选取日期含VB代码实现

    以下是Excel2016通过安装控件,实现表格下拉选择日期的一些步骤: 知识准备工作:先了解下如何安装控件,这一部分很重要,excel选择可用宏https://jingyan.baidu.com/ar ...