Main Content

プログラムによるシミュレーションの実行

シミュレーションをプログラムによって実行するには、以下のように、スクリプトを記述するか、MATLAB® コマンド ウィンドウでコマンドを実行できます。

  • 関数 sim を使用する。

  • 関数 set_param を使用して、名前と値の引数 SimulationCommand を指定してシミュレーション コマンドを実行する。

上記の各オプションでは、シミュレーションの動作の構成および実行中のシミュレーションとの対話用に異なる機能が用意されています。

関数 sim または関数 set_param を使用してプログラムによって実行されるシミュレーションは、一度に 1 つずつ逐次実行されます。並列シミュレーションまたはバッチ シミュレーションを実行するには、関数 parsim または batchsim を使用します。

プログラムによるシミュレーションを実行する方法の決定

一般的に、関数 sim では、シミュレーション中にモデルと対話しない個別の逐次的なプログラムによるシミュレーションの実行およびスクリプト作成のほとんどの要件がサポートされています。

シミュレーション中にプログラムによってモデルと対話する場合は、関数 set_param を使用してシミュレーション コマンドを実行できます。シミュレーション コマンドは、[実行] をクリックして開始したシミュレーション、または関数 set_param を使用して start シミュレーション コマンドを実行して開始したシミュレーションでサポートされています。シミュレーション コマンドの実行は、MATLAB コマンド ウィンドウと Simulink® エディターの間で切り替える必要があるワークフローで役立つことがあります。

高速リスタートは、シミュレーション コマンドを実行するか、関数 sim を使用して実行したプログラムによるシミュレーションでサポートされています。高速リスタートを有効にする方法に関係なく、高速リスタートではシミュレーションの最後にモデルは初期化されたままになり、[実行] をクリックするか、シミュレーション コマンドを実行するか、関数 sim を呼び出すことで次のシミュレーションを実行できます。

次の表では、関数 sim を使用して実行したシミュレーションと関数 set_param を使用して実行したシミュレーションの差異をまとめます。

アクションまたはオプション関数 simset_param シミュレーション コマンド
シミュレーションのためにモデルを構成する

関数 sim の入力引数を使用して、シミュレーションで使用するモデル コンフィギュレーション パラメーター、ブロック パラメーター、および変数の値を指定します。

指定した値はシミュレーション時に適用され、シミュレーションが完了すると元に戻されます。関数 sim の入力引数を使用してシミュレーションを構成した場合、モデルが変更未保存 (ダーティ) になることはありません。

関数 set_param を使用してプログラムによって、モデル コンフィギュレーション パラメーターおよびブロック パラメーターの値を指定します。

プロパティ インスペクター[コンフィギュレーション パラメーター] ダイアログ ボックス、および [ブロック パラメーター] ダイアログ ボックスなどのツールを使用してシミュレーションを構成することもできます。

このタイプのシミュレーション用にモデルを構成した場合、モデルは変更未保存になります。

シミュレーションを開始する

関数 sim を呼び出します。

set_param(mdl,"SimulationCommand","Start")

Simulink ツールストリップで [実行] をクリックします。

シミュレーションを中止する

MATLAB コマンド ウィンドウで Ctrl+C を押します。

set_param(mdl,"SimulationCommand","Stop")

Simulink ツールストリップで [停止] をクリックします。

シミュレーションを一時停止する

サポートなし。

set_param(mdl,"SimulationCommand","Pause")

Simulink ツールストリップで [一時停止] をクリックします。

シミュレーションを再開する

シミュレーションの一時停止はサポートされていないため、適用不可。

set_param(mdl,"SimulationCommand","Continue")

Simulink ツールストリップで [続行] をクリックします。

MATLAB コマンド ウィンドウでコマンドを実行する

サポートなし。

関数 sim の実行は MATLAB スレッドをブロックします。

サポートあり。

Scope ブロックなどの可視化ブロック

可視化は、ノーマル モードとアクセラレータ モードのシミュレーション時にのみ更新されます。

可視化は、ノーマル、アクセラレータ、およびラピッド アクセラレータのシミュレーション時に更新されます。

端子の値のラベル

サポートなし。

ノーマル モード、アクセラレータ モード、およびラピッド アクセラレータ モードのシミュレーション時にブロック線図で端子の値のラベルに信号値が表示されます。

シミュレーションのステップを進める/戻す

