这个示例展示了使用OPC工具箱™从OPC服务器获取数据所涉及的基本步骤。
先决条件:
创建一个opcda
对象,并连接到所需的服务器。
da = opcda (“localhost”,“Matrikon.OPC.Simulation.1”)连接(da)
da = OPC数据访问客户端对象概要:localhost/Matrikon.OPC.Simulation.1服务器参数主机:localhost ServerID: Matrikon.OPC.Simulation.1状态:disconnected超时:10秒对象参数组:0-by-1 dagroup对象事件日志:1000个事件中的0个
创建一个组对象来管理所需的项。
grp = addgroup(哒。“DemoGroup”)
grp = OPC数据访问组对象概要:DemoGroup对象参数组类型:private Item: 0-by-1 daitem对象Parent: localhost/Matrikon.OPC.Simulation.1更新速率:0.5死区:0%对象状态活跃:开启订阅:开启登录:关闭登录参数记录:120持续时间:至少60秒登录到:内存状态:等待启动0条记录可用于GETDATA/PEEKDATA
添加Real8
项目从锯齿状的波
和Real8
和UInt2
项目从三角波
该集团。
itmIDs = {锯齿状的波浪。Real8”,...“三角波。Real8”,...“三角波。UInt2”};itmIDs itm = additem (grp)
项目对象数组:Index: Active: ItemID: Value: Quality: TimeStamp: 1 on…hed波。Real8Bad: Ou... 2 on ...gle Waves.Real8 Bad: Ou... 3 on ...gle Waves.UInt2 Bad: Ou...
配置组以0.2秒的间隔记录60秒的数据。
logDuration = 60;logRate = 0.2;grp. numRecords = ceil(logDuration./logRate) grp. numRecords = ceil(logDuration./logRate)UpdateRate = logRate;grp。RecordsToAcquire = numRecords;
numRecords = 300
启动获取任务,并在继续执行任何MATLAB™代码之前等待任务完成。
开始(grp)等(grp)
注意,在等待日志任务完成的同时,MATLAB继续处理来自OPC工具箱对象(和其他包含回调功能的对象)的回调。
将记录的数据检索到时间戳、质量和值的单独数组中。
[logIDs, logVal logQual、logTime logEvtTime] = getdata (grp),“双”);
检查工作区中数据的大小。
谁日志*
名称大小字节类属性logDuration 1x1 8 double logEvtTime 300x1 2400 double logIDs 1x3 438 cell logQual 300x3 126004 cell loggrate 1x1 8 double logTime 300x3 7200 double logVal 300x3 7200 double
现在你可以在一个坐标轴上绘制这些数据。
logTime = datetime (logTime,“ConvertFrom”,“datenum”);情节(logTime logVal);轴紧乐金显示器=传奇(logIDs);乐金显示器。自动更新=“关闭”;
值数据不能提供全貌。您应该始终检查数据的质量,以确定值数组的有效性。
在质量不高的地方用标记标注情节好
。
持有在isBadQual = strncmp (logQual,“坏”3);isRepeatQual = strncmp (logQual,“重复”6);为k = 1:size(logQual,2) badInd = isBadQual(:,k);情节(logTime (badInd k), logVal (badInd k),“罗”,...“MarkerFaceColor”,“r”,“MarkerEdgeColor”,“k”) repInd = isRepeatQual(:,k);情节(logTime (repInd k), logVal (repInd k),“罗”,...“MarkerFaceColor”(0.8 - 0.5 0),“MarkerEdgeColor”,“k”)结束持有从
质量差用红色标注,重复质量用橙色标注。
从OPC工具箱引擎断开并删除客户端对象。
断开(da)删除(da)