来源:https://blog.csdn.net/u013120247/article/details/50163147

1. 什么是OPC

1.1 名词解释

OPC——OLE for Process Contrl,微软公司对象链接和嵌入技术在过程控制方面的应用,是一系列接口、方法和属性的标准集。
它基于OLE、COM、DCOM技术、XML,采用客户端/服务器(Client/Server)结构,将通讯协议与设备/应用隔离的技术。
微软的OLE、COM定义了各种不同的软件如何交互使用和分享数据,从而使得OPC能够提供通用的接口规范,用于各种过程控制设备之间的通讯,不论过程中采用何种应用软件和硬件设备。
OLE——Object Linking & Embeding,对象链接与嵌入,也就是现在的微软的ActiveX。

1.2 基于OPC技术的过程控制系统结构

像所有的COM实现一样,OPC的结构是客户机服务器模式。
各个OPC客户程序通过OPC标准接口对各OPC服务器管理的设备进行操作,而不需关心服务器的实现细节及设备内部的具体细节。
OPC把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。

1.3 工作原理

详细原理图:

1.4 OPC服务器所兼容的设备分类

  • 硬件设备:DCS,PLC,扫描仪,电子设备…
  • 应用软件:HMI,历史数据库,震动检测器…
  • 通讯协议:DDE,Modbus,ODBC,GenCS…
  • 操作系统:Windows,UNIX,VMS,Macintosh,嵌入式OS…

理解:

即OPC服务器可以从上面任何一种形式的数据产生实体中读取数据。
这个实体可以是霍尼韦尔PHD的Application,也可以是Modbus的通讯协议,
还可以是一种PLC,也就是一种Device(硬件设备),或者是一种Platform。

2.常用的OPC服务器

2.1 Matrikon公司的OPCServer Simulator

简单,单文件注册后,各种数据类型,各种点类型(只读点,只写点,读写点)都有了,

更好的一点是,如果想做大规模的测试,10万点,那么只需要在它的Random下添加任意名称即可,OPCServer会自动给你建出对应的测点,还是随机数变化。

配置时的几个关键概念

  • Alias Group(Group) ——对Items的分类管理,自定义的。类似于Java中的包。
  • Alias (Item) ——一个Item代表与服务器进行通信的PLC或其它硬件设备上的一个地址。与Kepware中的一样。
  • 配置顺序如下(在Alias Configuration下):New AliasGroup/Alias --> Inset Alias

2.2 Kepware公司的OPCServer

一个商业软件,需要花费金钱购买License的,但Kepware公司的OPCServer需要花钱的不是OPCServer本身,而是采集驱动。

不过Kepware公司的OPCServer提供了不花钱的仿真驱动,用来测试上非常好的。

缺点就是太庞大,不简单,学习成本较高。但为了能满足OPC这类产品的各种测试,它真的是最佳选择。可以去它的官方网站下载

配置时的几个关键概念

  • Chanel——通道是一个从PC到一个或多个外部设备之间的传播媒介。一个通道可以用来代表一个串行端口(一个安装在个人电脑上的卡或是以太网接口)。
  • Device——设备代表了与服务器进行通信的PLC或其他硬件。它受限于Channel所选择的设备驱动程序(Device driver)。
  • Group——对tags的分类管理,自定义的。类似于Java中的包。
  • Tag——一个Tag代表与服务器进行通信的PLC或其它硬件设备上的一个地址。服务器允许动态标签(客户端自定义创建)和用户定义的静态标签(服务端管理人员创建的标签)。动态标签是直接进入了OPC客户端和指定设备存取数据。静态标签在服务器被创建的且支持标签扩展,他们可以从OPC客户浏览,支持标签浏览。

配置顺序如下:New Channel -->New Device --> New Group/Tag --> New Tag

3. 常用的OPC客户端

3.1 Matrikon公司的OPCClient

标准,稳定,单文件,通讯过程的信息还比较丰富,我是比较喜欢用它在创建OPC组时定义同步方式或异步方式来验证远程计算机的OPC配置是否正确。缺点就是大了点,2M多。

3.2 Kepware公司的OPCClient

功能很强大,标准,稳定,日志信息很丰富,最推荐的功能是支持对OPCServer中点名的条件过滤,支持点表的导入导出,支持自动导入OPCServer的所有点,根据点表识别好点坏点,按照列排序,用它可以弥补很多国产组态软件不能在线遍历OPCServer点表的功能、不能过滤OPCServer点的功能、不能识别OPCServer中好点坏点的功能等。缺点就是非单文件。

4. OPC Client和OPC Server配置的安全策略

下表是对 OPC Client 和 OPC Server 所在操作系统之间的安全策略的配置对应说明:

5. Java实现OPC客户端

有两种开源包,分别是JeasyOpc和utgard(Openscada),他们的区别如下:
OPC 技术学习总结
经对比分析,我们采用Utgard(Openscada)开源技术,Openscada可以很好的实现与OPC服务器的链接及读写数据等功能,还可以随时获取和修改OPC的Server和Item的属性状态信息。所以它能够很好的满足我们的需求,建议使用Openscada。

