主要内容

生成和使用模拟数据

这个例子展示了如何生成一个数据集合预见性维护算法设计通过模拟仿真软件®的模型机在不同断层参数。金宝app然后例子演示了一些方法与仿真整体数据存储交互。这个例子展示了如何从数据库读取数据到MATLAB®工作区,处理数据来计算派生变量,和写回数据存储的新变量。

本例中的模型是一个简化版的变速箱模型中描述利用仿真软件金宝app生成故障数据。加载仿真软件模型。金宝app

mdl =“TransmissionCasingSimplified”;open_system (mdl)

在这个例子中,只有一个故障模式建模。齿断层建模的干扰齿的错子系统。干扰的大小由模型控制变量ToothFaultGain,在那里ToothFaultGain = 0对应于没有齿故障(健康的操作)。

生成的模拟数据

生成一个模拟整体数据存储的故障数据,你使用generateSimulationEnsemble模拟模型在不同的值ToothFaultGain,从2到零。这个函数模拟了模型一旦数组中为每一个条目金宝appSimulink.SimulationInput您提供的对象。每个模拟生成一个单独的合奏。创建这样一个数组,和使用setVariable每次运行分配tooth-fault增益值。

toothFaultValues = 2:0.5:0;% 5 ToothFaultGain值ct =元素个数(toothFaultValues): 1:1 tmp = Si金宝appmulink.SimulationInput (mdl);tmp = setVariable (tmp,“ToothFaultGain”toothFaultValues (ct));思敏(ct) = tmp;结束

对于这个示例,该模型已经配置日志某些信号值,振动转速计(见使用信号输出信号数据日志记录(金宝app模型))。的generateSimulationEnsemble功能进一步配置模型:

  • 保存记录数据在您指定的文件夹在文件

  • 使用时间表格式信号记录

  • 存储每个金宝appSimulink.SimulationInput对象与相应的记录数据保存的文件

指定一个位置为生成的数据。对于这个示例,将数据保存到一个文件夹数据在当前文件夹。如果所有的模拟不完整错误,函数返回真正的在指标的输出,状态

mkdir数据位置= fullfile (pwd,“数据”);(地位、E) = generateSimulationEnsemble(思敏、位置);
(26 - 11月- 2022 09:29:34)运行模拟……[26 - 11月- 2022 09:29:42]完成了1 5模拟运行[26 - 11月- 2022 09:29:44]完成2 5模拟运行[26 - 11月- 2022 09:29:46]完成3 5模拟运行[26 - 11月- 2022 09:29:47]完成了4 5模拟运行[26 - 11月- 2022 09:29:49]5的5模拟运行完成
状态
状态=逻辑1

数据文件夹,检查一个文件。每个文件包含下面的MATLAB®MAT-file变量:

  • SimulationInput- - -金宝appSimulink.SimulationInput对象用于配置模型生成的数据文件。您可以使用此提取条件的信息(如缺陷或健康)在模拟运行。

  • logsout——一个数据集对象包含所有仿真软件的数据模型配置为日志。金宝app

  • PMSignalLogName变量的名称,包含记录的数据(“logsout”在本例中)。的simulationEnsembleDatastore命令使用这个名字解析文件中的数据。

  • SimulationMetadata——其他信息生成的模拟数据记录在文件中。

现在你可以使用生成的数据创建仿真整体数据存储。由此产生的simulationEnsembleDatastore对象指向生成的数据。整体对象列表数据变量,默认情况下所有的变量选择阅读。

合奏= simulationEnsembleDatastore(位置)
合奏= simulationEnsembleDatastore属性:DataVariables: [4 x1字符串]IndependentVariables: [0 x0字符串]ConditionVariables: [0 x0字符串]SelectedVariables: [4 x1字符串]ReadSize: 1 NumMembers: 5 LastMemberRead: [0 x0字符串)文件:[5 x1字符串)
ensemble.DataVariables
ans =4 x1字符串“SimulationMetadata”“SimulationInput转速器”“振动”
ensemble.SelectedVariables
ans =4 x1字符串“SimulationMetadata”“SimulationInput转速器”“振动”

读取数据从乐团成员

假设分析你想做的事,你只需要振动数据和金宝appSimulink.SimulationInput对象,描述了模拟条件下每个成员。集ensemble.SelectedVariables你想读指定变量。的命令从第一个乐团成员,然后提取这些变量是由软件决定。

ensemble.SelectedVariables= [“振动”;“SimulationInput”];data1 =阅读(整体)
data1 =1×2表振动SimulationInput _________________ ______________________________ {589 x1时间表}{1 x1 Simulink.Simul金宝appationInput}

data.Vibration是一个细胞包含一个数组时间表行存储仿真时间和相应的振动信号。现在,您可以根据需要处理这些数据。例如,从表中提取振动数据和情节。