サポートなし。

ノーマル モードとアクセラレータ モードのシミュレーションでサポートされています。

Simulink ツールストリップの [シミュレーション] タブで [ステップを進める] または [ステップを戻す] をクリックします。

信号ブレークポイント

サポートなし。

タイム ステップ内で一時停止するためにシミュレーションのノーマル モードでサポートされています。

タイム ステップ間のみで一時停止するように構成されたシミュレーションのノーマル モードとアクセラレータ モードでサポートされています。

指定した時間またはその後に一時停止する

サポートなし。

ノーマル モードとアクセラレータ モードのシミュレーションでサポートされています。
高速リスタート

高速リスタートを使用してシミュレーションを実行するには、以下のようにします。

  • 最初の入力引数を 1 つ以上の SimulationInput オブジェクトとして指定する場合に名前と値の引数 UseFastRestart"on" として指定します。

    out = sim(simIn,"UseFastRestart","on");
  • モデルの名前を定義する string または文字ベクトルとして最初の入力引数を指定する場合に名前と値の引数 FastRestart"on" として指定します。高速リスタートでは、シミュレーション後にモデルは初期化されたままになります。

    out = sim("MyModel","FastRestart","on");

関数 set_param を使用して高速リスタートを有効にします。

set_param(mdl,"FastRestart","on")

Simulink ツールストリップの [シミュレーション] タブの [シミュレーション] セクションで [高速リスタート] をクリックします。

シミュレーション ペーシング

モデルに対してシミュレーション ペーシングのパラメーターに値を指定することでシミュレーション ペーシングを構成します。

  • EnablePacing — シミュレーション ペーシングを有効または無効にします。

  • PacingRate — シミュレーション時間の実経過時間に対する比率として近似ペーシング レートを指定します。

[シミュレーション ペーシング オプション] ダイアログ ボックスを使用するか、プログラムによってシミュレーション ペーシングのパラメーターの値を指定することで、シミュレーション ペーシングのオプションを構成します。

  • EnablePacing — シミュレーション ペーシングを有効または無効にします。

  • PacingRate — シミュレーション時間の実経過時間に対する比率として近似ペーシング レートを指定します。

シミュレーション タイムアウト

名前と値の引数 Timeout を使用して、関数 sim の実行で許可される最大時間を指定します。

サポートなし。

シミュレーション コマンドを実行するか、[停止] をクリックすることで、いつでもシミュレーションを停止できます。

エラーの処理

シミュレーション出力でエラーを取得するか、MATLAB 例外としてエラーを出すかを指定します。

  • 最初の入力引数を 1 つ以上の SimulationInput オブジェクトとして指定する場合、名前と値の引数 StopOnError を使用します。

  • モデルの名前を定義する string または文字ベクトルとして最初の入力引数を指定する場合、名前と値の引数 CaptureErrors を使用します。

エラーは診断ビューアーにレポートされます。

シミュレーション ステータスをクエリする

サポートなし。

関数 sim の実行は MATLAB スレッドをブロックします。

get_param(mdl,"SimulationStatus")
matlab (macOS) または matlab (Linux)-nodesktop オプションまたは -nodisplay オプションを使用して開始した MATLAB セッションでシミュレーションを実行するサポートあり。サポートなし。

関数 sim を使用したシミュレーションの実行

関数 sim には、シミュレーションをプログラムによって実行および構成するために使用できる複数の構文が用意されています。すべてのモデル コンフィギュレーション パラメーター値、ブロック パラメーター値、変数値などで現在の値を使用してモデルをシミュレートする場合は、最も基本的な構文を使用します。

out = sim("ModelName");

この構文では、[単一のシミュレーション出力] パラメーターが無効になっている場合を除き、すべてのシミュレーション結果が含まれている単一の Simulink.SimulationOutput オブジェクトが返されます。プログラムによって実行するすべてのシミュレーションで一貫したコードを確実に記述できるようにする場合は、[単一のシミュレーション出力] パラメーターを有効にします。

モデル コンフィギュレーション パラメーター値、ブロック パラメーター値、および変数値の値を指定するなどして、シミュレーションを構成する場合は、Simulink.SimulationInput オブジェクトを使用してシミュレーションの構成を指定します。

out = sim(simIn);

次の表では、構成できるオプションおよび各構文を使用する使用例をまとめます。

