主要内容

用于状态监测和预测性维护的数据集成

数据分析是任何状态监测和预测性维护活动的核心。预测性维护工具箱™提供的工具称为整体数据存储用于创建、标记和管理预测性维护算法设计所需的通常庞大而复杂的数据集。

数据可以来自系统上使用传感器的测量,如加速度计、压力表、温度计、高度计、电压表和转速表。例如,您可以访问以下测量数据:

  • 系统正常运行

  • 系统处于故障状态

  • 系统运行的寿命记录(run-to-failure数据)

对于算法设计,还可以使用运行Simulink生成的模拟数据金宝app®您的系统在各种操作和故障条件下的模型。

无论是使用测量数据、生成数据,还是两者都使用,您经常会有许多信号,范围在一个时间跨度或多个时间跨度上。您还可能有来自许多机器的信号(例如,来自100个按相同规格制造的独立发动机的测量值)。您可能拥有表示正常操作和故障条件的数据。在任何情况下,设计预测性维护的算法都需要组织和分析大量数据,同时跟踪数据所代表的系统和条件。

集成数据存储可以帮助您处理这些数据,无论是存储在本地还是存储在远程位置,例如使用Amazon S3™(简单存储服务)、Windows Azure的云存储®Blob存储和Hadoop®分布式文件系统(HDFS™)。

数据的集合体

在预测维护工具箱中,组织和管理多面数据集的主要单元是数据集成。一个系综是数据集的集合,通过在不同条件下测量或模拟系统而创建。

例如,考虑一个传动齿轮箱系统,其中有一个加速度计来测量振动,一个转速计来测量发动机轴的旋转。假设您运行引擎五分钟,并记录测量信号作为时间的函数。你还可以记录引擎的寿命,以行驶里程来衡量。这些测量产生以下数据集。

现在假设您有一个由许多相同的发动机组成的车队,并记录来自所有这些发动机的数据。这样做会产生一系列数据集。

这组数据集是系综,集合中的每一行都是a成员合奏的。

集合中的成员是相互关联的,因为它们包含相同的数据变量。例如,在所示的集合中,所有成员都包括相同的四个变量:发动机标识符、振动和转速表信号以及发动机年龄。在该示例中,每个成员对应于不同的机器。集成还可能包括同一台机器在不同时间记录的数据变量集。例如,下图显示了一个集成,其中包括来自同一引擎的多个数据集,这些数据集随着引擎老化而被记录下来。

在实践中,每个集成成员的数据通常存储在单独的数据文件中。因此,例如,您可能有一个文件包含引擎01在9,500英里的数据,另一个文件包含引擎01在21,250英里的数据,以此类推。

模拟集成数据

在许多情况下,您的系统没有真正的故障数据,或者只有故障条件下系统的有限数据。如果您有一个近似于实际系统行金宝app为的Simulink模型,您可以通过在各种条件下重复模拟模型并记录仿真数据来生成数据集成。例如,你可以:

  • 改变参数值以反映故障的存在或不存在。例如,使用非常低的电阻值来模拟短路。

  • 注入信号故障。传感器漂移和被测信号中的扰动会影响被测数据值。您可以通过向模型中添加适当的信号来模拟这种变化。例如,您可以向传感器添加偏移来表示漂移,或者通过在模型中的某个位置注入信号来对扰动建模。

  • 改变系统动态。控制组件行为的方程可能会因正常和错误操作而改变。在这种情况下,不同的动态可以实现为相同组件的变体。

例如,假设您有一个描述变速箱系统的Simulink模型。金宝app该模型包含一个表示振动传感器漂移的参数。您可以在不同的传感器漂移值下模拟该模型,并配置该模型以记录每个模拟的振动和转速表信号。这些模拟生成了一个涵盖一系列操作条件的集合。每个集成成员对应于一个模拟,并在特定的一组条件下记录相同的数据变量。

generateSimulationEnsemble命令帮助您从模型生成这样的数据集,您可以在模型中通过改变模型的某些方面来模拟故障条件。

整体变量

