【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

相关文章

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

【服务器运维】CentOS6 minimal 离线安装MySQL5.7

1.准备安装包(版本因人而异,所以下面的命令中版本省略,实际操作中用Tab自动补全就好了) cloog-ppl-0.15.7-1.2.el6.x86_64.rpmcpp-4.4.7-23.el6.x86_64.rpmgcc-4.4.7-23.el6.x86_64.rpmgcc-c++-4.4.7-23.el6.x86_64.rpmglibc-2.12-1.212.el6.x86_64.r

【服务器运维】CentOS7 minimal 离线安装 gcc perl vmware-tools

0. 本机在有网的情况下,下载CentOS镜像 https://www.centos.org/download/ 1. 取出rpm 有的情况可能不需要net-tools,但是如果出现跟ifconfig相关的错误,就把它安装上。另外如果不想升级内核版本的话,就找对应内核版本的rpm版本安装 perl-Time-Local-1.2300-2.el7.noarch.rpmperl-Tim

chart 完成拓扑图单节点拖拽不影响其他节点位置

就是做这种的功能,箭头原本是可以动态重复移动的,但不知道哪里问题导致没箭头了,然后补了个edgeSymbol: ['','arrow'], 字段,才增加了箭头。 拖拽某个节点,只有关联到的线条会跟着变动其他的节点位置不变。 参考 https://gallery.echartsjs.com/editor.html?c=x8Fgri22P9 https://echarts.baidu.com/exa

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

在服务器上浏览图片

@StarSky 2018-10-26 15:09 字数 15971 阅读 28 https://www.zybuluo.com/StarSky/note/1294871 来源 2018-09-27 线上服务器安装 imgcat Tool   2018-09-27 线上服务器安装 imgcat 0. 准备文件:iterm2_shell_integration.bash1. 在有权限

服务器雪崩的应对策略之----SQL优化

SQL语句的优化是数据库性能优化的重要方面,特别是在处理大规模数据或高频访问时。作为一个C++程序员,理解SQL优化不仅有助于编写高效的数据库操作代码,还能增强对系统性能瓶颈的整体把握。以下是详细的SQL语句优化技巧和策略: SQL优化 1. 选择合适的数据类型2. 使用索引3. 优化查询4. 范式化和反范式化5. 查询重写6. 使用缓存7. 优化数据库设计8. 分析和监控9. 调整配置1、