• 【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写入节点数据客户端

    视频演示

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

    1. public void UpdateTags_M1(OpcClient client, ref string strM1Name, ref double dM1Position, ref int nM1Mode, ref bool bM1Status, ref double dM1Temp)
    2. {
    3. //Motor1
    4. string strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Name";
    5. Opc.UaFx.OpcValue opcM1Name = client.ReadNode(strTagName);
    6. strM1Name = (string)opcM1Name.Value;
    7. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Position";
    8. Opc.UaFx.OpcValue opcM1Pos = client.ReadNode(strTagName);
    9. dM1Position = opcM1Pos.Value==null?double.NaN:(double)opcM1Pos.Value;
    10. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Mode";
    11. Opc.UaFx.OpcValue opcM1Mode = client.ReadNode(strTagName);
    12. nM1Mode = opcM1Mode.Value==null?int.MinValue:(int)opcM1Mode.Value;
    13. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Status";
    14. Opc.UaFx.OpcValue opcM1Stt = client.ReadNode(strTagName);
    15. bM1Status = opcM1Stt.Value==null?false:(bool)opcM1Stt.Value;
    16. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Temperature";
    17. Opc.UaFx.OpcValue opcM1Temp = client.ReadNode(strTagName);
    18.             dM1Temp = opcM1Temp.Value==null?double.NaN:(double)opcM1Temp.Value;            
    19. }

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

    1. public void WriteTags_M1(OpcClient client, ref string strM1Name, ref string strM1Position, ref string strM1Mode, ref string strM1Status, ref string strM1Temp)
    2. {
    3. //Motor1
    4. string strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Name";
    5. string strName = strM1Name;
    6. client.WriteNode(strTagName, strName);
    7. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Position";
    8. double dPos = Convert.ToDouble(strM1Position);
    9. client.WriteNode(strTagName, dPos);
    10. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Status";
    11. bool bStt = Convert.ToBoolean(strM1Status);
    12. client.WriteNode(strTagName, bStt);
    13. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Mode";
    14. int nMode = Convert.ToInt32(strM1Mode);
    15. client.WriteNode(strTagName, nMode);
    16. strTagName = "ns=2;s=Devices.OPCUAReadData.Motor1.Temperature";
    17. double dTemp = Convert.ToDouble(strM1Temp);
    18. client.WriteNode(strTagName, dTemp);
    19. }

    参考:

    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

  • 相关阅读:
    未来趋势:探索Facebook在数字化时代的发展方向
    TCO-PNB ester,1438415-89-4, 反式环辛烯-对硝基苯
    【安全狗】Linux后渗透常见后门驻留方式分析
    C运行时库- CRT(C Runtime)
    2022金九银十工作潮,怎么样才能成功跳槽面试拿到高薪呢?
    PASCAL VOC2012 数据集讲解与制作自己的数据集
    已解决(pip安装库报错)Consider using the-- user option or check the permissions.
    Redis源码与设计剖析-Redis事件处理
    top命令详解
    经典文献阅读之--PON
  • 原文地址:https://blog.csdn.net/cxyhjl/article/details/127438240