主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

シミュレ,ションデ,タアンサンブルの生成と使用

この例では,故障パラメーターを変化させながら機械の仿万博1manbetx真软件®モデルをシミュレートすることにより,予知保全アルゴリズム設計のためのデータアンサンブルを生成する方法を説明します。その後,シミュレションアンサンブルデタストアを操作する方法をいくか示します。例ではデータストアから MATLAB® ワークスペースにデータを読み取り、データを処理して派生変数を計算し、新しい変数をデータストアに書き戻す方法を説明します。

この例のモデルは,万博1manbetxSimulinkを使用した故障デ,タの生成で説明されているギアボックスモデルの簡易版です。万博1manbetxSimulinkモデルを読み込みます。

mdl =“TransmissionCasingSimplified”;open_system (mdl)

この例では,故障モ,ドが1だけモデル化されています。ギア歯の故障は齿轮故障サブシステムでの外乱としてモデル化されます。外乱の大きさは,モデル変数ToothFaultGainによって制御されます。ここで,ToothFaultGain = 0はギア歯の故障がない状態(健全動作)に対応します。

シミュレ,ションデ,タのアンサンブルの生成

故障デ,タのシミュレ,ションアンサンブルデ,タストアを生成するには,generateSimulationEnsembleを使用して,モデルを-2 ~ 0の範囲にある異なるToothFaultGain値でシミュレ,トします。この関数は,指定した万博1manbetx仿真软件。SimulationInputオブジェクトの配列の各エントリにきモデルを1回シミュレトします。各シミュレ,ションは別個のアンサンブルメンバ,を生成します。こうした配列を作成し,setVariableを使用して実行ごとにギア歯の故障のゲ@ @ン値を割り当てます。

toothFaultValues = -2:0.5:0;% 5牙faultgain值tmp = Simulink.SimulationInput(mdl);万博1manbetxtmp = setVariable(tmp,“ToothFaultGain”toothFaultValues (ct));Simin (ct) = tmp;结束

この例では,モデルが振动转速计の特定の信号値をログに記録するよう既に構成されています(信号ログを使用して,信号デ,タをエクスポ,ト(万博1manbetx模型)を参照)。関数generateSimulationEnsembleは,モデルをさらに次のように構成します。

  • ログデタを指定のフォルダ内のファルに保存する

  • 信号のログに时间表形式を使用する

  • 万博1manbetx仿真软件。SimulationInputオブジェクトを対応するログデタとともに保存ファル内に格納する

生成されるデ,タの場所を指定します。この例では,現在のフォルダ,内の数据というフォルダ,にデ,タを保存します。シミュレションがすべてエラなしで完了した場合,関数はンジケタ出力状态真正的を返します。

mkdir数据位置= fullfile(pwd,“数据”);[status,E] = generateSimulationEnsemble(simin,location);
[12-02-2022 00:33:39]运行模拟…[12-Feb-2022 00:34:01]完成5次模拟运行中的2次[12-Feb-2022 00:34:04]完成5次模拟运行中的4次[12-Feb-2022 00:34:07]完成5次模拟运行中的5次
状态
状态=逻辑1

数据フォルダ内でファルの1を確認します。各ファイルは次の MATLAB® 変数を含む MAT ファイルです。

  • SimulationInput—ファaapl . cerル内のデ. cerタを生成するためにモデルの構成に使用された万博1manbetx仿真软件。SimulationInputオブジェクト。これを使用して,このシミュレーションが実行された状態(故障か健全かなど)に関する情報を抽出できます。

  • logsout- 万博1manbetxSimulinkモデルがログに記録するよう構成されている対象デ.タをすべて含む数据集オブジェクト。

  • PMSignalLogName—ログデタを含む変数の名前(この例では“logsout”)。simulationEnsembleDatastoreコマンドはこの名前を使用してファ▪▪ル内のデ▪▪タを解析します。

  • SimulationMetadata—ファル内に記録されたデタを生成したシミュレションに関するその他の情報。

これで,生成されたデータを使ってシミュレーションアンサンブルデータストアを作成することができます。結果のsimulationEnsembleDatastoreオブジェクトは生成されたデ,タを指します。オブジェクトはアンサンブル内のデータ変数をリストし,既定ではすべての変数が読み取り対象として選択されています。

ensemble = simulationEnsembleDatastore(location)
ensemble = simulationEnsembleDatastore with properties: DataVariables: [4x1 string] IndependentVariables: [0x0 string] ConditionVariables: [0x0 string] SelectedVariables: [4x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]
合奏。数据变量
ans =4 x1字符串SimulationInput SimulationMetadata Tacho振动
合奏。SelectedVariables
ans =4 x1字符串SimulationInput SimulationMetadata Tacho振动

アンサンブルメンバ,からのデ,タの読み取り

目的の解析を行うには,振动デ,タと,各メンバ,がシミュレ,トされた状態を記述する万博1manbetx仿真软件。SimulationInputオブジェクトのみが必要であると仮定します。合奏。SelectedVariablesを設定して読み取る変数を指定します。するとコマンドは,ソフトウェアにより決定された最初のアンサンブルメンバ,からこれらの変数を抽出します。