5.1 Openscada链接配置方法

OPC数据存取服务器由三个对象组成:服务器对象(Server)、组对象(Group)和项对象(Item)。
按说明配置好OPC Server 与 OPC Client 所在电脑的组件服务配置和防火墙设置(windows7直接关闭就行了)
注意一定要把本机希望链接OPC服务的用户或用户组添加到DCOM配置列表中,否则链接会失败。
如果其他都配置好了,运行程序还是连接不上的话,首先常看防火墙是否配置(或关闭)。

OPC对象——服务器(OPC Server)、组(OPC Group)、项(OPC Item)。
Openscada开源项目:ConnectionInformation中:

  • Host——本地主机/网络主机IP (示例:localhost(默认)、127.0.0.1)
  • Domain——域(默认为localhost)
  • User——用户名
  • Password——用户登录密码
  • Clsid——应用在注册表中相对应的CLSID值
  • Grogid——应用在注册表中对应的程序名称

Clsid 和 Grogid 作用相同,只要设置一个就可以了,如果两个都设置了,程序会优先选择Clsid。
我们建议使用Clsid,因为使用Grogid时,Openscada的内部处理还是会通过JISystem.getClsidFromProgId( progId )方法将其转换为Clsid,并且还需要进行服务器上用户的权限的高级配置才可以使用。
查找Clsid和Grogid的方法:打开注册表(regedit)—》在HKEY_CLASSES_ROOT下找到相应的OPC服务器名称,该名称就是Grogid,在其目录下的CLSID的值(右边区域)就是Clsid

5.2 Openscada远程链接时常见的问题及解决方法

: Message not found for errorCode:0xC0000034
原因:未启动RemoteRegistry和Windows Management Instrumentation服务。
解决方法:打开控制面板,点击【管理工具】—>>【服务】,启动RemoteRegistry和Windows ManagementInstrumentation服务。
[0x00000005]
原因:首先检查错误提示的配置信息是否有误,如果都正确,则原因可能是你访问的当前用户没有该访问权限。
解决方法:
1、打开注册列表,
选择HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}
2、右键点击[权限]>>【高级】>>[所有者]>>添加opc用户到权限项目中,点击应用,确定

来源:https://blog.csdn.net/u013120247/article/details/50163147

1. 什么是OPC

1.1 名词解释

OPC——OLE for Process Contrl,微软公司对象链接和嵌入技术在过程控制方面的应用,是一系列接口、方法和属性的标准集。
它基于OLE、COM、DCOM技术、XML,采用客户端/服务器(Client/Server)结构,将通讯协议与设备/应用隔离的技术。
微软的OLE、COM定义了各种不同的软件如何交互使用和分享数据,从而使得OPC能够提供通用的接口规范,用于各种过程控制设备之间的通讯,不论过程中采用何种应用软件和硬件设备。
OLE——Object Linking & Embeding,对象链接与嵌入,也就是现在的微软的ActiveX。

1.2 基于OPC技术的过程控制系统结构

像所有的COM实现一样,OPC的结构是客户机服务器模式。
各个OPC客户程序通过OPC标准接口对各OPC服务器管理的设备进行操作,而不需关心服务器的实现细节及设备内部的具体细节。
OPC把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。

1.3 工作原理

详细原理图:

1.4 OPC服务器所兼容的设备分类

  • 硬件设备:DCS,PLC,扫描仪,电子设备…
  • 应用软件:HMI,历史数据库,震动检测器…
  • 通讯协议:DDE,Modbus,ODBC,GenCS…
  • 操作系统:Windows,UNIX,VMS,Macintosh,嵌入式OS…

理解:

即OPC服务器可以从上面任何一种形式的数据产生实体中读取数据。
这个实体可以是霍尼韦尔PHD的Application,也可以是Modbus的通讯协议,
还可以是一种PLC,也就是一种Device(硬件设备),或者是一种Platform。

2.常用的OPC服务器

2.1 Matrikon公司的OPCServer Simulator

简单,单文件注册后,各种数据类型,各种点类型(只读点,只写点,读写点)都有了,

更好的一点是,如果想做大规模的测试,10万点,那么只需要在它的Random下添加任意名称即可,OPCServer会自动给你建出对应的测点,还是随机数变化。

配置时的几个关键概念

  • Alias Group(Group) ——对Items的分类管理,自定义的。类似于Java中的包。
  • Alias (Item) ——一个Item代表与服务器进行通信的PLC或其它硬件设备上的一个地址。与Kepware中的一样。
  • 配置顺序如下(在Alias Configuration下):New AliasGroup/Alias --> Inset Alias

2.2 Kepware公司的OPCServer

一个商业软件,需要花费金钱购买License的,但Kepware公司的OPCServer需要花钱的不是OPCServer本身,而是采集驱动。

不过Kepware公司的OPCServer提供了不花钱的仿真驱动,用来测试上非常好的。