sim の構文シミュレーションの構成のオプション
out = sim("ModelName");

コンフィギュレーション パラメーター、ブロック パラメーター、および変数の値として現在の値を使用してモデルをシミュレートします。

out = sim(simIn);

以下に対してオーバーライド値を指定した Simulink.SimulationInput オブジェクトを使用してシミュレーションの構成を指定します。

  • モデル コンフィギュレーション パラメーター

  • 変数

  • 外部入力

  • 初期状態

  • ブロック パラメーター

名前と値の引数を使用して、以下を行うかどうかなど、追加のオプションを構成します。

  • 高速リスタートを使用してシミュレーションを実行する。

  • シミュレーション出力でエラーを取得するか、MATLAB 例外を出す。

  • シミュレーション マネージャーを開く。

out = sim("ModelName",Name=Value);

名前と値の引数を使用して、以下のようなシミュレーションのオプションを構成します。

  • モデル コンフィギュレーション パラメーター

  • シミュレーション ペーシング オプション

  • 高速リスタートを使用してシミュレートするかどうか

  • シミュレーション出力でエラーを取得するのか、MATLAB 例外を出すのか

out = sim("ModelName",paramStruct);

各パラメーター名に一致するフィールド名と各パラメーターで使用する値を指定するフィールド値をもつ構造体を使用して、モデル コンフィギュレーション パラメーター値およびシミュレーション オプションを指定します。

たとえば、StopTime パラメーター値を 20 に指定する場合は、名前が StopTime で値が "20" であるフィールドを含む構造体を作成します。

paramStruct.StopTime = "20";
out = sim("ModelName",configSet);

Simulink.ConfigSet オブジェクトを使用してモデル コンフィギュレーション パラメーター値を指定します。

シミュレーション コマンドの実行によるシミュレーションの実行および制御

Simulink エディターなどのユーザー インターフェイスから、または関数 set_param を使用してシミュレーション コマンドを実行することで、シミュレーションを開始した場合、以下を行うことができます。

  • 関数 set_param を使用してシミュレーション コマンドを実行することで、シミュレーションの制御、対話を行う。

  • 関数 get_param を使用してシミュレーション ステータスをクエリする。

シミュレーション中にシミュレーション コマンドを実行した場合、コマンドは即時には実行されません。中断できない現在実行中のプロセスが完了した後にはじめて、コマンドが実行されます。たとえば、ソルバーによる次のタイム ステップの判別中にシミュレーション コマンドを実行した場合、ソルバーによる時間の伝播が完了した後にはじめて、シミュレーション コマンドが実行されます。

Simulink エディターで使用可能なすべてのアクションに、対応するシミュレーション コマンドがあるわけではありません。次の表では、各シミュレーション コマンド、および対応するユーザー インターフェイスのアクションとキーボード ショートカットを示します。

シミュレーション コマンド 説明同等のユーザー インターフェイスのアクションキーボード ショートカット
set_param(mdl,"SimulationCommand","start");

シミュレーションを開始します。

[実行] をクリックします。

Ctrl+T または F5

set_param(mdl,"SimulationCommand","stop");

シミュレーションを停止します。

[停止] をクリックします。

Ctrl + Shift + T

set_param(mdl,"SimulationCommand","pause");

シミュレーションを一時停止します。

[一時停止] をクリックします。

Ctrl+T または F5

set_param(mdl,"SimulationCommand","continue");

一時停止したシミュレーションを再開します。

[続行] をクリックします。

Ctrl+T または F5

set_param(mdl,"SimulationCommand","update");

ブロック線図を更新します。

Simulink ツールストリップの [準備] セクションで [モデルの更新] をクリックします。Ctrl + D
set_param(mdl,"SimulationCommand","writedatalogs");

データ ログ変数をワークスペースに書き込みます。

サポートなし。サポートなし。

次の表では、名前と値の引数 SimulationStatus の各戻り値に対応するシミュレーション ステータスを示します。

SimulationStatus の値説明
stoppedシミュレーションは停止状態。
initializing初期化フェーズを実行中。
running実行フェーズを実行中。
paused実行フェーズで一時停止状態。
compiledモデルがコンパイル済み。
updatingブロック線図を更新中。
terminating終了フェーズを実行中。
externalSimulink Coder™ でシミュレート中。

参考

関数

オブジェクト

関連するトピック