超全的OPC UA技术解析

描述

今天我们分享超全的OPC UA技术解析~

所以我们将通过接下来三期文章,重点通过OPCUA技术的进化史、OPCUA的软件架构和合适的OPCUA开发工具三个维度介绍OPCUA的现状。旨在能够为希望使用OPCUA的朋友提供从入门到进阶的知识渠道。

OPCUA技术的前身

OPCUA技术的前身是1996年发布的Classic OPC。最成功的Classic OPC标准是OPC数据访问(OPC Data Access),它被设计成通信驱动的接口。此接口允许在自动化设备上以标准化的形式读取和写入数据。主要使用对象是HMI和SCADA系统,以获取不同供应商设备统一的软件接口和数据。

随着Classic OPC的成功应用, 即成为自动化金字塔结构中不同层级之间的标准接口。但由于OPC对COM的依赖性以及使用DCOM的限制,不能将OPC用于远程访问,最终导致无法得到更广泛的使用。

客户端

因此,OPC UA(OPCUnified Architecture)诞生的目标,就是希望设计一种能够取代现有基于COM的特性同时不损失任何功能和性能的新规范。此外,它还要满足能够覆盖所有独立系统平台的需求,也包含描述复杂系统的丰富的可扩展接口和建模能力。覆盖范围可从嵌入式系统到SCADA和MES甚至DCS和ERP系统,让OPC技术的使用范围扩展到更多应用领域。

客户端

基于对新一代OPC的更多功能需求,由来自40多家组织的代表组成最初的工作组。在该工作组中,OPC基金会定义了如何描述和传输数据,而协作的其他组织根据其特定信息模型定义各自需要的描述和传输数据内容。为了达到最初定义的目标,OPC UA按照不同层次定义不同功能。

OPC UA 层次结构

为了涵盖Classic OPC中已使用的所有成功的服务,在OPC UA基础服务(OPC UA Base Services)的上层为信息模型定义了对应的服务功能。DA定义了对指定过程数据的操作,例如模拟或数字量的建模以及如何发布。Alarm& Conditions(AC)定义了报警管理和状态监控功能的高级模型。Historical Access(HA)定义了访问历史数据和历史事件的机制。Programs(Prog)定义了启动、操作和监视程序执行的机制。

客户端

其他组织能够基于OPC UA信息模型层(Specifications of InformationModels of other Organisations)建立专属模型,并通过OPC UA发布他们规范化信息。例如,已经在OPC UA进行FDI标准和PLCOpen。FDI包括电子设备描述语言(EDDL)和现场设备工具(FDT),它用于描述、配置和监视设备。PLCopen是一种用于PLC的编程语言标准。除了其他组织进行的规范集成,设备制造商信息模型也可以通过使用UA基础功能、OPC模型或其他基于OPC UA的信息模型定义。

OPC UA技术在OPC技术的基础上做了大幅的改进,不仅适用于传统的过程控制的数据监控类应用,其应用范围扩展到从嵌入式的传感器到现场级控制器,到HMI/SCADA系统以及MES和ERP系统,甚至现在一些云服务商在提供工业云通讯的解决方案时也支持OPC UA。2015年,凭借具备信息模型建模和通讯加密的能力,OPC UA正式作为工业4.0参考架构模型里唯一推荐的通讯层规范。

OPC UA的发布解决了Classic OPC对于Windows COM/DCOM依赖的局限性以及其他功能上的限制。同时增强了通讯的安全机制、加强了数据建模等能力。所以,我们可以说Classic OPC被设计成设备驱动接口,而OPC UA被设计成系统接口。它不仅是一种通讯协议,更是一种系统描述方法。

OPC UA使用类似于传统OPC的客户端---服务器概念。向其他应用程序发布信息的应用程序称为UA服务器,从其他应用程序获取信息的应用程序称为UA客户端。

典型的OPC UA服务器/客户端应用程序由三个软件层组成,如下图所示。完整的软件协议栈可以用C/C++、.NET或JAVA等实现,OPC UA没有限制使用这些编程语言和开发平台。

