什么是OPC(OPC概念介绍)

/ 0评 / 0

什么是OPC(OPC概念介绍)一、OPC概念

OPC(OLE forProcess Control)是使用微软的COM/DCOM技术实现自动控制的工业标准。管理该标准的国际组织是OPC基金会。

为什么需要OPC?

OPC的提出是为了规范不同供应商的设备和应用之间的软件接口,简化它们之间的数据交换。因此,可以为用户提供过程控制软件组件产品,这些产品可以自由组合和使用,而不依赖于特定的开发语言和开发环境。

与驱动器的系统连接:

使用OPC的控制系统的组成:

OPC是利用微软的COM/DCOM技术实现自动控制的协议。采用典型的C/S模式。硬件设备的驱动由硬件厂商完成,提供统一OPC接口标准的Server程序。软件厂商只需要按照OPC标准接口编写Client程序,然后访问Server程序进行读写,从而实现与硬件设备的通信。

OPC协议包括:

1.DA(数据访问)规范:该规范主要用于访问数据

2.A & ampe(报警和事件)规范:基于事件,客户端订阅,事件触发后服务器端主动提交回数据。

3.HDA(历史数据访问)规范

4.基于XML的实时值交换

二、OPC UA

为了应对标准化和跨平台的趋势,更好地推广OPC,OPC基金会在近年来OPC成功应用的基础上,推出了新的OPC标准——OPC UA。OPC UA接口协议包含了之前的a & E:DA,OPC XMLDA或者HDA只需要一个地址空间就可以访问所有之前的对象,而且不受WINDOWS平台的限制,所以是跨平台的,因为是从传输层Scoket上面定义的,导致比之前的OPC有更高的灵活性和安全性。同时,OPC UA还采用了可靠的通信机制,接口简单一致。例如,要访问三种不同类型的传统OPC服务器——数据访问(DA)、报警和事件(AE)和历史数据访问(HDA),要获得温度传感器的当前值、高温事件和温度的历史平均值,应依次使用不同的命令;使用OPC UA,只需一个组件就可以非常轻松地完成。因此,可以大大缩短配置和工程时间。

OPC UA的优点:

1.通用接口集成了所有以前的OPC特性和信息,以及& E、d a、OPC XML DA或HDA

2.更加开放,独立于平台,兼容Windows和Linux

3.对象类型被扩展以支持更复杂的数据类型,如变量、方法和事件

4.安全功能集成在协议层和应用层,更加安全

5.易于配置和使用

OPC和OPC UA协议的区别:

虽然OPC通过配置COM/DOM提供数据加密和签名功能,并配置防火墙和用户权限使数据访问更安全,但IT会增加额外的工作量,尤其是非IT工程师;对于OPCUA,数据加密和签名、防火墙等是默认功能。比如基于DOM的OPC采用动态端口分配,端口不固定,防火墙很难确定,而OPC UA的端口是唯一的,比如SINUMERIK 840D是PORT 4840,SIMATIC S7是PORT 4845。DOM/COM也可以生成不同级别的事件日志,但是日志内容不够详细,只提供了“谁连接到服务器”,这是OPC UA的默认功能,生成的日志内容更加全面。

核心区别在于,OPC和OPC UA协议使用不同的TCP层,如下所示:

OPC基于应用层的顶层DOM/COM;OPC UA是一个基于TCP的IP数据包传输层。

3.逻辑对象模型

OPC逻辑对象模型包括三种对象:OPC服务器对象、OPC组对象和OPC项对象,每种对象都包含一系列接口。

这里需要注意的最重要的一点是,项不是数据源,项表示与数据源的连接。

例如,无论OPC客户端程序是否访问,分布式控制系统中的标签都是真实的

国际存在。项目应被视为地址的数据。每个人都必须注意项目的概括

阅读。不同的组对象可以有相同的项目,例如,组1中有一个相应的开关

组2的项目AAA也可以具有与交换机的项目AAA对应的相同含义,即,

同一项目可以出现在不同的组中。

3.1.OPC服务器对象:

主要功能:

1.创建和管理OPC组对象;

2.管理服务器的内部状态信息。

3.2.OPC组对象:

主要功能:

1.管理OPC组对象的内部状态信息;

2.创建和管理项目对象;

3.OPC服务器内部的实时数据访问服务(同步和异步模式)。

属性:

名称:组的名称,由客户端自己定义。

