主要内容

可视化和预处理OPC HDA数据

这个示例向您展示了如何使用OPC HDA Data对象。

当从OPC历史数据访问(HDA)服务器读取数据时,创建OPC HDA数据对象。OPC HDA数据对象允许您存储、可视化和操作历史数据,然后将该数据转换为内置数据类型,以便在MATLAB中进行进一步处理。

有关生成OPC HDA数据对象的更多信息,请参见示例从OPC历史数据访问服务器获取数据.

加载样本OPC HDA数据

将示例数据加载到工作区中。

负载opcdemoHDAData

显示OPC HDA数据对象

检查工作区以查看已加载的变量。

Name Size Bytes Class Attributes hdaDataSmall 1x2 356 opc.hda.Data hdaDataVis 1x2 9088 opc.hda.Data

显示包含的数据的摘要hdaDataVis.

hdaDataVis
hdaDataVis=1×2 OPC HDA数据对象:ItemID值开始时间戳结束时间戳质量------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------示例。Item 1361双值2010-05-12 08:15:00.000 2010-05示例项目2双值2010-05-12 08:30:00.000 2010-05-12 09:30:00.000 2独特品质

数据对象包含两个项。第一个元素示例.项目1包含361个值和一个唯一质量,而第二个包含11个值和两个唯一质量。

的方法更详细地检查第二个元素展示价值方法。

showValues (hdaDataVis (2))
OPC HDA项的数据对象,例如。2:TIMESTAMP VALUE QUALITY ======================= ============= ================= 2010-05-12 08:30:00.000 -0.500000 Raw (Good) 2010-05-12 08:42:00.000 0.250000 Raw (Good) 2010-05-12 08:48:00.000 0.250000 Raw (Good) 2010-05-12 08:54:00.000 0.500000 calculate (Good) 2010-05-12 09:00:00.000 0.500000Raw (Good) 2010-05-12 09:18:00.000 0.300000 Raw (Good) 2010-05-12 09:18:00.000 0.200000 Raw (Good) 2010-05-12 09:24:00.000 0.100000 Raw (Good) 2010-05-12 09:30:00.000 0.400000 Raw (Good) 2010-05-12 09:30:00.000 0.400000

更改日期显示格式

使用获取当前日期显示格式opc.getDateDisplayFormat.

origFormat = opc.getDateDisplayFormat;

将显示格式更改为标准的美国日期格式,并再次显示该值。

opc.setDateDisplayFormat ('mm/dd/yyyy HH:mm AM'); 显示值(hdaDataVis(2))
项目示例的OPC HDA数据对象。项目2:时间戳值质量========================================================================================================05/12/2010 8:30 AM-0.500000 Raw(良好)05/12/2010 8:36 AM-0.250000 Raw(良好)05/12/2010 8:42 AM 0.000000 Raw(良好)05/12/2010 8:48 AM 0.250000 Raw(良好)05/12/2010 8:54 AM 0.500000 Raw(良好)2010年12月5日9:00上午0.500000计算(良好)2010年12月5日9:06上午0.400000计算(良好)2010年12月5日9:12上午0.300000未加工(良好)2010年12月5日9:18上午0.200000未加工(良好)2010年12月5日9:24上午0.100000未加工(良好)2010年12月5日9:30上午0.000000未加工(良好)

将显示格式重置为默认格式。

opc.setDateDisplayFormat (“默认”)
ans = yyyy-mm-dd HH:MM:SS。FFF

将显示格式重置为原始值。

opc.setDateDisplayFormat(origFormat);

可视化OPC HDA数据

可视化OPC HDA数据使用情节楼梯数据对象上的方法。

axH1 =次要情节(2,1,1);情节(hdaDataVis);标题(“hdaDataVis数据图”); axH2=子批次(2,1,2);楼梯(hdaDataVis);头衔(“hdaDataVis数据的阶梯图”); 传奇显示

重新取样OPC HDA数据

检查一个小的数据集。为了显示重采样的概念,这个数据集故意很小。

hdaDataSmall
hdaDataSmall=1×2 OPC HDA数据对象:ItemID值开始时间戳结束时间戳质量--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------示例。ItemR.1 5双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 1唯一质量[原始]示例项目R.2 3双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 1独特质量[原始]

分别显示每个项目的数据。不能在一个表中显示这些项目,因为它们的时间戳不同。

