Main Content

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

シミュレーションをプログラムによって実行するには、スクリプトを記述するか、MATLAB® コマンド ウィンドウでコマンドを実行できます。プログラムによるシミュレーションの機能はいくつかのインターフェイスで提供されています。インターフェイスごとに、シミュレーションの動作の構成および実行中のシミュレーションとの対話用に異なる機能が用意されています。

プログラムによるインターフェイス一般的な用途
関数 sim

シミュレーションの構成と実行。

Simulation オブジェクト

シミュレーションの構成と実行、シミュレーション中の変数やパラメーターの値の調整、シミュレーションの実行を制御するスクリプトの記述。

関数 set_param と名前と値の引数 SimulationCommand

MATLAB コマンド ウィンドウと Simulink エディターの両方を使用したシミュレーションの操作。

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

プログラムによるシミュレーションを実行またはスクリプト化する方法の決定

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

シミュレーション中にプログラムによってシミュレーションを操作する場合は、Simulation オブジェクトを使用します。Simulation オブジェクトを使用して、シミュレーションの実行を制御し、シミュレーション中にパラメーターや変数の値を調整できます。シミュレーションで計算された結果と値に基づいてパラメーターや変数の値を変更する MATLAB スクリプトを記述できます。

Simulation オブジェクトを使用して実行するシミュレーションはプログラムによって操作できますが、シミュレーションのステータスが inactive 以外のときは、Simulation オブジェクトに関連付けられたモデルやシミュレーションを Simulink エディターを使用して操作することはできません。関数 set_param を使用してシミュレーション コマンドを実行すると、モデルを MATLAB コマンド プロンプトからプログラムによって操作することも、Simulink エディターを使用して対話的に操作することもできます。シミュレーション コマンドは、Simulink エディター[実行] をクリックして開始したシミュレーション、または start シミュレーション コマンドを実行して開始したシミュレーションでサポートされています。

次の表は、関数 sim を使用する場合と Simulation オブジェクトを使用する場合について、プログラムによるシミュレーションのスクリプト化に使用できる機能をまとめたものです。

アクションまたはオプション関数 simSimulation オブジェクト
モデルを直接変更せずにシミュレーションを構成する

Simulink.SimulationInput オブジェクト、構造体、Simulink.ConfigSet オブジェクト、または名前と値の引数を使用してパラメーターや変数の値を指定し、モデルに保存されている値をオーバーライドできます。

指定したオーバーライド値はそのシミュレーションに適用され、シミュレーションが完了すると元に戻ります。

既存の Simulink.SimulationInput オブジェクトから Simulation オブジェクトを作成するか Simulation オブジェクトでオーバーライド値を指定してパラメーターや変数の値を指定し、モデルに保存されている値をオーバーライドできます。

指定したオーバーライド値はそのシミュレーションに適用され、シミュレーションが完了すると元に戻ります。

シミュレーション中にパラメーターや変数の値を調整するサポートなし。

関数 setVariablesetModelParameter、および setBlockParameter を使用して、シミュレーション中にパラメーターの値を調整します。

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

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

関数 stop または関数 terminate を呼び出します。
シミュレーションを一時停止する

サポートなし。

関数 pause を呼び出します。

関数 step を使用して、一時停止するまでにシミュレーションを進める量を指定します。

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

サポートなし。

シミュレーション中は MATLAB コマンド プロンプトを使用できません。

サポートあり。

関数 step を呼び出してシミュレーションを進める場合を除き、シミュレーションの実行中に MATLAB コマンド プロンプトを使用できます。

Scope ブロックなどの可視化ブロックを使用してシミュレーション結果を表示する

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

ラピッド アクセラレータ シミュレーションではサポートされていません。

サポートなし。
端子の値のラベルサポートなし。サポートなし。
シミュレーションのステップ実行

サポートなし。

シミュレーションを進めるには関数 step を使用します。

ステップを戻すことはサポートされていません。

信号ブレークポイント

サポートなし。

サポートなし。
指定した時間またはその後に一時停止する

サポートなし。

関数 step で名前と値の引数 PauseTime を使用します。
例外を発行せずにシミュレーション出力中のシミュレーション エラーに関する情報を取得する

名前と値の引数 CaptureErrors"on" として指定します。

setModelParameter を使用して、CaptureErorrs パラメーターを "on" として指定します。