活动:组的活动状态。如果为假,组中的所有项目将不再从数据源中提取数据。在客户端,数据无法读取,写入数据不会影响服务器。

更新速率:服务器向客户端提交已更改数据的更新速率(该值应大于服务器设置的最小值)。

死区百分比:数据死区,即可能导致数据变化的最小数值百分比。

3.3.OPC项目对象:

主要功能:

用于描述实时数据,它表示与服务器数据源的连接,而不是数据源。一个项目不能被OPC客户端访问,所以OPC规范中没有与该项目对应的COM接口,对该项目的所有访问都需要通过OPC Group对象来实现。

属性:

名称:项目的名称,对应于服务器上的项目标识。

活动:项目的活动状态。

值:项目的数据值。

质量:一个项目的质量,代表一(原创版权www.isoyu.com)个数值的可靠性。

OPC _ QUALITY _ xxx定义了过程值或事件的质量。并分为三类,好的、不确定的和坏的。

以下类型是合法的:

类型值描述

OPC_QUALITY_GOOD 0xC0的值为好。

OPC_QUALITY_LOCAL_OVERRIDE 0xD8值被覆盖。典型的意思是输入断开,手动强制。

以下类型是不确定的:

类型值描述

Opc _ quality _不确定性0x40没有说明该值不确定的原因。

OPC_QUALITY_LAST_USABLE的最后一个可用值0x44。

OPC_QUALITY_SENSOR_CAL 0x50传感器已达到其极限值之一或超出其范围。

OPC _ QUALITY _ EGU _ excepted 0x 54返回值超出限制。

OPC_QUALITY_SUB_NORMAL 0x58值有多个来源,可用来源少于指定的优质来源。

以下类型是不好的:

类型值描述

OPC_QUALITY_BAD 0x00值为BAD,未说明原因。

OPC _ QUALITY _ CONFIG _ ERROR 0x04服务器特定的配置问题。

OPC_QUALITY_NOT_CONNECTED 0x08输入没有可用的连接。

OPC_QUALITY_DEVICE_FAILURE 0x0c设备故障。

OPC_QUALITY_LAST_KNOWN 0x14通信失败。最后一个值可用。

OPC_QUALITY_COMM_FAILURE 0x18通信失败,最后一个值不可用。

OPC_QUALITY_OUT_OF_SERVICE 0x1C块未扫描或锁定。

OPC_QUALITY_SENSOR_FAILURE 0x10传感器故障。

OPC_LIMIT_xxx定义了值的限制范围。

类型值描述

OPC_LIMIT_OK 0x00值在上下限和上限之内。

OPC_LIMIT_LOW 0x01的值很低。

OPC_LIMIT_HIGH值0x02高限值。

OPC_LIMIT_CONST 0x03的值是一个常数。

时间戳:时间戳,表示数据的访问时间。

注意:

1.1的存储类型。项目变体(主要用于编写程序时)

2.数据类型为2。项目(VARTYPE):

3.物品别名:物品的别名由服务器设置,避免了物品名称过长带来的麻烦。

4.组类型:公共组和私有组。公共组由多个客户共享,而私有组只属于一个OPC客户。公共组对连接到服务器的所有客户端有效,而私有组仅对创建它的客户端程序有效。(大多数服务器不实现公共组)

5.项目在服务器端定义,对应于硬件的实际地址。客户端连接到服务器端后,创建并添加OPC组,并创建一系列OPC项目(连接到服务器端定义的项目)。只有向OPC组添加一个逻辑上等价的OPC项目组,才能通过组对象访问数据。

四.OPC通信

1.同步通信:OPC客户端读取OPC服务器时,必须等待OPC服务器完成相应操作后才能返回,在此期间OPC客户端处于等待状态。

2.异步通信:当OPC客户端读取OPC服务器时,OPC客户端发送请求并立即返回,无需等待服务器,然后在OPC服务器完成操作时通知客户端程序。

3.订阅:OPC A & E:规范,客户端设置数据变化限制,如果数据源实时数据变化超过限制,服务器通过回调将数据返回给客户端。

动词 (verb的缩写)OPC测试中常用的OPC客户端和OPC服务器软件推荐

客户端

1、OPCClient.exe

先放着不太好,但是是100KB的文件,也符合OPC标准,所以是超便携的OPCClient。

Matrikon公司的OPCClient。