集成中的变量有不同的用途,因此可以分为几种类型:

  • 数据变量集成成员的主要内容,包括用于分析和开发预测性维护算法的测量数据和派生数据。例如,在图示的齿轮箱组合中,振动而且转速表是数据变量。数据变量还可以包括派生值,例如信号的平均值,或信号频谱中峰值幅度的频率。

  • 独立变量-识别或排序集合成员的变量,如时间戳、工作时数或机器标识符。在测量变速箱数据的集合中,年龄是一个自变量。

  • 条件变量—描述集成成员故障状态或运行状态的变量。条件变量可以记录故障状态的存在或不存在,或其他操作条件,如环境温度。在模拟变速箱数据的集合中,SensorDrift是一个条件变量。条件变量也可以是派生值,例如编码多个故障和操作条件的单个标量值。

在实践中,数据变量、自变量和条件变量都是不同的变量集。

集成数据预测性维护工具箱

使用“预测维护工具箱”,您可以使用集成数据进行管理和交互整体数据存储对象。在MATLAB®时,时间序列数据通常存储为向量或时间表.其他数据可能存储为标量值(例如引擎年龄)、逻辑值(例如是否存在故障)、字符串(例如标识符)或表。集成可以包含对应用程序记录有用的任何数据类型。在集成中,通常将每个成员的数据存储在单独的文件中。集成数据存储对象帮助您组织、标记和处理集成数据。您使用的集成数据存储对象取决于您是使用磁盘上的测量数据,还是从Simulink模型生成模拟数据。金宝app

集成数据存储对象包含关于存储在磁盘上的数据的信息,并允许您与这些数据进行交互。您可以使用诸如,它从集成中提取数据到MATLAB工作空间中writeToLastMemberRead,它将数据写入集成。

最后一名成员

当您使用集成时,软件会跟踪它最近读过的集成成员。当你打电话时时,软件选择下一个成员读取并更新LastMemberRead属性来反映该成员。当你下次打电话时writeToLastMemberRead时,软件向该成员写入。

例如,考虑模拟变速箱数据的集成。当你使用generateSimulationEnsemble,每次模拟运行的数据都被记录到磁盘上的单独文件中。然后创建一个simulationEnsembleDatastore对象,该对象指向这些文件中的数据。您可以设置集成对象的属性,以将变量分为自变量或条件变量等组。

假设您现在从集成对象中读取一些数据,系综

数据=读取(集成);

第一次打电话的时候在集合上,软件指定集合中的某个成员作为第一个读取的成员。该软件将选择的变量从该成员读入MATLAB工作区,进入一个表格被称为数据.类型中指定的变量SelectedVariables的属性系综)。软件更新属性合奏。LastMemberRead使用该成员的文件名。

直到你打来电话再一次,last-member-read指定保留在软件将其分配给的集成成员中。因此,例如,假设您正在处理数据为了计算一些导出变量,例如振动信号频谱中峰值的频率,VibPeak.您可以将派生值附加到它所对应的集成成员,该成员仍然是最后读取的成员。为此,首先展开中的数据变量列表系综以包含新变量。

