谈谈OPCUA 聚合服务器(aggregation-server)

2023-10-13 19:40

本文主要是介绍谈谈OPCUA 聚合服务器(aggregation-server),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     OPC UA 作为一种以信息模型为基础的工业自动化通信协议,如同它的名字一样正在朝着“统一架构”的方向飞速地发展,从传感器,PLC ,传感器到云端应用都正在向OPCUA 迁移。它将成为开放型系统,数字孪生,仿真系统的主要承载协议。

   笔者看来,研究OPC UA 不能简单地停留在标准,嵌入式服务器和客户端软件的单元概念层面,要从系统架构的大视野去探索OPCUA 的各种应用方式和系统架构。基于OPC UA 技术,专业的自动控制公司开发了大量满足客户需求的软件产品。包括了HMI ,SCADA,服务器等。

       在本文我们谈谈聚合服务器。所谓聚合服务器是将多个服务器的对象和类型聚合成为一个单一巨大的服务器。

      行业需要在各个层级之间实现无缝的垂直和水平通信。这导致OPC服务器的激增,分布在制造工厂的各个点,并且可能具有地理分布。出于各种目的使用此数据的OPC客户端可能必须与每台服务器建立单独的连接,这通常会导致高昂的许可证成本和维护难题。顾名思义,聚合服务器从各种 OPC 服务器聚合 OPC 数据中心,并将数据作为单个端点公开给最终客户端。聚合服务器还可以承担其他功能来对其正在收集的数据进行计算和优化,从而提高最终客户端的性能。

为什么要数据聚合

什么是数据聚合?

     数据聚合是将来自不同 OPC 服务器(和其他数据源)的数据汇集到单个数据源中,以便一个或多个 OPC 客户端(或其他客户端)可以通过单个通用接口访问此数据。

        根据您选择的解决方案,数据聚合不仅仅是OPC - 它是关于从所有各种数据源集中收集数据,为您的整个企业创建一个全面的数据集。

     越来越多的设备中都包含了用于外部访问的服务器,例如PLC ,边缘控制器,甚至是传感器中都可能包含一个OPCUA 的服务器。可以通过内嵌了OPC UA 的客户端访问系统中所有服务器。当系统中的设备很多时,这种访问是复杂的。OPCUA 客户端软件访问服务器的需要:

  1. 发现服务器,获取服务器的网络地址和端口
  2. 获取服务器的信息模型。
  3. 根据信息模型来读写数据
  4. 订阅,告警事件的处理

   与此同时,多个客户端软件同时访问服务器时,将会占用网络带宽和前端处理器的算力。下图是增加了聚合服务器的前后变化。

 使用聚合服务器的模式

     如今,大多数项目涉及的系统比使用单个PLC进行HMI读写更复杂。因此,大多数项目都涉及配置与多个数据源和设备的单独客户端连接。数据聚合支持从多个源将数据汇集在一起,并将其作为单个全面的数据集提供给客户端应用程序。

使用聚合服务器的优点:

  1. 降低了OPCUA 客户端的负荷
  2. 使用单一的通信连接访问多个数据源
  3. 方便地访问和控制多个服务器
  4. 使用单一的地址空间。
  5. 数据聚合有助于确保将通用且一致的更新速率传递到其他 OPC 服务器和数据源,避免过程网络上不必要的流量。
  6. 如果客户端应用程序需要每个服务器连接的许可证,则通过单个客户端连接访问数据也可以节省资金。
  7. 从所有各种数据源收集数据,并将其作为共享的通用数据集呈现给用户。
  8. 客户端程序永远不需要知道哪个程序发起了数据才能读取和写入数据,因为有一个公共位置可以访问它。

聚合服务器被称为系统的系统,服务器的服务器。

系统架构

聚合服务器的模型

系统架构

       OPC UA聚合服务器可能在Windows上运行,而OPC UA嵌入式服务器可能在VxWorks上运行。OPC UA提供独立于平台和操作系统的安全数据交换的能力对于将不同的系统融合到一个安全系统中至关重要。由此产生的系统链,从低级设备到SCADA系统再到企业应用程序,与OPC UA集成以形成系统系统。

聚合技术

聚合服务器的基本架构

 被聚合的服务器(Aggregated server)

        它们是自动控制系统的实体,比如PLC ,现场设备中的服务器。可以是子系统中的一组实体。

聚合服务器(Aggregation server)

        聚合服务器是聚合架构的核心。它通过OPC 服务连接所以的服务器。聚合它们的类型,实例和结构信息。

信息模型

        为了实现聚合服务器,需要一些扩展的OPCUA 信息模型。扩展模型包括两部分:

聚合服务器的信息模型

OpcUaServerType是OpcUa 的模型,它包含了一个变量ServerUrl ,也就是服务器的地址(Url)。

AggregatedServerType是OpcUaServerType的继承,包含了ServerType.

ServerType.包含了服务器的详细信息。比如诊断状态diagnostic status.

AvailableServerSetType 包含了所有聚合的服务器

被聚合服务器的扩展信息模型

OPCUA 聚合服务器的实现

服务器聚合

        服务器聚合是发现和收集所有被聚合服务器的信息,这样两者方式

文件描述方式

        将所有的服务器Url 放置在ServerUris.xml文件中

自动发现方式

        使用OPCUA 的discovery方式,一种是广播方式,一种是建立一个本地发现服务器Local Discovery Server。所有的服务器都需要在LDS中注册,Client 通过访问LDS 来获取服务器的Url

读取数据

        每当聚合服务器请求读取是,内部的节点管理器将会通过字典查询,将读请求转向被聚合的服务器。而被聚合服务器中读取的响应返回给外部的OPCUA 客户端。

写入数据

         与读操作类似,直接将写请求前向发送给相应的被聚合服务器。

订阅和解除订阅

        也同样是中继的方式实现。

现有的项目和产品

项目

                OPC Foundation 的UA -.NETStandard -samples 中提供了一个聚合服务的实例:

https://github.com/OPCFoundation/UA-.NETStandard-Samples

商业化产品

        多家公司实现了聚合服务器产品,或者在它们的产品中包含了聚合服务器的功能

softwaretoolbox公司的Top Server

Softing 公司的安全集成服务器(Secure Integration Server )

Prosys 公司的OPC UA Historian

      从国外的产品来看,聚合服务器能够结合历史数据库,Web 服务,MQTT 等功能和通信协议,实现功能强大的服务器。

下图是Softing 公司SIS的系统架构

实验项目

        我们正在研究开发一个聚合服务器的演示,其系统的架构:

        每一台PLC 通过modbus TCP与与一个OPC UA 网关相连接。网关内置OPCUA 服务器,将PLC的modbus 数据转变成为OPC UA 信息模型。

        所有的OPCUA Server 聚合到聚合服务器。在HMI的视角下,聚合服务器保存了一个大的OPC UA 模型。

       聚合服务器中可以带有一个历史数据库。

结束语

       OPCUA 是自动控制领域重要的通信协议,但是不能只是停留在信息模型,嵌入式服务器和简单客户端程序的基础阶段。要全面地研究和学习OPC UA 如何在工业软件中的应用,基于OPC UA 标准,国外公司开发了各种软硬件集成软件,聚合服务器就是其中一种。从聚合架构看出,国外公司十分重视技术的应用,开发了面向解决方案的软件,而且具体的方式也十分多样化。并不是标准中的那些单一架构,也不是在AML,AAS,OPCUA 多种标准中兜圈子,迷失方向。这一点是值得我们借鉴。

这篇关于谈谈OPCUA 聚合服务器(aggregation-server)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205441

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详