高速リスタートサポートあり。サポートあり。
シミュレーション ペーシングサポートあり。サポートあり。
シミュレーション タイムアウト

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

サポートなし。
シミュレーション ステータスをクエリする

サポートなし。

シミュレーションの実行中は MATLAB スレッドがブロックされます。

Simulation オブジェクトの Status プロパティで現在のシミュレーション ステータスが示されます。
matlab (macOS) または matlab (Linux)-nodesktop オプションまたは -nodisplay オプションを使用して開始した MATLAB セッションでシミュレーションを実行するサポートあり。サポートなし。

関数 sim を使用したシミュレーションの実行とスクリプト化

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

out = sim("ModelName");

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

モデル コンフィギュレーション パラメーター値、ブロック パラメーター値、および変数値の値を指定するなどして、シミュレーションを構成する場合は、Simulink.SimulationInput オブジェクトを使用してシミュレーションの構成を指定します。次のコマンドは、SimulationInput オブジェクトを使用するための基本的な構文を示しています。入力引数は、simin という名前の変数に格納された SimulationInput オブジェクトだけです。シミュレーション結果は常に単一の Simulink.SimulationOutput オブジェクトとして返されます。

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 オブジェクトを使用してモデル コンフィギュレーション パラメーター値を指定します。

Simulation オブジェクトを使用したシミュレーションの実行とスクリプト化

Simulation オブジェクトはモデルのシミュレーションを表し、実行中のシミュレーションを制御および操作するためのインターフェイスを提供します。関数 sim を使用して実行するシミュレーションとは異なり、シミュレーションの実行中に MATLAB コマンド プロンプトを使用できます。Simulation オブジェクトを使用すると次のことが可能です。

  • 実行時にアクセス可能なシミュレーション結果に基づいて MATLAB コード内のロジックを使用してシミュレーションを制御および操作するスクリプトを記述する。

  • シミュレーションのメジャー タイム ステップを進める。

  • シミュレーション中にパラメーターや変数の値を調整する。

  • App Designer を使用して、シミュレーションを制御、操作、監視するアプリを作成する。

  • Simulink® Compiler™ を使用して、シミュレーション スクリプトやアプリを展開する。

次の表は、シミュレーションの実行を制御するために使用できる Simulation オブジェクトの関数をまとめたものです。

関数説明詳細
initialize

シミュレーションを初期化します。

初期化が完了するまでは MATLAB コマンド プロンプトを使用できません。

start

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

初期化されていないシミュレーションを開始すると、シミュレーションの開始前に関数 start で初期化されます。初期化が完了するまでは MATLAB コマンド プロンプトを使用できません。初期化が完了した時点でシミュレーションが開始され、MATLAB コマンド プロンプトが使用可能になります。

step

指定した量だけシミュレーションを進めて一時停止します。

シミュレーションをメジャー タイム ステップ 1 回分、またはメジャー タイム ステップの指定回数分進めるか、指定したシミュレーション時間またはそれを経過したところまで、進めることができます。指定した量だけ進むとシミュレーションが一時停止します。

シミュレーションの進行中は MATLAB コマンド プロンプトを使用できません。

pauseアクティブなシミュレーションを一時停止します。

関数 pause は、シミュレーションを一時停止する即時要求を送信します。中断なしで最後まで実行する必要があるプロセスが完了した後にシミュレーションが一時停止します。

シミュレーションの一時停止中は MATLAB コマンド プロンプトを使用できません。

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

シミュレーションの再開中は MATLAB コマンド プロンプトを使用できません。シミュレーションの実行が開始された時点で使用可能になります。

stopアクティブなシミュレーションをシミュレーション終了時間前に停止します。

関数 stop は、シミュレーションを停止する即時要求を送信します。中断なしで最後まで実行する必要があるプロセスが完了した後にシミュレーションが停止します。

シミュレーションはシミュレーション終了時間に達すると自動的に停止します。ただし、関数 step を使用してノーマル モードまたはアクセラレータ モードのシミュレーションを最後のタイム ステップまで進める場合は例外です。この場合、最後のタイム ステップの後にシミュレーションが一時停止します。

terminateシミュレーションを終了します。

高速リスタートを有効にしていないシミュレーションは、停止した時点で終了します。高速リスタート シミュレーションは停止後もコンパイルされたままになるため、後続のシミュレーションを初期化する必要はありません。終了後にシミュレーションを実行するときは初期化が必要です。

