【OPC UA】基于OpcUaFx的OPC客户端读写KEPServerEx6服务器节点

2024-03-20 01:59

本文主要是介绍【OPC UA】基于OpcUaFx的OPC客户端读写KEPServerEx6服务器节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、OPC UA 与 UAFX

3738eeac3e0c7667c30364763aeef339.png

OPC UA and UAFX System Architecture

5cc8c6c2769d04553dcaec4b8472fa94.png通过OPC UA (a)和UAFX (b)实现水平和垂直通信的统一,以及迁移到一个连续的、收敛的网络(c),从现场到云端,反之亦然

    2021 年 12 月 8 日 – OPC基金会现场层通信(FLC)倡议成立三年之际,完成了OPC UA FX(现场交换)规范集的第二个候选版本(RC2),并开始了审核与发布程序。此外,由20家世界大型自动化供应商,利用各自的控制器和网络基础设施组件构成的供应商Demo也成功展示。此次Demo展示了在工厂和过程自动化中,自动化组件多样化用例的跨供应商互操作性。

第一个OPC UA FX多供应商演示

ecc3f4e18f8b9f2df2aeb96ccdbbbc68.png

第一个OPC UA FX多供应商演示的原理结构

2021年11月,第一个多供应商互操作性演示实现了,其中自动化和网络组件结合在一起,演示了通过OPC UA和OPC UA FX扩展的跨供应商数据交换。为此,来自不同供应商(包括世界上最大的自动化制造商)的17个控制器(包括PLC、运动和机器人控制器以及分布式控制系统)通过公共网络基础设施相互连接。

该基础设施由传统的以太网交换机、以太网TSN(时间敏感网络)交换机和毫米波频率范围的5G试验台组成。

演示器的所有控制器通过集成的OPC UA服务器提供当前状态和资产信息,通过中央仪表板进行查询和可视化。“所有控制器”视图显示多供应商演示中所有17个控制器的OPC UA连接状态,以及由每个UAFX控制器原型配置的基于pubsub的UAFX连接的状态信息。仪表板本身是交互式的,当单击17个控制器中的一个时,切换到“资产视图”,其中显示控制器建模和公开的UAFX资产信息。

为了演示UAFX扩展的可能性和优势,在演示机上模拟了一个模块化装瓶线,其中4个用于清洗、灌装、旋盖和贴标的机器单元组合成一条生产线。为了演示跨供应商互操作性,每个单元都配备了来自不同制造商的控制系统。

通信连接的配置和通过这些连接交换的过程数据来实现一个正常工作的生产线是通过一个UAFX连接管理器来实现的,如上所述。在演示中,使用了基于UA Expert的统一自动化(Unified Automation)的独立(外部)连接管理器和集成到西门子SIMATIC PLC中的连接管理器,每个都有自己的图形用户界面。连接管理器充当OPC UA客户端,并使用集成在UAFX控制器原型中的OPC UA服务器来配置各自控制器之间的UAFX连接。

然后通过这些UAFX连接使用OPC UA Pub/Sub交换相应的流程数据。控制器作为UAFX发布者和/或UAFX订阅者取决于他们在配置的生产线中的角色和位置。流程数据可以是实时数据,也可以是用于故障安全操作的安全数据。配置的生产线可以在仪表板中可视化和监视。

二、基于OPC UAFX的读写客户端

3cd24e8af1e8dbb7ddd34a5a80310c83.png读取节点客户端

8782a1179c7aaa8e51ce2bb74ae085df.png写入节点数据客户端

视频演示

读取节点客户端部分代码:

public void UpdateTags_M1(OpcClient client, ref string strM1Name, ref double dM1Position, ref int nM1Mode, ref bool bM1Status, ref double dM1Temp){//Motor1             string strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Name";Opc.UaFx.OpcValue opcM1Name = client.ReadNode(strTagName);strM1Name = (string)opcM1Name.Value;strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Position";Opc.UaFx.OpcValue opcM1Pos = client.ReadNode(strTagName);dM1Position = opcM1Pos.Value==null?double.NaN:(double)opcM1Pos.Value;strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Mode";Opc.UaFx.OpcValue opcM1Mode = client.ReadNode(strTagName);nM1Mode = opcM1Mode.Value==null?int.MinValue:(int)opcM1Mode.Value;strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Status";Opc.UaFx.OpcValue opcM1Stt = client.ReadNode(strTagName);bM1Status = opcM1Stt.Value==null?false:(bool)opcM1Stt.Value;strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Temperature";Opc.UaFx.OpcValue opcM1Temp = client.ReadNode(strTagName);dM1Temp = opcM1Temp.Value==null?double.NaN:(double)opcM1Temp.Value;            }

写入节点客户端部分代码:

public void WriteTags_M1(OpcClient client, ref string strM1Name, ref string strM1Position, ref string strM1Mode, ref string strM1Status, ref string strM1Temp){//Motor1string strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Name";string strName = strM1Name;client.WriteNode(strTagName, strName);strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Position";double dPos = Convert.ToDouble(strM1Position);client.WriteNode(strTagName, dPos);strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Status";bool bStt = Convert.ToBoolean(strM1Status);client.WriteNode(strTagName, bStt);strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Mode";int nMode = Convert.ToInt32(strM1Mode);client.WriteNode(strTagName, nMode);strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Temperature";double dTemp = Convert.ToDouble(strM1Temp);client.WriteNode(strTagName, dTemp);}

参考:

https://www.opcfoundation.cn/news/opc-foundation-china-news/47

https://www.tttech-industrial.com/resource-library/blog-posts/opc-ua-fx/

https://www.process-informatik.de/ftp/pub/handbook/en_opc-ua-framework-advanced.pdf

https://iebmedia.com/technology/edge-cloud/opc-ua-fx-for-the-field-level-and-multi-vendor-demo/

The End

这篇关于【OPC UA】基于OpcUaFx的OPC客户端读写KEPServerEx6服务器节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Python如何实现 HTTP echo 服务器

《Python如何实现HTTPecho服务器》本文介绍了如何使用Python实现一个简单的HTTPecho服务器,该服务器支持GET和POST请求,并返回JSON格式的响应,GET请求返回请求路... 一个用来做测试的简单的 HTTP echo 服务器。from http.server import HT