缺点就是太庞大,不简单,学习成本较高。但为了能满足OPC这类产品的各种测试,它真的是最佳选择。可以去它的官方网站下载

配置时的几个关键概念

  • Chanel——通道是一个从PC到一个或多个外部设备之间的传播媒介。一个通道可以用来代表一个串行端口(一个安装在个人电脑上的卡或是以太网接口)。
  • Device——设备代表了与服务器进行通信的PLC或其他硬件。它受限于Channel所选择的设备驱动程序(Device driver)。
  • Group——对tags的分类管理,自定义的。类似于Java中的包。
  • Tag——一个Tag代表与服务器进行通信的PLC或其它硬件设备上的一个地址。服务器允许动态标签(客户端自定义创建)和用户定义的静态标签(服务端管理人员创建的标签)。动态标签是直接进入了OPC客户端和指定设备存取数据。静态标签在服务器被创建的且支持标签扩展,他们可以从OPC客户浏览,支持标签浏览。

配置顺序如下:New Channel -->New Device --> New Group/Tag --> New Tag

3. 常用的OPC客户端

3.1 Matrikon公司的OPCClient

标准,稳定,单文件,通讯过程的信息还比较丰富,我是比较喜欢用它在创建OPC组时定义同步方式或异步方式来验证远程计算机的OPC配置是否正确。缺点就是大了点,2M多。

3.2 Kepware公司的OPCClient

功能很强大,标准,稳定,日志信息很丰富,最推荐的功能是支持对OPCServer中点名的条件过滤,支持点表的导入导出,支持自动导入OPCServer的所有点,根据点表识别好点坏点,按照列排序,用它可以弥补很多国产组态软件不能在线遍历OPCServer点表的功能、不能过滤OPCServer点的功能、不能识别OPCServer中好点坏点的功能等。缺点就是非单文件。

4. OPC Client和OPC Server配置的安全策略

下表是对 OPC Client 和 OPC Server 所在操作系统之间的安全策略的配置对应说明:

5. Java实现OPC客户端

有两种开源包,分别是JeasyOpc和utgard(Openscada),他们的区别如下:
OPC 技术学习总结
经对比分析,我们采用Utgard(Openscada)开源技术,Openscada可以很好的实现与OPC服务器的链接及读写数据等功能,还可以随时获取和修改OPC的Server和Item的属性状态信息。所以它能够很好的满足我们的需求,建议使用Openscada。

5.1 Openscada链接配置方法

OPC数据存取服务器由三个对象组成:服务器对象(Server)、组对象(Group)和项对象(Item)。
按说明配置好OPC Server 与 OPC Client 所在电脑的组件服务配置和防火墙设置(windows7直接关闭就行了)
注意一定要把本机希望链接OPC服务的用户或用户组添加到DCOM配置列表中,否则链接会失败。
如果其他都配置好了,运行程序还是连接不上的话,首先常看防火墙是否配置(或关闭)。

OPC对象——服务器(OPC Server)、组(OPC Group)、项(OPC Item)。
Openscada开源项目:ConnectionInformation中:

  • Host——本地主机/网络主机IP (示例:localhost(默认)、127.0.0.1)
  • Domain——域(默认为localhost)
  • User——用户名
  • Password——用户登录密码
  • Clsid——应用在注册表中相对应的CLSID值
  • Grogid——应用在注册表中对应的程序名称

Clsid 和 Grogid 作用相同,只要设置一个就可以了,如果两个都设置了,程序会优先选择Clsid。
我们建议使用Clsid,因为使用Grogid时,Openscada的内部处理还是会通过JISystem.getClsidFromProgId( progId )方法将其转换为Clsid,并且还需要进行服务器上用户的权限的高级配置才可以使用。
查找Clsid和Grogid的方法:打开注册表(regedit)—》在HKEY_CLASSES_ROOT下找到相应的OPC服务器名称,该名称就是Grogid,在其目录下的CLSID的值(右边区域)就是Clsid

5.2 Openscada远程链接时常见的问题及解决方法

: Message not found for errorCode:0xC0000034
原因:未启动RemoteRegistry和Windows Management Instrumentation服务。
解决方法:打开控制面板,点击【管理工具】—>>【服务】,启动RemoteRegistry和Windows ManagementInstrumentation服务。
[0x00000005]
原因:首先检查错误提示的配置信息是否有误,如果都正确,则原因可能是你访问的当前用户没有该访问权限。
解决方法:
1、打开注册列表,
选择HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6}
2、右键点击[权限]>>【高级】>>[所有者]>>添加opc用户到权限项目中,点击应用,确定

相关文章:

  • 2021-06-12
  • 2021-07-27
  • 2021-07-06
  • 2022-01-01
  • 2021-10-25
  • 2021-11-01
  • 2021-10-09
  • 2021-12-25
猜你喜欢
  • 2021-09-08
  • 2021-07-08
  • 2022-01-30
  • 2021-11-20
  • 2021-06-23
  • 2021-06-17
  • 2021-12-13
相关资源
相似解决方案