シミュレーションで使用する初期状態、外部入力、モデル パラメーター、ブロック パラメーター、および変数の値を指定してシミュレーションを構成できます。指定した値はモデルに保存されている値をシミュレーション中にオーバーライドし、シミュレーションが完了すると元に戻ります。調整可能なパラメーターの値や変数の値をシミュレーション中に変更することもできます。次の表は、シミュレーションを構成するために使用できる Simulation オブジェクトの関数をまとめたものです。

関数説明詳細
setInitialStateシミュレーションの初期状態または初期操作点を指定します。初期状態はシミュレーションとシミュレーションの間にのみ調整可能で、シミュレーション中は調整できません。
setExternalInput最上位の入力端子を使用して読み込む外部入力データを指定します。外部入力データはシミュレーションとシミュレーションの間にのみ調整可能で、シミュレーション中は調整できません。
setModelParameterシミュレーションで使用するモデル コンフィギュレーション パラメーターの値を指定します。ほとんどのコンフィギュレーション パラメーターはシミュレーションとシミュレーションの間にのみ調整可能で、シミュレーション中は調整できません。
setVariableシミュレーションで使用する変数の値を指定します。シミュレーションで使用する初期変数値を構成し、シミュレーション中に変数の値を調整できます。
setBlockParameterシミュレーションで使用するブロック パラメーターの値を指定します。

一部のブロック パラメーターはシミュレーションとシミュレーションの間にのみ調整可能で、シミュレーション中は調整できません。

ブロック パラメーターの値の調整は、展開されたシミュレーションではサポートされません。展開されたシミュレーションでブロック パラメーターの値を調整するには、ブロック パラメーターの値を変数として指定し、代わりに変数の値を調整します。

シミュレーション コマンドの実行によるシミュレーションの操作

関数 set_param を使用してシミュレーション コマンドを実行する方法でシミュレーションを開始することは、Simulink エディター[実行] をクリックするなどの方法でユーザー インターフェイスからシミュレーションを開始することと等価です。Simulink エディターなどのユーザー インターフェイスを使用して開始できる同じアクションが、シミュレーション コマンドでプログラムによって開始されます。シミュレーション コマンドは、MATLAB コマンド ウィンドウと Simulink エディター やその他ユーザー インターフェイスとの間で切り替える必要があるワークフローで使用すると便利です。

シミュレーション コマンドを実行するには、関数 set_param で名前と値の引数 SimulationCommand を指定します。たとえば、次のコマンドは、MyModel という名前のモデルに start シミュレーション コマンドを実行します。

set_param("MyModel",SimulationCommand="start")

start シミュレーション コマンドを実行するとユーザー インターフェイスからシミュレーションを開始した場合と同じアクションが実行されるため、シミュレーション コマンドを実行して、ユーザー インターフェイスから開始したシミュレーションと start シミュレーション コマンドを実行して開始したシミュレーションを制御および操作できます。start シミュレーション コマンドを実行して開始したシミュレーションで提供される機能とサポートは、ユーザー インターフェイスから開始したシミュレーションと同じです。これには以下が含まれます。

  • ユーザー インターフェイスを使用するか関数 set_param を使用してシミュレーション中にパラメーターの値を調整する

  • 端子の値ラベルと Scope ブロックなどの可視化ブロックを使用してブロック線図に信号値とシミュレーション結果を表示する

  • [一時停止][ステップを進める]、および [ステップを戻す] の各ボタンを使用してシミュレーションを一時停止したり前後にステップ実行したりすることでシミュレーションの実行を制御する

  • 信号のブレークポイントなどのデバッグ ツール

シミュレーション コマンドを実行することで発生したエラーや start シミュレーション コマンドを実行して開始したシミュレーション中に発生したエラーは、診断ビューアーにレポートされます。ただし、update シミュレーション コマンドの実行中に発生したエラーは除きます。

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

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")

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

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

ユーザー インターフェイスを使用するかシミュレーション コマンドを実行してシミュレーションを開始した場合は、関数 get_param を使用してシミュレーション ステータスをクエリできます。たとえば、次のコマンドは、MyModel という名前のモデルのシミュレーション ステータスをクエリします。

simstatus = get_param("MyModel","SimulationStatus")

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

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

参考

関数

オブジェクト

関連するトピック