什么是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/