ApolloStudio高手之路(6):用Python以极简方式读写OPC DA、OPC UA数据并实现UI控件自动绑定刷新显示

版权声明:所有原创作品版权均归Gentler所有,转载请注明原址!谢谢 https://blog.csdn.net/tmxyz1950/article/details/84983690

OPC(OLE for Process Control, 用于过程控制的OLE)是一个工业标准,OPC是为了连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标准。数据源可以是PLC,DCS,条形码读取器等控制设备。随控制系统构成的不同,作为数据源的OPC服务器既可以是和OPC应用程序在同一台计算机上运行的本地OPC服务器,也可以是在另外的计算机上运行的远程OPC服务器。OPC接口既适用于通过网络把最下层的控制设备的原始数据提供给作为数据的使用者(OPC应用程序)的HMI(硬件监督接口)/SCADA(监督控制与数据采集),批处理等自动化程序,以至更上层的历史数据库等应用程序,也适用于应用程序和物理设备的直接连接。所以OPC接口是适用于很多系统的具有高厚度柔软性的接口标准。

在ApolloStudio里面对OPC DA(经典架构)和OPC UA(统一架构)均以OPC Client的形式提供了深度的支持,无论是在OPC DA还是在OPC UA当中,均提供了节点浏览器(用于测试和节点管理)以及简单的统一读写框架(无需关心变量类型),我们先通过脚本工具集来预览下:

OPC DA操作详解

OPC DA是基于微软DCOM机制上的,故需先安装OPC DA组件(该组件已在本文最下方网盘地址内提供),安装完OPC DA核心组件后,我们在ApolloStudio任务列表内新增OPC DA通讯后进入配置界面:(我们事先在本机器上安装了KepServerEX6作为本次测试的OPC数据源(OPC Server))

我们这里测试的是本地OPC Server(如果数据源服务端在远端,需配置DCOM,配置过程比较繁琐,这里不作细说,不推荐该方式,远端访问建议使用OPC UA访问) 。

在OPC DA客户端配置中,我们首先刷新获取本地OPC服务器列表,然后连接OPC服务器,之后我们便可以在中间的列表中看到服务器中所有的变量标签,接下来我们点选我们所需的标签,添加到监控对象就可以观察到变量的实时数据了(如果需要删除监控变量仅需选择需要删除的行后再按键盘的DEL键即可),将所有需要监控的数据都添加完毕后,点击保存当前所有配置按钮即可保存所有监控变量到系统配置中。

在ApolloStudio中,无论是OPC DA还是OPC UA数据,系统都会自动根据添加到监控的顺序进行自动编号,在OPC  DA中,监控变量地址列表的最后一栏“索引地址”即为系统自动分配的,后面在脚本中调用时,仅需输入索引号即可,代码如下:

#-*- coding: UTF-8 -*-
#加载内嵌模块
import clr,sys,time,datetime

mydata = AS.Func_OPC_DA_Read(0)#读取0号索引的数据,返回值类型为String
AS.Func_OPC_DA_Write(0, "123")#写0号索引数据为123,可以根据数据类型进行自动转换

 OPC UA操作详解

OPC UA作为面向未来的统一框架,摒弃了OPC DA的诸多弊病,基于TCP协议实现,无论数据源是在本地还是远端均可轻松访问(远端访问需注意配置下服务端的防火墙出入站规则即可),我们同样以KepServerEX为例,我们先将OPC UA配置中的服务器端点的安全策略勾选“无”,否则需提供证书方可登录,我们这里以无证书登录为例:

 同时,我们在上图中获取到了本地服务端的端口站点为:opc.tcp://127.0.0.1:49320(根据设备不同,该地址略有差异),然后必须点击重新初始化(鼠标右键托盘区的KepServerEX图标即可看到快捷菜单),让我们刚才配置的安全策略生效。

我们回到ApolloStudio中,还是先在任务链表中添加OPC UA通讯单元,然后右键打开配置,输入刚才的服务器地址,点击连接服务器按钮,这里我们选择匿名登录(刚才勾选的安全策略为无在这里发挥了作用):

然后我们便可以看到服务端上所有的节点数据:

这里有个问题点需要特别注意下,所选节点一定要配置为节点(比如上图中,R寄存器即为分支点,在分支点以下的Boolean1...为节点),如果选择的不是节点将会收到系统的提示(添加节点的时候系统会自动校验该节点在服务器上是否存在,不存在将收到提示),当我们保存所有节点数据时,会收到节点提示框:

确定无误后,点击确定保存即可保存所有配置的数据 。

同样的,在ApolloStudio中脚本也是以非常简单的方式来读写OPC UA数据:

#-*- coding: UTF-8 -*-
#加载内嵌模块
import clr,sys,time,datetime

mydata = AS.Func_OPC_UA_Read(0)#读取0号索引的数据,返回值类型为String
AS.Func_OPC_UA_Write(0, "123")#写0号索引数据为123,可以根据数据类型进行自动转换

 UI控件自动绑定刷新显示

为了适应更多数据监测的需求,在ApolloStudio中,无论是使用了OPC DA还是OPC UA通讯,可以无需写脚本即可对数据值进行监测,具体怎么添加节点的方法上文中已进行了充分的描述,要实现数据源与显示控件进行绑定,只需在组态UI界面编辑器中,对控件的自定义事件属性进行绑定即可:

直接加载该UI文件,点击运行即可观察到对应节点的数据变化(图中仅以OPC DA为例,OPC UA的操作与此一致)。

***********************************************************************************************************************************************

ApolloStudio最新版下载地址:

链接:https://pan.baidu.com/s/1UAgivKlM4E9dNT06V9spUw 密码:a316

欢迎加入Q群:793683827 进行学习交流

猜你喜欢

转载自blog.csdn.net/tmxyz1950/article/details/84983690