vibdata1 = data1.Vibration {1};情节(vibdata1.Time vibdata1.Data)标题(“振动——第一次全体成员)

图包含一个坐标轴对象。与标题振动轴对象——第一次全体成员包含一个类型的对象。

LastMemberRead套装的属性包含文件名最近读的成员。下次你打电话在这个乐团,软件进展到下一个集合的成员。(见数据集合体状态监测和预测维护为更多的信息。)阅读所选变量从下一个乐团的成员。

data2 =阅读(整体)
data2 =1×2表振动SimulationInput _________________ ______________________________ {603 x1时间表}{1 x1 Simulink.Simul金宝appationInput}

确认data1data2包含来自不同的乐团成员的数据,研究不同模型参数的值,ToothFaultGain。对于每一个集合,这个值存储在变量场的SimulationInput变量。

SimInput1 = data1.SimulationInput {1};SimInput1.Variables
ans =变量属性:名称:“ToothFaultGain”值:2工作区:全局工作空间的背景:“描述:”“
SimInput2 = data2.SimulationInput {1};SimInput2.Variables
ans =变量属性:名称:“ToothFaultGain”值:-1.5000工作区:全局工作空间的背景:“描述:”“

这个结果证实data1从整体吗ToothFaultGain= 2,data2从整体吗ToothFaultGain= -1.5

将数据附加到乐团成员

假设您想要转换ToothFaultGain每个乐团成员为一个二进制值指标的牙齿是否存在过错。进一步假设您知道从你的经验与系统tooth-fault增益值小于0.1级小到可以被认为是健康的操作。转换的增益值乐团成员只需读入一个指标,是0(无过错)-0.1 <获得< 0.1,1(断层)。

圣= (abs (SimInput2.Variables.Value) < 0.1);

添加新的tooth-fault指标对应的整体数据,首先扩展的列表数据变量的合奏。

ensemble.DataVariables= [ensemble.DataVariables;“ToothFault”];ensemble.DataVariables
ans =5 x1字符串“SimulationMetadata”“SimulationInput转速器”“振动”“ToothFault”

然后,用writeToLastMemberRead编写一个新变量值上一次读书乐团的成员。

writeToLastMemberRead(合奏,“ToothFault”、圣);

批处理数据从所有乐团成员

在实践中,您想要添加tooth-fault指标总体中每一个成员。为此,重置合奏的未读状态,以便下一个读取始于第一个乐团成员。然后,遍历所有乐团成员,计算ToothFault对于每一个成员和附加。

重置(套装);圣= false;hasdata(整体)数据=阅读(套装);SimInputVars = data.SimulationInput {1} .Variables;TFGain = SimInputVars.Value;圣= (abs (TFGain) < 0.1);writeToLastMemberRead(合奏,“ToothFault”、圣);结束

最后,指定新tooth-fault指示器的条件变量。您可以使用此名称来跟踪和引用变量在总体数据代表的条件生成的数据成员。

ensemble.ConditionVariables=“ToothFault”;ensemble.ConditionVariables
ans = " ToothFault "

现在,每个乐团成员包含原始未经处理的数据和一个额外的变量指示故障条件下收集的数据。在实践中,你可能会计算和其他附加价值来源于原始振动数据,识别潜在的条件指标,可以用于故障检测和诊断。更详细的例子,显示了更多的方法来处理和分析数据存储在一个simulationEnsembleDatastore对象,看到利用仿真软件金宝app生成故障数据

读多个成员

如果它是有效的或者有用的处理你想做的事,您可以配置合奏读取数据从多个成员。为此,使用ReadSize财产。的命令使用这个属性来确定有多少乐团成员阅读一次。例如,配置整体阅读两个成员。

合奏。ReadSize= 2;

改变的价值ReadSize也重置合奏的未读状态。因此,下一个读操作读取第一个两个乐团成员。返回一个表的行数等于ReadSize

ensemble.SelectedVariables= [“振动”;“ToothFault”];data3 =阅读(整体)
data3 =2×2表振动ToothFault _________________ __________ {589} x1时间表假{603}x1时间表假

LastMemberRead套装的属性包含文件名的乐团成员都是读操作。

ensemble.LastMemberRead
ans =2 x1字符串“/ tmp / Bdoc22b_2134332_1870985 / tp26f8f871 / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_1。垫”“/ tmp / Bdoc22b_2134332_1870985 / tp26f8f871 / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_2.mat”

当你添加一个数据存储,数据ReadSize> 1,您必须编写相同数量的乐团成员当你阅读。因此,例如,当ReadSize= 2,供应一个棱表来writeToLastMemberRead

另请参阅

|||

相关的话题