工业领域下的OPC-UA网关设备
前言
- OPC是什么?
自20世纪90年代初以来,工业自动化领域内,基于PC和软件的自动化系统,特别是基于Windows PC上的可视化和控制应用迅速增长。在过去几年里,标准化的自动化软件开发的一个主要努力方向就是,通过大量不同总线系统、协议、接口访问自动化设备上的数据。由于人机界面(HMI)、监控和数据采集(SCADA)软件供应商有类似的问题,OPC基金会成立了。该工作小组的目标是基于windows系统,定义一个设备驱动访问自动化数据的即插即用标准。OPC是定义来自不同制造商的设备之间的数据通信的标准。
很快,1996年8月,OPC DA(数据访问) 规范发布了。几乎所有提供工业自动化系统的厂商都成为了OPC 基金会的成员。OPC基金会能够比其他组织块的多地定义、通过、实践相关标准。取得这样的成功的一个原因是:削减主要特性和限定API的定义使用微软Windows的COM和DCOM技术。集中关注重要特性,使用基于Windos技术,让已经提出的与用例相关的标准得以快速通过。
- 打破壁垒的OPC UA
随着OPC在数以千计的产品中顺利采用,今天的OPC已经作为自动化系统之间的标准接口而应用在自动化金字塔的不同层次上,它甚至用在很多不是预先设计的领域,还有许多其他领域制造商希望利用这样一个OPC标准,但却不能使用,因为OPC的COM依赖性和它使用DCOM的远程访问的局限性。除了对Windows平台的独立性问题,OPC的会员公司还提出了公开复杂的数据和复杂的系统的需求,以消除经典OPC的局限性。
OPC UA的诞生是希望为所有现有的基于COM的规范,建立一个没有损失任何功能和性能的真正替代品。此外,它必须满足能够描述复杂系统的丰富的和可扩展的建模能力,以及平台独立的系统接口的任何需求。OPC的广泛应用要求提供从嵌入式系统跨越SCADA和DCS到MES和ERP系统的延展性。
OPC UA是在工业自动化场景中使用的基于客户端/服务器的点对点通信协议。它提供用于遥测数据,命令和控制,历史数据,警报和事件日志的API。还有更多。
OPC UA也是OPC DA(AE,HD等)的后继产品,与基于COM / DCOM的较旧版本相比,它更加强调互操作性。它不仅提供了平台中立的通信层,并在其中内置了安全性,而且还提供了一组丰富的接口来处理遥测数据,警报和事件,历史数据等。OPC显然具有工业背景,因为它来自过程控制,PLC,SCADA之类的系统领域。也称为IEC 62541。
从MQTT的角度看OPC UA可能会问,为什么我们需要OPC UA?MQTT提供了一个完全未定义的主题结构和数据类型,而OPC UA提供了一个用于标准和自定义数据类型的框架,一个已定义(分层)名称空间和一个用于请求/响应样式通信模式的定义。特别是类型系统,即使是简单类型,也是对MQTT的BLOB方法的真正改进。使用MQTT,您将永远不知道消息的内容。它可以是编码为字符串的数字值,JSON编码的对象甚至是猫的图片。另一面的OPC UA确实为您提供了一个类型系统,其中包含有关类型的信息以及实际值。
OPC UA的订阅模型还提供了一种非常有效的方式来生动地传输数据,但是仅在客户端和服务器定义的必要时才传输数据。与二进制协议结合使用,可以使真正的资源更加安全。
- Eclipse Milo
本文将引导您完成基于Eclipse Milo创建OPC UA解决方案的第一步。OPC UA,也称为IEC 62541,是用于连接工业自动化系统的IoT解决方案。Eclipse Milo™是基于Java的开源实现。Milo是OPC UA的开源实现。它包括一个高性能堆栈(通道、序列化、数据结构、安全性)以及在堆栈顶部构建的客户端和服务端SDK。
官方网站: https://projects.eclipse.org/projects/iot.milo
GitHub地址: https://github.com/eclipse/milo
传统上,OPC UA框架分为“堆栈”和“ SDK”。“堆栈”是核心通信协议的实现。尽管“ SDK”是基于此构建的,但它提供了一个更简单的应用程序开发模型。
Eclipse Milo为“客户端”和“服务器”提供了“堆栈”和“ SDK”。“核心”是客户端和服务器之间共享的通用代码。这应该解释在Maven Central上搜索“ org.eclipse.milo”时Milo的模块结构:
org.eclipse.milo : stack-core
org.eclipse.milo : stack-client
org.eclipse.milo : stack-server
org.eclipse.milo : sdk-core
org.eclipse.milo : sdk-client
org.eclipse.milo : sdk-server
Copy to clipboardErrorCopied
连接到现有的OPC UA服务器将只需要您使用“ sdk-client”,因为所有其他模块都是该模块的临时依赖项。同样,创建自己的OPC UA服务器也仅需要“ sdk-server”模块。
- OPC UA连接一览图
既有宏观视野,又兼顾微观细节。