Matlab:使用OPC DA Explorer访问 OPC DA 服务器数据,并绘制二维线图

参考文献
[1] The MathWorks. OPC Toolbox 产品信息[EB/OL]. [2021-9-21]. https://ww2.mathworks.cn/products/opc.html#analyze.
[2] The MathWorks. Access Data with OPC Data Access Explorer[EB/OL]. [2021-9-21]. https://ww2.mathworks.cn/help/opc/ug/access-data-with-opc-data-access-explorer.html.

前言

最近的项目涉及到了数据分析,自然而然的就想到了Matlab。PLC可以以OPC方式同WinCC建立通信,那么这种方法是否同样适用于Matlab?显然是可以的,使用OPC Toolbox,即可从 OPC 服务器中读取和写入数据。
我对OPC Toolbox的使用方法不熟悉,实际上对Matlab本身也不太熟悉,为此特意学习一番,汇总成文章。

1 OPC组成

数据交换技术:OPC技术工作原理简述

回顾一下OPC DA服务器的一些知识点:
OPC DA服务器采用一种层次结构来组织数据源,共有3类COM对象,分别为OPCServer(服务器)对象、OPCGroup(组)对象和OPCItem(项)对象。前两者必须实现。
在这里插入图片描述
服务器对象包含服务器信息并作为组对象的容器,组对象包含自身信息和项对象。

  1. OPCServer对象负责OPA DA服务器级的信息管理和获取服务器的状态信息;
  2. OPCGroup对象负责OPA DA客户信息的设定与数据访问;
  3. OPCItem对象用于管理与过程数据源的连接。

在使用OPC DA Explorer组态客户端时,需要按由上至下的顺序建立各个对象。

2 OPC Server上位机测试软件

OPC技术由两部分组成:OPC服务器和OPC客户端。Matlab通常是作为OPC 客户端使用的,为了建立数据交互,我们还需要一台设备作为OPC 服务器,在这个项目中使用的是PLC。遗憾的是,我的手头只有一台PC,没有PLC,即便如此,我们同样能实现针对Matlab的OPC测试。正如在进行modbus通信测试时,可以使用modbus Poll和modbus Slave作为主站和从站一样,这里使用OPC SERVER SIMULATOR作为OPC Server上位机测试软件。

OPC SERVER SIMULATOR相当简单易用,安装好并进入软件界面后,实际上就无需任何其它操作了。可以看到程序已经预先创建各种数据类型的item,为此本文就不再创建新的item。软件默认以1000ms为一个周期,对列表中所有item进行更新。
在这里插入图片描述

3使用OPC DA Explorer访问数据

3.1 OPC通讯建立

面板介绍

在Matlab命令行中敲入"opctool"即可唤出OPC DA Explorer。
在这里插入图片描述

添加本地主机

在“Hosts and OPC Servers"中,右击”OPC Network“,在菜单中选择”Add host“,并为其命名,完成后可发现列表已更新,列表中的”opcserversim.Instance.1“即为在同一台PC中运行的OPC服务器上位机软件。
在这里插入图片描述

创建和连接OPC DA服务器对象

右击”opcserversim.Instance.1“,选择"Creat Client",可看到该OPC服务器对象被”MATLAB OPC DA Clients“下方:
在这里插入图片描述
在属性界面中,选择连接该服务器对象:
在这里插入图片描述

添加OPC Group和OPC Item对象

右击”localhost/opcserversim.Instance.1“,选择”Add Group“:
在这里插入图片描述
右击新创建的组对象”Group0“,选择”Add Item“:
在这里插入图片描述
由于OPC服务器对象在线的缘故,我们可以直接选择需要添加的项对象:
在这里插入图片描述
仍旧选中”Group0“,在”Read/Write“选项卡中,我们可以直接通过项数据列表实现对项对象的读和写。
在这里插入图片描述

使用PLOT绘制二维线图

记录属性配置

记录属性面板如下图所示:
在这里插入图片描述
Rate and records
在此可进行更新速率和记录条数的配置,记录时长即为rate*records,默认0.5s更新一次,共记录120次,即60s。

Log destination
可以选择将记录存放至内存或硬盘中。

Logging task
可以进行数据记录任务的创建,参见下一小节。

记录的开始、结束与线图的绘制

在“Logging task”中,点击“Start”按钮即开始进行数据记录,进度条用于显示记录进度,同时在进度条下方的“ records available”中会显示有效记录条数。点击“Stop”可中止记录,点击“Flush”,可以清除已存储的记录。
在这里插入图片描述
注意,如果在组对象中,没有任何一个项对象值发生更新,则记录将不会更新。

记录结束后,在“record usage”中选择“plot”,使用所有已记录的可用数据来绘制二维线图。
在这里插入图片描述
二维线图的绘制效果如下图所示,这里我只记录了一个项对象。
在这里插入图片描述

我们可以注意到一个问题,使用这种方法无法绘制实时曲线,这会给我们的调试工作造成麻烦,这也是为什么在很多教程中最后使用了simulink中的示波器进行数据监视。但这并不是说非要使用simulink,也可以使用命令行,有空再写吧。

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值