一个非常好的OPCClient,标准、稳定、单文件、通信过程信息丰富,我比较喜欢在创建OPC组的时候用它来定义同步模式或者异步模式,来验证远程计算机的OPC配置是否正确。缺点是比2M大一点。

Kepware公司的OPCClient

功能强大、规范、稳定,日志信息丰富。最推荐的功能是支持OPCServer中命名的条件过滤、点表的导入导出、OPCServer中所有点的自动导入、根据点表识别好点和坏点、按列排序,可以弥补国内很多配置软件无法在线遍历OPCServer点表的功能,过滤OPCServer点,识别OPCServer中的好点和坏点。缺点是它不是一个单独的文件。

服务器

1、骑士。opc服务器

简单还是简单,单个文件什么都运行,148KB,非常适合简单测试。

Matrikon公司的OPCServer模拟器

简单,注册单个文件后,各种数据类型和各种点类型(只读点、只写点、读写点)都可用。更好的是,如果你想用10万分来测试大百世网络的规模,你只需要在它的Random下面加上任意一个名字。OPCServer会自动为你创建相应的测量点,或者更改随机数。

Kepware公司的OPCServer

这是一个商业软件,需要花钱买License,但是Kepware公司的OPCServer需要花钱的不是OPCServer本身,而是收购驱动。但是Kepware公司的OPCServer提供了免费的模拟驱动,对于测试中的杀人越货是一件好事。第三个推荐理由是是男的。缺点太大,不简单,学习成本高。但是为了满足OPC产品的各种测试,确实是最好的选择。由于是商业软件,我不会提供下载地址。你可以从它的官网下载,向我要你需要的几万个测试项目。

4、iFiX

支持双向OPC。支持所有类型的ActiveX和OLE,可以保护不完善控件导致的错误,完全控制控件属性的操作。对扩展点的告警、告警记录、历史记录有全面的解决方案,具有查找和替换功能,可以替换整个画面和画面中对象的属性和配置点信息,避免对同类型对象重复配置。嵌入式VBA,自带内部功能,丰富的VB功能,更有利于功能扩展。编辑和运行是切换的,有利于保护现场生产安全;有独立的报警监控程序,支持在线修改,具有图像分层功能。运行时,可以根据程序方便地更改对象的连接数据源,使控件更加灵活。支持Oracle、SQL Server2000、Access等关系数据库。

5、计算机化

支持OPC服务器,与运行分开编辑,独立报警和历史趋势运行管理程序,嵌入式VBA,自带内部功能和丰富的VB功能。组VBA不同于一般的运行模式,支持ActiveX和OLE插入,但锁定控件的某些属性。点的扩展功能和iFIX一样强大,但是扩展点的告警设置很难解决,输出问题和历史记录都没问题。支持Oracle、SQLServer2000和Access关系数据库。

6、InTouch:

提供双向OPC支持,支持ActiveX控件,但对第三方控件没有错误保护,不健全的控件会导致系统错误。内部功能有限,其功能只是普通的监控功能,其他工具只能用于报表等更复杂的功能。支持关系数据库。

7、WinCC

双向OPC支持,ActiveX支持。使用内部语言,环境像C语言。这也使得扩展其功能变得容易。最新的WinCC 6.0只支持连接到SQL2000数据库。

不及物动词开源OPC项目

最佳网络:OPC服务器,用C/C++语言开发,http://www.ipi.ac.ru/lab43/lopc-en.html

OpenOpcUa:是http://www.openopcua.org/ C/c++语言开发的跨平台项目

基于Python语言的项目,http://openopc.sourceforge.net/

https://github.com/FreeOpcUa/freeopcua

开放源代码和免费实现OPC UA:https://github.com/open62541/open62541

OPC-客户端-X64:https://github.com/edimetia3d/OPC-Client-X64

节点-opcda:https://github.com/lizhengzhou/node-opcda

under Utgard下的最佳网络子项目:OpenSCADA项目,用Java编写,具有跨平台特性,全部基于DCOM(重点)。目前只支持DA 2.0协议,3.0协议的支持还在开发中。http://openscada.org/projects/utgard/

底层依赖JNI,只能在windows环境下运行,不能跨平台。整个类库比较旧,使用的dll是32位的,整个项目只能用32位的JRE运行。它还支持DA 2.0和3.0协议。但是64位系统不兼容,容易出错。https://sourceforge.net/projects/jeasyopc/