Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

generateSimulationEnsemble

Simulink モデルを実行してアンサンブル データを生成

説明

[status,E] = generateSimulationEnsemble(simin) は、simin で指定された Simulink® モデルを実行してシミュレーション アンサンブルのデータを生成します。この入力引数は、アンサンブルを生成するためにシミュレーションごとに変更する他のパラメーターも指定する Simulink.SimulationInput オブジェクトのベクトルです。関数はシミュレーション データ ログ ファイルを現在のフォルダーに書き込みます。各ファイルには、対応する Simulink.SimulationInput オブジェクトとシミュレーション用にログに記録するようにモデルで構成されているすべての変数が格納されます。出力引数は、エラーを生成するシミュレーションがあるかどうかを示し、ある場合はそのエラーを返します。シミュレーション データを操作するためのアンサンブル データストアを作成するには、simulationEnsembleDatastore を使用します。

データ アンサンブルの一般的な情報については、状態監視と予知保全のためのデータ アンサンブルを参照してください。

[status,E] = generateSimulationEnsemble(simin,location) は、シミュレーション結果を格納する場所のパスも指定します。

[status,E] = generateSimulationEnsemble(simin,location,Name,Value) は、1 つ以上の Name,Value のペアの引数で指定された追加のオプションを使用します。

すべて折りたたむ

故障パラメーターを変化させながら機械の Simulink® モデルをシミュレートすることにより、故障状態下での機械の動作を表すデータのシミュレーション アンサンブル データストアを生成します。

Simulink モデルを読み込みます。このモデルは、Simulink を使用した故障データの生成で説明されているギアボックス モデルの簡易版です。この例では、故障モードがギア歯の故障の 1 つだけモデル化されています。

mdl = 'TransmissionCasingSimplified';
open_system(mdl)

ギア歯の故障は Gear Tooth fault サブシステムでの外乱としてモデル化されます。外乱の大きさは、モデル変数 ToothFaultGain によって制御されます。ここで、ToothFaultGain = 0 はギア歯の故障がない状態 (健全動作) に対応します。故障データのアンサンブルを生成するには、generateSimulationEnsemble を使用して、モデルを -2 ~ 0 の範囲にある異なる ToothFaultGain 値でシミュレートします。この関数は、Simulink.SimulationInput オブジェクトの配列を使用してアンサンブルの各メンバーの Simulink モデルを構成します。各シミュレーションで別個のアンサンブル メンバーがそれぞれのデータ ファイルに生成されます。こうした配列を作成し、setVariable を使用して実行ごとにギア歯の故障のゲイン値を割り当てます。

toothFaultValues  = -2:0.5:0; % 5 ToothFaultGain values 

for ct = numel(toothFaultValues):-1:1
    simin(ct) = Simulink.SimulationInput(mdl);
    simin(ct) = setVariable(simin(ct),'ToothFaultGain',toothFaultValues(ct));
end

この例では、モデルが VibrationTacho の特定の信号値をログに記録するよう既に構成されています (信号ログを使用した信号データの保存 (Simulink)を参照)。generateSimulationEnsemble は、モデルをさらに次のように構成します。

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

  • 信号のログに timetable 形式を使用する。

  • Simulink.SimulationInput オブジェクトを対応するログ データとともに保存ファイル内に格納する。

生成されるデータの場所を指定します。この例では、現在のフォルダー内の Data というフォルダーにデータを保存します。シミュレーションがすべてエラーなしで完了した場合、インジケーター status が 1 (true) になります。

mkdir Data
location = fullfile(pwd,'Data');
[status,E] = generateSimulationEnsemble(simin,location);
[27-Sep-2023 03:28:19] Running simulations...
[27-Sep-2023 03:28:27] Completed 1 of 5 simulation runs
[27-Sep-2023 03:28:30] Completed 2 of 5 simulation runs
[27-Sep-2023 03:28:33] Completed 3 of 5 simulation runs
[27-Sep-2023 03:28:36] Completed 4 of 5 simulation runs
[27-Sep-2023 03:28:40] Completed 5 of 5 simulation runs

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

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

  • logsout — Simulink モデルがログに記録するよう構成されている対象データをすべて含む Dataset オブジェクト。

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

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

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

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]

ensemble.DataVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

これで、アンサンブル データストア内の生成データを ensemble を使用して読み取り、解析することができます。詳細については、simulationEnsembleDatastoreを参照してください。

入力引数

すべて折りたたむ

シミュレーションの構成。Simulink.SimulationInput (Simulink) オブジェクトのベクトルとして指定します。シミュレーションの構成では、生成される各アンサンブル メンバーの次のようなパラメーターを指定します。

  • 実行する Simulink モデル

  • モデル変数の値

  • ブロック パラメーター

  • モデルの初期状態

これにより、たとえば、システムにおける故障の有無と重大度をモデル化するパラメーターを除き、それ以外のシミュレーションの構成がすべて同じ Simulink.SimulationInput オブジェクトのベクトルを作成できます。その後、そのベクトルを使用して、健全と故障の動作状態の範囲を表すシミュレーション データのアンサンブルを生成できます。

シミュレーション データを格納するフォルダーのパス。string または文字ベクトルとして指定します。location を指定しない場合、関数は現在のフォルダー (pwd で返されるパス) を使用します。

関数は、指定されたフォルダー内にシミュレーションごとに 1 つの MAT ファイルを書き込みます。各ファイルには次の変数が含まれます。

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

  • SimulationMetadata — ファイル内のログ データを生成したシミュレーションに関するその他の情報。

  • ログに記録するように Simulink モデルで構成されているすべての信号と状態のデータを含む Dataset オブジェクト。この変数の名前は既定では logsout ですが、モデルで構成可能です。

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

データ ログの詳細については、信号ログを使用した信号データの保存 (Simulink)を参照してください。

例: pwd + "\simResults"

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペア自体は順不同で構いません。

R2021a 以前は、名前と値をそれぞれコンマで区切り、 Name を引用符で囲みます。

例: 'UseParallel',true

シミュレーションを並列実行するかどうか。'UseParallel' と以下で構成されるコンマ区切りのペアとして指定します。

  • false — シミュレーションを並列実行しません。

  • true — 並列プールを使用して複数のシミュレーションを並列実行します (Parallel Computing Toolbox™ が必要)。

MATLAB® コマンド ウィンドウにシミュレーションの進行状況を表示するかどうか。'ShowProgress' と以下で構成されるコンマ区切りのペアとして指定します。

  • true — 個々のシミュレーションの実行が完了するたびにシミュレーションの進行状況の行を表示します。

  • false — シミュレーションの進行状況を表示しません。

出力引数

すべて折りたたむ

シミュレーション エラー ステータス。logical 値として返されます。

  • すべてのシミュレーションがエラーなしで最後まで実行された場合は 1 (true)

  • それ以外の場合は 0 (false)

シミュレーション エラー。次のフィールドをもつ構造体配列として返されます。

  • 'SimulationInput' — エラーを生成したシミュレーション実行の Simulink.SimulationInput

  • 'ErrorDiagnostic' — エラーを含む文字列

拡張機能

バージョン履歴

R2018a で導入