このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
シミュレ,ションデ,タアンサンブルの生成と使用
この例では,故障パラメーターを変化させながら機械の仿万博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)标题(“振动-乐团第一成员”)
アンサンブルのLastMemberRead
プロパティは,最後に読み取られたメンバ,のファ,ル名を含んでいます。このアンサンブルに対し读
を次に呼び出すと,ソフトウェアはアンサンブルの次のメンバ,に進みます(詳細にいては,状態監視と予知保全のためのデ,タアンサンブルを参照)。選択した変数をアンサンブルの次のメンバ,から読み取ります。
Data2 = read(集合)
data2 =1×2表振动SimulationInput _________________ ______________________________ { 603年x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}
data1
とdata2
に異なるアンサンブルメンバーからのデータが含まれることを確認するため,変化するモデルパラメーターToothFaultGain
の値を調べます。各アンサンブルで、この値はSimulationInput
変数の变量
フィ,ルドに格納されています。
simminput1 = data1.SimulationInput{1};SimInput1。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-2工作空间:'global-workspace'描述:""
simminput2 = data2.SimulationInput{1};SimInput2。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-1.5000工作空间:'global-workspace'描述:""
この結果から,data1
はToothFaultGain
= -2のアンサンブルから,data2
はToothFaultGain
= -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行の表を渡します。
参考
simulationEnsembleDatastore
|generateSimulationEnsemble
|读
|writeToLastMemberRead