opc客户端读取数据品质是bad_听说看了这篇文章就彻底搞懂了什么是OPC(上)

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

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

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

6d540408c58308fe48db222df371a501.png

问一个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。

6f29d537e8e9e5dcfe11f63399e7a58e.png

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服务器之间的数据移动,指定方向,数据转换等。

7a5a7771a31c41cc27d4f88acdd79859.png

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

bb2b353a0bbb6dafd458b3ff692a781e.png

什么是 OPC数据质量 和 TImestamps ?

1c053b6a105535f2ae80b344a214c4c1.png

在 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客户端应用程序通常可以配置为更改它们在操作员屏幕或历史数据库中向用户显示值的方式,以便人们知道该值不值得信任和不值得信任原因。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java怎么将程序保存在桌面_在Java桌面应用程序中保留数据的最佳方法是什么?...

我的桌面应用程序中有一大堆Java对象,我试图决定将文件作为文件系统的最佳方式.我曾经有过一些想法&#xff1a;>使用DataOutputStream滚动我自己的串行器&#xff1a;这将给我最大的控制文件中的内容,但是以微量管理为代价.>使用ObjectOutputStream及其各种相关类的直接…

JAVA实现inotify一样的功能_WPF实现INotifyPropertyChanged

我已经设置了一个属性并实现了INotifyPropertyChanged像这样......public event PropertyChangedEventHandler PropertyChanged;public FlowProcess LastSelectedFlowProcess{get { return _lastSelectedFlowProcess; }set{_lastSelectedFlowProcess value;Notify("LastS…

php导入json文件_[php]导入超大json文件

前言在之前的文章《做一个twitter的插件玩玩》中&#xff0c;我做了一个批量删除推文(转发推文)的工具&#xff0c;该工具能够删除前3200条推文&#xff0c;但因为总数太多(4.3万条)&#xff0c;api接口不支持获取所有的推文&#xff0c;所以我采用了下载的方式&#xff0c;直接…

php 生成dbf,php 读取vfp 8.0,9.0所产生的dbf文件

VFP 9.0 PHP odbc求大神指导。。。由VFP8.0以上制造的DBF文件&#xff0c;自带的Tabel Type> autoinc field 或者Blob field&#xff0c;想通过PHP读取&#xff0c;不行吗&#xff1f;代码很简单如下》$add’c://BatMan//Daten//ladert2.DBF’;$e”Driver{Microsoft Visual …

linux怎样写java代码,linux 怎么写java

linux 怎么写java一、环境安装由于使用 yum 或者 apt-get 命令 安装 openjdk 可能存在类库不全&#xff0c;从而导致用户在安装后运行相关工具时可能报错的问题&#xff0c;所以此处我们推荐采用手动解压安装的方式来安装 JDK。具体步骤如下&#xff1a;1.下载 JDK进入Oracle官…

java登陆密码验证失败,java用户名密码验证示例代码分享

类:NameII 权限:public方法:main 权限:public参数:name,password,denglu,i;参数介绍:name&#xff0c;数据类型 String &#xff0c;用来存储一个从 input 中获取的值&#xff0c;在本程序当中用作用户名的存放&#xff1b;password&#xff0c;数据类型 String &#xf…

php 五角星,php使用GD库画五角星_PHP教程

01 $width 500;02 $height 500;0304 $im imagecreatetruecolor($width, $height);0506 $red imagecolorallocate($im, 230, 0, 0);07 imagefill($im, 0, 0, $red);0809 $yellow imagecolorallocate($im, 255, 255, 0);1011 //设定画出五角星的五个顶点形成的 正五边形的边…

java的配置文件后缀,Java - 敏感配置文件位置

0x00 前言项目中常遇到Java站点&#xff0c;像SSM、springboot这些框架开发的通常一些配置文件都在固定的位置&#xff0c;当然还有Tomcat容器的配置文件。0x01 记录1.properies配置文件这个文件的作用很重要&#xff0c;通常是一个JavaWeb项目中的配置文件&#xff0c;以.prop…

apmserv 5.2.6 升级php,APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4

Thursday, December 12, 2013 1:59 AM 17173606 php-5.3.28-Win32-VC9-x86.zipranhou 然后解压&#xff0c;得到一个新的目录&#xff1a;把原来APMServ目录中的PHP目录中的&#xff1a;ext &#xff0c; extras 两个目录复制过来&#xff0c;遇到重复文件&#xff0c;不要覆盖…

php原生sql语句删除,PHP 的批量删除sql语句

PHP 的批量删除sql语句发布于 2014-10-07 22:57:44 | 92 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&#xff0c;入门…

php 正则mac地址,正则表达式匹配MAC地址、邮箱地址、IP地址

(1)匹配MAC地址1)MAC地址由12个16进制的字母组成2)16个字母是 0~9、a~f 。不区分大小写&#xff0c;一般为大写3)每两个字母为一组&#xff0c;共六组&#xff0c;每组间用冒号:隔开匹配思路&#xff1a;00:0C:29:88:83:1A1)先匹配前两个字母&#xff1b;用元字符[] 匹配单个字…

超级好用的一个php上传图片类(随机名_缩略图_加水印),超级好用的一个php上传图片类(随机名,缩略图,加水印)...

Upimages.class.php php上传类复制代码 代码如下:class UpImages {var $annexFolder "upload";//附件存放点&#xff0c;默认为&#xff1a;annexvar $smallFolder "small";//缩略图存放路径&#xff0c;注&#xff1a;必须是放在 $annexFolder下的子目录…

java pair class,在Java Pair Class Tuple中获取值

使用该getValueX()方法从Java的Pair Tuple类中的特定索引处获取值。例如&#xff0c;getValue0()。首先让我们看看使用JavaTuples所需的工具。要在JavaTuples中使用Pair类&#xff0c;您需要导入以下包-import org.javatuples.Pair;注-下载和运行JavaTuples程序的步骤。如果您正…

matlab读取data格式,ReadData3D 各种格式图像的读取,包括医学 效果很好 matlab 272万源代码下载- www.pudn.com...

文件名称: ReadData3D下载 收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 51 KB上传时间: 2017-03-29下载次数: 0提 供 者: 李忠宽详细说明&#xff1a;各种格式图像的读取&#xff0c;包括医学图像的读取&#xff0c;效果很好-Various formats of image reading, inclu…

mysql vs2008,vs2008 使用mysql

近期转到研发岗&#xff0c;需要用到mysql、vs2008&#xff1b;之前由于没有做过&#xff0c;写下这篇文章记录下这周所学的东西&#xff01;先安装好相关软件安装时间比较久耐心等待......安装完毕之后打开vs&#xff0c;Tools -> opptions ->设置完毕之后&#xff0c;点…

matlab pretty什么用,matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)...

EDA365欢迎您登录&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x& t7 n0 d: a# m0 O( y- Lmatlab中有些计算结果比较长&#xff0c;直接查看有些困难&#xff0c;下面介绍pretty和symdisp函数优化输出结果&#xff0c;使结果更为直观。- …

基于matlab的fir数字滤波器设计开题报告,基于matlab的fir数字滤波器仿真与设计(开题报告)(共9篇).docx...

基于matlab的fir数字滤波器仿真与设计(开题报告)(共9篇) 毕业论文 开题报告 系别电子信息工程系专业电子信息工程班级学生姓名学号指导教师XXX报告日期 毕业论文开题报告表 1、课题来源 2、研究目的和意义 3、国内外研究现状和发展趋势及综述 4、本课题的主要研究内容及…

php explode 循环,PHP explode 切割字串 快速取得最後一個值

選取月份2021 年 3 月 (13)2021 年 2 月 (13)2021 年 1 月 (20)2020 年 12 月 (24)2020 年 11 月 (20)2020 年 10 月 (19)2020 年 9 月 (22)2020 年 8 月 (21)2020 年 7 月 (23)2020 年 6 月 (20)2020 年 5 月 (20)2020 年 4 月 (19)2020 年 3 月 (22)2020 年 2 月…

php 留言板项目 ajax,PHP Ajax留言板

本案例代码已经提供下载&#xff0c;点击这里&#xff01;AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML)&#xff0c;AJAX并非缩写词&#xff0c;而是由Jesse James Gaiiett创造的名词&#xff0c;是指一种创建交互式。Ajax的核心是JavaScript对象XmlHttpRe…

php如何设计自定义模型,php – Kohana ORM模型中的自定义方法

我有这两个模型&#xff1a;class Model_user extends ORM {protected $_has_many array(credits, array(model>credit, foreign_key>user));}class Model_credit extends ORM {protected $_belongs_to array(user, array(model>user, foreign_key>user));protec…