客户端

OPC UA 软件层

OPC UA应用程序是要通过OPC UA发布或消费数据的系统。OPC UA应用程序包含应用程序所需的特定功能,并通过使用OPC UA协议栈(OPC UA Stack)+OPC UA软件开发工具包(OPC UA Client/Server SDK),将应用程序的功能映射到OPC UA的信息模型和服务中。OPC UA客户端或服务器SDK实现通用OPC UA功能,这些功能要作为应用层一部分的,并实现信息模型和服务。

UA Part 6中的UA通讯协议栈层定义

OPC UA协议栈(OPC UA Stack)实现UA第6部分(OPC UA Part6)中定义的多种OPC UA传输映射。UA协议栈用于跨进程或网络调用UA服务。在OPC UA协议栈(OPC UA Stack)部分又划分成三个层次,并且每层有不同的规范,如下图:

客户端

消息编码层(Message Serialization)以二进制格式和XML格式定义服务参数的序列化。 消息安全层(Message Security)指定如何通过使用Web Service安全标准或UA二进制版本来保护消息。 消息传输层(Message Transport)定义了使用的网络协议,例如UA TCP或HTTP和用于Web服务的SOAP。

OPC UA协议栈(OPC UA Stack)通过封装为OPC UA SDK,以提供对应开发语言的UA客户端和UA服务器应用程序API。对于设备供应商来说,OPC UA协议栈(OPC UA Stack)和OPC UA SDK这些组件只是工作开始的第一步,更重要的工作是根据具体需求提供模型抽象。

OPC UA SDK

OPC UA SDK是对UA协议栈功能的结构化封装,实现了所有UA应用程序所需的UA通用功能、安全的处理方法,并提供常用功能的示例程序。Unified Automation基于OPC Unified Architecture技术规范,提供一系列跨平台的软件开发框架,以适应从嵌入式设备制造商到企业应用程序开发人员的应用程序垂直信息集成。Unified Automation提供的OPC UA SDK包括Ansi C、C++、.NET和Java开发语言。设计的平台从小的嵌入式系统到桌面PC机上到系统服务器。支持的操作系统包括Windows、Linux、VxWorks、WinCE、OnTime RTOS-32、InTime、FreeRTOS等。

客户端

下图展示了SDK的主要模块以及与OPC UA应用程序的集成。

客户端

在OPC UA Server/Client SDK模块中实现了所有UA服务器/客户端通用的UA功能。供应商在使用SDK的过程中不需要了解或者更改这些模块的内部功能。SDK的用户只需要知道模块提供的接口和辅助功能的用法。基础模块用于实现OPC UA客户端和服务器应用程序所需的基本功能。这些基本功能包含使用操作系统功能的封装,以及用于UA类型(如字符串,扩展对象或其他常用UA结构)的封装。

核心模块用于管理OPC UA的地址空间,并实现UA的基本功能,例如管理连接和OPC 基金会定义的地址空间部分。

Pub/Sub模块实现了OPC UA Pub/Sub通信所需的功能。它可以充当OPC UA发布者或OPC UA订阅者。更多关于Pub/Sub功能,以及Unified Automation的Pub/Sub SDK的信息,我们今后专门进行讨论。

用户产品的UA功能在OPC UA的SystemIntegration模块中实现。OPC UA SDK定义了应用所需的ServerConfig、NodeManager和IOManager接口以及MethodManager、EventManager和HistoryManager等可选接口,方便开发者将应用插入到核心模块。

使用OPC UA SDK是开发OPC UA应用程序最便捷的方法。Unified Automation公司的SDK提供OPC UA Standard一致性标准的所有支持功能,并且OPC UA SDK服务可以作为独立应用程序运行,也可以是现有应用程序的一部分。其SDK使用厂商几乎囊括了国外所有大型自动化企业,例如ABB、Siemens、Bosch、Trumpf、Kuka、Yokogawa、Honeywell等知名厂商。SDK的稳定性和接口易用性在多个行业的知名厂商产品中得到了具体验证。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分