showValues(hdaDataSmall(1))showValues(hdaDataSmall(2))
OPC HDA项的数据对象,例如itemr。1: TIMESTAMP VALUE QUALITY ======================= ======================= 2010-06-01 09:30:00.000 Raw (Good) 2010-06-01 09:30:15.000 1.000000 Raw (Good) 2010-06-01 09:30:30.000 2.000000 Raw (Good) 2010-06-01 09:30:45.000 1.000000 Raw (Good) 2010-06-01 09:31:00.000 Raw (Good) OPC HDA项目的数据对象Example.ItemR。2:时间戳值质量  ======================= ============= ========== 2.000000 2010-06-01 1.000000 09:30:00.000生(好)2010-06-01 09:30:30.000生(好)2010-06-01 09:31:00.000 3.000000生(好)

尝试将数据转换为双数组。转换将失败。

试一试VAL=双倍(hdaDataSmall);exc disp (exc.message)结束
转换为双精度失败。OPC HDA Data对象的所有元素必须具有相同的时间戳。考虑在Data对象上使用“TSUNION”或“RESAMPLE”。

项目时间戳的交集会产生更小、定期采样的数据集。

hdaDataIntersect=hdaDataSmall.tsintersect
hdaDataIntersect=1×2 OPC HDA数据对象:ItemID值开始时间戳结束时间戳质量----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------示例。ItemR.1 3双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 1唯一质量[原始]示例.ItemR.2 3双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 1唯一质量[Raw]使用showValues方法显示所有值。

一起展示这些价值。您可以这样做,因为时间戳现在是定期采样的。

showValues (hdaDataIntersect)
OPC HDA数据对象数组:TIMESTAMP Example.ItemR.1Example.ItemR.2======================= =============== =============== 2010-06-01 09:30:00.000 0.000000 1.000000 2010-06-01 09:30:30.000 2.000000 2.000000 2010-06-01 09:31:00.000 0.000000 3.000000

将数据对象转换为双数组。

VAL=双精度(hdaDataIntersect)
val = 0 1 2 2 0 3

使用津农返回数据对象中时间序列的并集。使用提供的方法对新值进行插值(如果没有提供方法,则使用线性插值)。

hdaDataUnion = hdaDataSmall。津农展示价值(hdaDataUnion)
hdaDataUnion = 1×2 OPC数据对象:注重科技进步ItemID价值开始时间结束时间戳的质量  --------------- --------------- ----------------------- ----------------------- ---------------------- Example.ItemR。2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 1 unique quality [Raw] Example.ItemR. itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr . itemr。2 5 double value 2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 2 unique qualities使用showValues方法显示所有的值。OPC HDA数据对象数组:TIMESTAMP Example.ItemR.1Example.ItemR.2======================= =============== =============== 2010-06-01 09:30:00.000 0.000000 1.000000 2010-06-01 09:30:15.000 1.000000 1.500000 2010-06-01 09:30:30.000 2.000000 2.000000 2010-06-01 09:30:45.000 1.000000 2.500000 2010-06-01 09:31:00.000 0.000000 3.000000

注意这些新值的质量是如何设置为“插值”的Example.ItemR.2.

showValues (hdaDataUnion (2))
OPC HDA项的数据对象,例如itemr。2:TIMESTAMP VALUE QUALITY ======================= ============= =================== 2010-06-01 09:30:00.000 1.000000 Raw (Good) 2010-06-01 09:30:15.000 1.500000 Interpolated (Good) 2010-06-01 09:30:30.000 2.000000 Raw (Good) 2010-06-01 09:30:45.000 2.500000 Interpolated (Good) 2010-06-01 09:31:00.000 3.000000 Raw (Good)

使用标记绘制数据以显示方法的工作方式。

子地块(2,1,1);地块(hdaDataSmall,“标记”,'.');持有所有情节(hdaDataIntersect“标记”,“o”,“线型”,“没有”);标题(“数据对象中时间序列的交集”); 子批次(2,1,2);地块(hdaDataSmall,“标记”,'.');持有所有情节(hdaDataUnion“标记”,“o”,“线型”,“没有”);标题(“数据对象中时间序列的并集”);

在指定的时间步长对小数据集重新采样。

蝾螈= datenum(1 2010年6日,9日,30日,[0:60]);hdaDataResampled = resample(hdaDataSmall,newTS) figure;情节(hdaDataSmall);持有所有楼梯(HDAdar采样);
hdaDataResampled=1-by-2 OPC HDA数据对象:ItemID值开始时间戳结束时间戳质量-------------------------------------------------------------------------------------示例。ItemR.1 61双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 2唯一质量示例。ItemR.2 61双值2010-06-01 09:30:00.000 2010-06-01 09:31:00.000 2独特品质使用showValues方法显示所有值。