​        KepOPC是支持OPC、S7等工业标准协议设备数据采集与交换的中间件软件,本文主要介绍如何采用KepOPC中间件DA2UA实现从OPCDA到OPCUA的转换及互操作,随着OPCUA及跨平台技术的不断迭代,传统OPCDA受制于DCOM安全机制等技术限制已经满足不了工业互联网架构下的应用需求,IT及OT更加迫切需要融合及互操作。下面让我们看一下KepOPC中间件DA2UA的功能和操作方法。

CSDN下载地址:https://download.csdn.net/download/weixin_29482793/88559352?spm=1001.2014.3001.5503

百度网盘下载地址https://pan.baidu.com/s/1Qxw1Z9QFPM6j8TaY-JsBhA

提取码:xts0

第一步、打开及退出软件

        双击应用软件图标打开“OPCDA2UA.exe”软件,第一次配置时会弹出图1所示提示窗口,点击“OK”显示软件主窗口如图2所示,按照提示操作步骤选择“File”->“OPCSetting”后,打开参数设置页面如图3所示。软件的退出采用输入密码方式退出,密码默认是 admin常态化运行可以最小化到托盘,避免误操作。

​图1 首次应用提示窗口

​图2 中间件主界面

​图3 首次参数配置提示界面

第二步、OPC参数设置

        按照图3提示,点击“OK”确定后显示参数设置界面如图4所示,参数设置分为如下几步:

​图4 参数设置界面

         (1)OPC UA参数配置:在程序默认的ServerAddress、ServerName、Security Modes、Security Policies、Anonymous或用户名密码、运行Mode等参数基础上修改成自己需要的配置内容,以上各项均不能为空;

        (2)OPC DA 添加节点:点击”AddGroup“弹出DA服务器扫描窗口,如图5所示:

​图5 OPC DA服务器搜索界面

        输入OPCDA服务器IP地址,选择OPC连接方式(DCOM、OPEN),点击”SCAN“按钮搜索服务器,选中对应的服务器点击”Add“按钮添加到OPCParamSetting窗口,如图6所示。

​图6 OPC DA节点添加界面

        单击选中添加的DA参数行,点击”Connect“按钮连接OPCDA服务器,提示连接成功后,目录树展开服务器节点目录,双击末支节点名称添加到图6右侧列表,此过程亦可通过批量方式添加。选中Gruop1后,点击”AddBranch“按钮添加整组节点到右侧窗口,实现节点的批量添加。(注意:批量添加的前提是Group1下节点均为末支节点),批量添加如图7、图8所示:

​图7 OPC DA节点批量添加方法

​图8 OPC DA节点批量添加完成

        通过”Delete Item“和”Delete All“按钮删除表中选中的节点,实现对本组节点的管理,如图9所示:

​图9 OPC分组节点管理功能

        点击”Disconnect“按钮完成本组节点的添加,保存到临时队列,如图10所示,依次类推可以重复添加第二组、第三组。。。。。。的OPC节点和连接。添加完所有组后,点击”Save“保存所有配置项目,保存并关闭参数设置窗口后,主界面显示相关分组信息和节点信息,如图11所示。

​图10 OPC分组节点管理功能

​图11 OPC分组节点添加到主界面

第三步、运行及停止

        点击”START“按钮开始运行,运行正常的界面如图12所示:

​图12 OPC2UA运行正常界面

        中间件支持UA服务器功能,参数设置界面可设置OPCUA服务器url地址,允许匿名连接和展开节点目录树,支持OPCUA数据交换是否启用选择,url地址可自定义,端口可自定义,默认地址为opc.tcp://0.0.0.0:4841/OPCUA/KepOPC。服务器不需要做任何配置或端口映射,通过第三方UA客户端或者KepOPC中间件能够在局域网或跨平台直连该服务器,做数据桥接及写值互操作,UA客户端向中间件写值的同时写值到OPCDA服务器对应节点。

​图13 UaExpert连接读取

        点击”STOP“按钮开始运行,运行正常的界面如图14所示:

​图14  OPC2UA停止运行界面

        中间件采集及发布性能OPCDA2UA中间件单套软件支持不低于10000个节点的采集和发布,采集和发布周期不超过1秒,用户根据现场实际情况分配各组参数,实现多组协程处理,提高DA采集效率和UA发布及互操作效率,下面是用6741个测试节点搭建测试环境的测试截图,如图15所示,可以看到四组节点分别采集平均耗时约300ms,平均发布时耗约300ms

图15  OPC2UA运行在服务器的界面

客户端读写实例

# encoding=utf-8

import sys,time
sys.path.insert(0, "..")
from opcua import Client
from opcua import ua
import time
from datetime import datetime,timedelta

if __name__ == "__main__":

    client = Client("opc.tcp://132.232.202.106:4841/OPCUA/KepOPC") #opcua服务器地址
    client.set_user("admin") #登陆用户名
    client.set_password("123456") #登陆密码
    client.set_security_string("Basic256Sha256,SignAndEncrypt,certificate-example.der,private-key-example.pem") #安全和认证模式
    client.application_uri = "urn:example.org:FreeOpcUa:python-opcua"
    client.secure_channel_timeout = 30000
    client.session_timeout = 30000

    try:
        client.connect()
        print "Connect to ua server success!"
        root = client.get_root_node()
        print("Objects node is: ", root.get_browse_name())

        objects = client.get_objects_node()
        print "childs og objects are: ", objects.get_children()
        channel = objects.get_children()

        
        var = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.wasiTemp") #测试读写点
        var1 = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.wasiPress") #测试读写点1
        var2 = client.get_node("ns=2;s=Group1.WSCC.Device1.Group1.ByteArray") #测试读写点2

        
        for i in range(0,100000): #循环读写值
            res =  var2.get_data_value().Value.Value  #测试点2数组类型的读写操作
            print res
            write_list = []
            for j in range(0,len(res)):
                write_list.append(float(i+j+0.01))
            var2.set_value(write_list)
            time.sleep(2)
            

            var.set_value(float(i+0.25))  #测试点float类型的读写操作
            print var.get_value() # get value of node as a python builtin
            time.sleep(2)

            var1.set_value(float(i+0.55)) #测试点1float类型的读写操作
            print var1.get_value() # get value of node as a python builtin
            time.sleep(2)

    finally:
        client.disconnect()

        运行客户端实例后,可以看到图16中服务器记录写值过程和状态(成功/失败),同时服务器将值同步写入到opcda服务器对应的节点中去,从而实现从opcua客户端到opcda服务器的读/写值互操作功能。

 图16  服务器端读写操作日志提示

         同时,第三方客户端或用户自己编写的客户端也能订阅到服务器中对应写值节点值的改变,如图17所示,以上客户端读写实例能够完整的测试OPCDA2UA中间件软件的连接及读写,使用之前请先pip安装对应的模块并导入.der和.pem文件。

 图17  客户端读写操作及第三方软件订阅结果

总结:

        OPCDA2UA中间件采用免安装设计,连接方式为DCOM和OPEN两种DA连接方式,支持同时连接多组OPCDA服务器,按照用户要求的节点添加到各分组列表中,同时具备分组管理和节点管理功能;支持各分组参数设置及修改功能,主要包括OPCUA服务器地址、名称及安全机制等参数。

        KepOPC中间件系列的DA转UA软件能够轻松实现从OPCDA到UA的采集转换及读写互操作,减少自动化工程师的DCOM配置烦恼,相信很多自动化或IT工程师都受过DCOM的折磨;降低IT工程师在工业互联网应用场景中使用kepware等国外软件的应用成本,同时支持功能定制和灵活裁剪,更好适配工业互联网应用场景;通过该方式能够实现跨平台数据交换,实现windows下的DA服务器与其他操作系统中ua客户端的互联互通,为跨平台OPC数据交换提供一种便捷方案,应用者只需关注边缘网关或安全设备中ua客户端的开发,降低产品开发周期和成本。


往期回顾:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