合奏。SelectedVariables = [“振动”“SimulationInput”];Data1 = read(集合)
data1 =1×2表振动SimulationInput  _________________ ______________________________ { 589年x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

数据。振动は,シミュレ,ション時間を格納する时间表行1と,それに対応する振動信号を含むcell配列です。これで,このデ,タを必要に応じて処理することができます。たとえば,表から振動デ,タを抽出してプロットします。

vibdata1 = data1.振动{1};情节(vibdata1.Time vibdata1.Data)标题(“振动-乐团第一成员”

图中包含一个轴对象。标题为“振动-第一集成成员”的axis对象包含一个类型为line的对象。

アンサンブルのLastMemberReadプロパティは,最後に読み取られたメンバ,のファ,ル名を含んでいます。このアンサンブルに対しを次に呼び出すと,ソフトウェアはアンサンブルの次のメンバ,に進みます(詳細にいては,状態監視と予知保全のためのデ,タアンサンブルを参照)。選択した変数をアンサンブルの次のメンバ,から読み取ります。

Data2 = read(集合)
data2 =1×2表振动SimulationInput  _________________ ______________________________ { 603年x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

data1data2に異なるアンサンブルメンバーからのデータが含まれることを確認するため,変化するモデルパラメーターToothFaultGainの値を調べます。各アンサンブルで、この値はSimulationInput変数の变量フィ,ルドに格納されています。

simminput1 = data1.SimulationInput{1};SimInput1。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-2工作空间:'global-workspace'描述:""
simminput2 = data2.SimulationInput{1};SimInput2。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-1.5000工作空间:'global-workspace'描述:""

この結果から,data1ToothFaultGain= -2のアンサンブルから,data2ToothFaultGain= -1.5のアンサンブルからのものであることが確認されます。

アンサンブルメンバ,へのデ,タの追加

各アンサンブルメンバ,内のToothFaultGain値を,ギア故障の有無を示すバ。さらに,システムの使用経験から,ギア歯故障のゲイン値の大きさが0.1より小さい場合は健全動作と見なすのに十分であることがわかっているとします。前節で読み取ったアンサンブルメンバーのゲイン値を,-0.1 <ゲイン< 0.1の場合は0(故障なし),そうでない場合は1(故障あり)のインジケーターに変換します。

sT = (abs(simminput2 . variables . value) < 0.1);

新しいギア歯故障のインジケーターを,対応するアンサンブルデータに追加するには,まずアンサンブル内のデータ変数のリストを拡張します。

合奏。数据变量= [ensemble.DataVariables;“ToothFault”];合奏。数据变量
ans =5 x1字符串"SimulationInput" "SimulationMetadata" "Tacho" "Vibration" " teeth fault "

その後,writeToLastMemberReadを使用して,アンサンブルの最後に読み取られたメンバ,に新しい変数の値を書き込みます。

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

すべてのアンサンブルメンバ,からのデ,タのバッチ処理

。そのためには,アンサンブルを未読の状態にリセットして,次回の読み取りが最初のアンサンブルメンバーから開始されるようにします。その後,すべてのアンサンブルメンバ,をル,プ処理して各メンバ,のToothFaultを計算し,これを追加します。

重置(套装);sT = false;Hasdata (ensemble) data = read(ensemble);simminputvars = data.SimulationInput{1}.Variables;TFGain = simminputvars . value;sT = (abs(TFGain) < 0.1);writeToLastMemberRead(合奏,“ToothFault”、圣);结束

最後に,新しい歯の故障ンジケタをアンサンブル内に状態変数として指定します。この指定を使用して,メンバーデータが生成された状態を表す変数をアンサンブルデータ内で追跡および参照することができます。

合奏。ConditionVariables =“ToothFault”;合奏。ConditionVariables
ans = "牙齿缺陷"

これで,各アンサンブルメンバーには,元の未処理のデータと,データが収集された故障状態を示す追加の変数が含まれるようになります。実際には,故障の検出と診断に使用できる状態インジケーターの候補を特定するために,生の振動データから導出した他の値を計算して追加することもあります。simulationEnsembleDatastoreオブジェクトに格納されているデ,タを操作し解析するための他の方法を示す詳細な例は,万博1manbetxSimulinkを使用した故障デ,タの生成を参照してください。

複数のメンバ,を一度に読み取る

必要な処理を行ううえで効率的または有用な場合には,一度に複数のメンバーからデータを読み取るようにアンサンブルを構成することができます。これを行うには,ReadSizeプロパティを使用します。コマンドはこのプロパティを使用して,一度に読み取るアンサンブルメンバ,の数を決定します。たとえば,一度に2のメンバを読み取るようにアンサンブルを構成します。

合奏。ReadSize= 2;

また,ReadSizeの値を変更すると,アンサンブルは未読の状態にリセットされます。したがって,次回の読み取り操作は最初の2のアンサンブルメンバを読み取ります。ReadSizeと等しい行数をも表を返します。

合奏。SelectedVariables = [“振动”“ToothFault”];Data3 = read(集合)
data3 =2×2表振动ToothFault  _________________ __________ { 589年x1时间表}假{603}x1时间表假

アンサンブルのLastMemberReadプロパティには,この操作で読み取られたすべてのアンサンブルメンバ,のファ,ル名が含まれます。

合奏。LastMemberRead
ans =2 x1字符串“/ tmp / Bdoc22a_1880208_157556 / tp8ebe2462 / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_1。垫”“/ tmp / Bdoc22a_1880208_157556 / tp8ebe2462 / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_2.mat”

ReadSizeが1より大きいアンサンブルデータストアにデータを追加する場合,読み取るときと同数のアンサンブルメンバーを書き込まなければなりません。したがって,たとえばReadSizeが2の場合,writeToLastMemberReadには2行の表を渡します。

参考

|||

関連するトピック