プログラムによるシミュレーションの実行
シミュレーションをプログラムによって実行するには、スクリプトを記述するか、MATLAB® コマンド ウィンドウでコマンドを実行できます。プログラムによるシミュレーションの機能はいくつかのインターフェイスで提供されています。インターフェイスごとに、シミュレーションの動作の構成および実行中のシミュレーションとの対話用に異なる機能が用意されています。
プログラムによるインターフェイス | 一般的な用途 |
---|---|
関数 sim | シミュレーションの構成と実行。 |
Simulation オブジェクト | シミュレーションの構成と実行、シミュレーション中の変数やパラメーターの値の調整、シミュレーションの実行を制御するスクリプトの記述。 |
関数 set_param と名前と値の引数 SimulationCommand | MATLAB コマンド ウィンドウと Simulink エディターの両方を使用したシミュレーションの操作。 |
関数 sim
、Simulation
オブジェクト、または関数 set_param
を使用してプログラムによって実行されるシミュレーションは、一度に 1 つずつ逐次実行されます。並列シミュレーションまたはバッチ シミュレーションを実行するには、関数 parsim
または関数 batchsim
を使用します。
プログラムによるシミュレーションを実行またはスクリプト化する方法の決定
一般的に、関数 sim
では、シミュレーション中にモデルと対話しない個別の逐次的なプログラムによるシミュレーションの実行およびスクリプト作成のほとんどの要件がサポートされています。
シミュレーション中にプログラムによってシミュレーションを操作する場合は、Simulation
オブジェクトを使用します。Simulation
オブジェクトを使用して、シミュレーションの実行を制御し、シミュレーション中にパラメーターや変数の値を調整できます。シミュレーションで計算された結果と値に基づいてパラメーターや変数の値を変更する MATLAB スクリプトを記述できます。
Simulation
オブジェクトを使用して実行するシミュレーションはプログラムによって操作できますが、シミュレーションのステータスが inactive
以外のときは、Simulation
オブジェクトに関連付けられたモデルやシミュレーションを Simulink エディターを使用して操作することはできません。関数 set_param
を使用してシミュレーション コマンドを実行すると、モデルを MATLAB コマンド プロンプトからプログラムによって操作することも、Simulink エディターを使用して対話的に操作することもできます。シミュレーション コマンドは、Simulink エディターで [実行] をクリックして開始したシミュレーション、または start
シミュレーション コマンドを実行して開始したシミュレーションでサポートされています。
次の表は、関数 sim
を使用する場合と Simulation
オブジェクトを使用する場合について、プログラムによるシミュレーションのスクリプト化に使用できる機能をまとめたものです。
アクションまたはオプション | 関数 sim | Simulation オブジェクト |
---|---|---|
モデルを直接変更せずにシミュレーションを構成する |
指定したオーバーライド値はそのシミュレーションに適用され、シミュレーションが完了すると元に戻ります。 | 既存の 指定したオーバーライド値はそのシミュレーションに適用され、シミュレーションが完了すると元に戻ります。 |
シミュレーション中にパラメーターや変数の値を調整する | サポートなし。 | 関数 |
シミュレーションを中止する | MATLAB コマンド ウィンドウで Ctrl+C を押します。 | 関数 stop または関数 terminate を呼び出します。 |
シミュレーションを一時停止する | サポートなし。 | 関数 関数 |
MATLAB コマンド ウィンドウでコマンドを実行する | サポートなし。 シミュレーション中は MATLAB コマンド プロンプトを使用できません。 | サポートあり。 関数 |
Scope ブロックなどの可視化ブロックを使用してシミュレーション結果を表示する | ノーマル モードとアクセラレータ モードのシミュレーションでサポートされています。 ラピッド アクセラレータ シミュレーションではサポートされていません。 | サポートなし。 |
端子の値のラベル | サポートなし。 | サポートなし。 |
シミュレーションのステップ実行 | サポートなし。 | シミュレーションを進めるには関数 ステップを戻すことはサポートされていません。 |
信号ブレークポイント | サポートなし。 | サポートなし。 |
指定した時間またはその後に一時停止する | サポートなし。 | 関数 step で名前と値の引数 PauseTime を使用します。 |
例外を発行せずにシミュレーション出力中のシミュレーション エラーに関する情報を取得する | 名前と値の引数 |
|
高速リスタート | サポートあり。 | サポートあり。 |
シミュレーション ペーシング | サポートあり。 | サポートあり。 |
シミュレーション タイムアウト | 名前と値の引数 | サポートなし。 |
シミュレーション ステータスをクエリする | サポートなし。 シミュレーションの実行中は 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); | 以下に対してオーバーライド値を指定した
名前と値の引数を使用して、以下を行うかどうかなど、追加のオプションを構成します。
|
out = sim("ModelName",Name=Value); | 名前と値の引数を使用して、以下のようなシミュレーションのオプションを構成します。
|
out = sim("ModelName",paramstruct); | 各パラメーター名に一致するフィールド名と各パラメーターで使用する値を指定するフィールド値をもつ構造体を使用して、モデル コンフィギュレーション パラメーター値およびシミュレーション オプションを指定します。 たとえば、 paramStruct.StopTime = "20"; |
out = sim("ModelName",configset); |
|
Simulation
オブジェクトを使用したシミュレーションの実行とスクリプト化
Simulation
オブジェクトはモデルのシミュレーションを表し、実行中のシミュレーションを制御および操作するためのインターフェイスを提供します。関数 sim
を使用して実行するシミュレーションとは異なり、シミュレーションの実行中に MATLAB コマンド プロンプトを使用できます。Simulation
オブジェクトを使用すると次のことが可能です。
実行時にアクセス可能なシミュレーション結果に基づいて MATLAB コード内のロジックを使用してシミュレーションを制御および操作するスクリプトを記述する。
シミュレーションのメジャー タイム ステップを進める。
シミュレーション中にパラメーターや変数の値を調整する。
App Designer を使用して、シミュレーションを制御、操作、監視するアプリを作成する。
Simulink® Compiler™ を使用して、シミュレーション スクリプトやアプリを展開する。
次の表は、シミュレーションの実行を制御するために使用できる Simulation
オブジェクトの関数をまとめたものです。
関数 | 説明 | 詳細 |
---|---|---|
initialize | シミュレーションを初期化します。 | 初期化が完了するまでは MATLAB コマンド プロンプトを使用できません。 |
start | シミュレーションを開始します。 | 初期化されていないシミュレーションを開始すると、シミュレーションの開始前に関数 |
step | 指定した量だけシミュレーションを進めて一時停止します。 | シミュレーションをメジャー タイム ステップ 1 回分、またはメジャー タイム ステップの指定回数分進めるか、指定したシミュレーション時間またはそれを経過したところまで、進めることができます。指定した量だけ進むとシミュレーションが一時停止します。 シミュレーションの進行中は MATLAB コマンド プロンプトを使用できません。 |
pause | アクティブなシミュレーションを一時停止します。 | 関数 シミュレーションの一時停止中は MATLAB コマンド プロンプトを使用できません。 |
resume | 一時停止したシミュレーションを続行します。 | シミュレーションの再開中は MATLAB コマンド プロンプトを使用できません。シミュレーションの実行が開始された時点で使用可能になります。 |
stop | アクティブなシミュレーションをシミュレーション終了時間前に停止します。 | 関数 シミュレーションはシミュレーション終了時間に達すると自動的に停止します。ただし、関数 |
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 | 終了フェーズを実行中。 |
external | Simulink Coder™ でシミュレート中。 |