合奏。DataVariables = [ensemble.DataVariables;“VibPeak”

该操作相当于向集成添加一个新列,如下面的插图所示。新变量最初由一个缺失的值填充到每个集合中。(见失踪以获取更多信息。)

现在,使用writeToLastMemberRead为最后一个成员读取填充新变量的值。

newdata = table(VibPeak,“VariableNames”, {“VibPeak”});writeToLastMemberRead(合奏,newdata);

在集成中,出现新值,最后一个成员读取的指定保留在同一成员上。

下次你打电话的时候在集成上,它确定要读取的下一个成员,并从该成员返回选定的变量。最后一个成员读取的指定将继续执行到该成员。

hasdata命令告诉您是否已读取集合的所有成员。的重置命令从所有成员中清除“已读”指定,以便下一次调用作用于集合的第一个成员。reset操作清除LastMemberRead属性,但它不会更改其他集成属性,例如DataVariablesSelectedVariables.它也不会改变您写回集成的任何数据。有关显示与生成的数据集成的更多交互的示例,请参见生成和使用模拟数据集成

读取测量数据

虽然前面的讨论使用模拟集成作为示例,但最后一个成员读取指定在您所管理的测量数据集成中表现相同fileEnsembleDatastore.然而,当您使用测量数据时,您必须提供信息来告诉而且writeToLastMemberRead命令如何在磁盘上存储和组织数据。

属性的属性可以做到这一点fileEnsembleDatastore对象指向您所编写的函数。设置ReadFcn属性设置为函数的句柄,该函数描述如何从数据文件中读取数据变量。当你打电话时,它使用此函数访问下一个集成文件,并从其中读取在SelectedVariables集成数据存储的属性。类似地,使用WriteToMemberFcn的属性fileEnsembleDatastore对象提供一个函数,该函数描述如何将数据写入集成的成员。

有关显示这些与磁盘上测量数据集成的相互作用的示例,请参见:

合唱团和MATLAB数据存储

预测性维护工具箱中的集合是一种专用的MATLAB数据存储(请参阅从数据存储开始).的而且writeToLastMemberRead命令具有特定于集成数据存储的行为。此外,下面的MATLAB数据存储命令使用集成数据存储时与使用其他MATLAB数据存储时一样。

  • hasdata—确定集成数据存储是否有尚未读取的成员。

  • 重置—将集成数据存储恢复到尚未读取任何成员的状态。在此状态下,没有当前成员。使用此命令可以重新读取已经从集成中读取的数据。

  • -将集成数据存储转换为高表。(见内存不足数据的高数组).

  • 进步—确定已读取集合数据存储的百分比。

  • 分区—将一个集成数据存储划分为多个集成数据存储,用于并行计算。对于集成数据存储,使用分区(n, ds指数)语法)。

  • numpartitions—确定数据存储分区数。

从多个集成成员中读取

默认情况下,命令每次从一个集成成员返回数据。若要同时处理来自多个集成成员的数据,请设置ReadSize集成数据存储对象的初始值设置为大于1的值。例如,如果你设置ReadSize到3,然后每个呼叫到返回一个有三行的表,并指定三个集成成员作为最后读取的成员。详细信息请参见fileEnsembleDatastore而且simulationEnsembleDatastore参考页面。

将集成数据转换为高表

一些函数(例如许多统计分析函数)可以操作高表中的数据,这些高表允许您使用由数据存储支持的内存不足的数据。类可以将集成数据存储中的数据转换为高表,以便与此类分析命令一起使用命令。

在处理大型集成数据时,例如长时间序列信号,通常在集成中使用而且writeToLastMemberRead.处理数据以计算数据的某些特征,这些特征可以作为集成成员的有用条件指示器。

通常情况下,您的条件指示器是一个标量值或其他一些值,这些值在内存中占用的空间比原始未处理的信号要少。因此,一旦将这些值写入数据存储,就可以使用而且收集将条件指标提取到内存中,以便进行进一步的统计处理,例如训练分类器。

例如,假设集合中的每个成员都包含时间序列振动数据。对于每个成员,读取集成数据并计算一个条件指示器,该指示器是从信号分析过程获得的标量值。将派生值写回成员。假设派生值位于名为指示器包含关于集成成员的信息(例如错误条件)的标签位于名为标签.为了对集成进行进一步的分析,您可以将状态指示器和标签读入内存,而无需读入较大的振动数据。要这样做,请设置SelectedVariables属性设置为要读取的变量。然后使用为所选变量创建一个高表,并且收集将值读入内存。

合奏。选择edVariables = [“指标”“标签”];featureTable =高(集合);featureTable = gather(featureTable);

结果变量featureTable是MATLAB工作区中的一个普通表。您可以使用任何支持MATLAB表数据类型的函数来处理它。金宝app

的使用示例而且收集若要操作集成数据进行预测性维护分析,请参见:

处理集成数据

在集成中组织数据之后,预测维护算法设计的下一步是对数据进行预处理以清除或转换数据。然后进一步处理数据以提取条件指示器,这些指示器是可用于区分健康操作与故障操作的数据特征。有关更多信息,请参见:

另请参阅

|||

相关的话题