このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Simulink エディターを使用したシミュレーションのステップ実行
この例では、シミュレーションをステップ実行する方法を示します。Simulink エディターのコントロールを使用して、シミュレーションを 1 つ以上のタイム ステップずつ進めたり、シミュレーションをブロックごとに進めてタイム ステップをステップ実行したりできます。
この例では、シミュレーションのステップ実行に関連する機能とオプションだけを説明しています。調べるポイントまでシミュレーションをステップ実行して一時停止するには、信号のブレークポイントを使用します。詳細については、信号のブレークポイントを使用したシミュレーションのデバッグを参照してください。
スクリプト化されたシミュレーションで 1 つ以上のタイム ステップずつステップ実行するには、Simulation
オブジェクトを使用します。
モデルを開いてデバッグ ツールを設定
モデル vdp
を開きます。このモデルはファン デル ポールの方程式を実装します。モデルの詳細については、ファン デル ポール振動子を参照してください。
openExample("simulink_general/VanDerPolOscillatorExample",... supportingFile="vdp")
シミュレーションを開始する前に、関連するデバッグ ツールを設定します。
ブロックごとにタイム ステップをステップ実行するには、モデルでシミュレーション モードが
[ノーマル]
に設定されていて、下位レベルのデバッグが有効になっていることを確認します。Simulink® ツールストリップで以下を行います。
[シミュレーション] タブまたは [デバッグ] タブの [シミュレーション] セクションで、シミュレーション モード リストの選択が
[ノーマル]
になっていることを確認します。[デバッグ] タブの [ブレークポイント] セクションで、[ブレークポイント リスト] をクリックします。ブレークポイント リストで [タイム ステップ内で一時停止] が選択されていることを確認します。
反復的なデバッグ シミュレーションの時間を短縮するには、高速リスタートを有効にします。
Simulink ツールストリップの [シミュレーション] タブで [高速リスタート] をクリックします。
シミュレーションのステップ実行中にブロック線図に信号値を表示するには、端子の値ラベルを追加します。
キャンバスの左上で空の領域をクリックし、ドラッグしてブロック線図内のすべての項目を選択します。次に、[デバッグ] タブの [ツール] セクションの [端子の値] ボタン グループで [選択した信号の端子の値のラベルを表示します]
をクリックします。端子の値ラベルを追加した後、端子の値ラベルに新しい値を提供するポイントにシミュレーションが進むまでは、各信号に「
no data yet
」と表示されます。ブロックごとのステップ実行中に実行順序を表示するには、実行順序ビューアーを開きます。
ブレークポイント リストで [実行順序ビューアーを開く]
をクリックします。
ヒント
MATLAB Function ブロックや Stateflow® チャートへのステップインを有効にするには、デバッグ シミュレーションを開始する前に [シミュレーション中のブレークポイント設定を許可] を選択します。
シミュレーションのタイム ステップを進める
モデル vdp
のシミュレーションを開始するには、Simulink ツールストリップの [シミュレーション] タブで [ステップを進める] をクリックします。シミュレーションが開始され、シミュレーションの最初のタイム ステップの値を計算した後に一時停止します。これは、シミュレーション開始時間に対応します。
シミュレーション ステータスとシミュレーション時間の監視には、Simulink エディターの下部のステータス バーを使用します。シミュレーションが一時停止している間、シミュレーション ステータスが進行状況バーで示されます。最後に出力値を計算したタイム ステップのシミュレーション時間がステータス バーに表示されます。シミュレーション時間のアスタリスクは、シミュレーションの内部状態のシミュレーション時間がステータス バーに表示された時間よりも進んでいることを示します。
既定では、[ステップを進める] をクリックするたびに、シミュレーションが 1 タイム ステップずつ進みます。ステータス バーの時間が更新され、端子の値ラベルも更新されて新しい信号値が表示されます。
[ステップを進める] をクリックするたびに複数のタイム ステップずつシミュレーションを進めるには、シミュレーション ステップ オプションを構成します。[シミュレーション ステップ オプション] ダイアログ ボックスを開くには、[ステップを戻す] ボタンの矢印をクリックし、[シミュレーション ステップの設定] を選択します。[シミュレーション ステップ オプション] ダイアログ ボックスで、[戻る/進むステップ数] を 5
と指定します。次に、[OK] をクリックします。
ここで、[ステップを進める] をクリックすると、シミュレーションが 5 タイム ステップ分進みます。ステータス バーで、全体的なシミュレーションの進行状況、およびステップを進めるときの時間変化のインクリメントが大きくなったことを確認できます。
Scope ブロックをダブルクリックします。プロットが更新され、信号 x1
と x2
のシミュレーションの進行に応じたデータが表示されます。[ステップを進める] をクリックすると Scope ブロックが更新され、さらに 5 タイム ステップ分のデータが表示されます。
ブロックごとにタイム ステップをステップ実行する
シミュレーションでモデルの信号値がどのように計算されるかを解析するために、ブロックごとにタイム ステップをステップ実行できます。ブロックごとにステップ実行すると、シミュレーションの初期化の段階で決定される実行順序に従って一度に 1 ブロックずつシミュレーションが進みます。実行順序がどのように決定されるかの詳細については、実行順序の制御と表示を参照してください。
シミュレーションがどこで一時停止しているかを実行順序とブロック線図の両方で追跡できるように、ブロックごとにステップ実行するときは実行順序ビューアーを使用します。モデル vdp
の実行順序を表示するには、実行順序ビューアーで [タスク 0] を選択します。実行順序ビューアーに実行順序がリストとして表示され、[タスク 0] で実行されるブロックにブロック線図で実行順序の注釈が付けられます。実行順序 ビューアーのブロックのリストには、ブロック線図には表示されない、ソフトウェアによって追加される非表示のブロックも含まれます。
シミュレーションのブロックごとのステップ実行を開始するには、Simulink ツールストリップの [デバッグ] タブで [ステップ オーバー] をクリックします。タスク 0 の実行順序の最初のブロックを実行する直前でシミュレーションが一時停止します。x1
という名前の Integrator ブロックが緑で強調表示され、シミュレーションが一時停止したブロック線図内の位置が示されます。実行順序ビューアーでは、タスク 0 の実行リストの対応する行が強調表示され、シミュレーションが一時停止した位置が示されます。
ステータス バーの左のステータスを示す文字列に x1
という名前のブロックのパスが表示され、シミュレーションが一時停止した位置が示されます。
x1
という名前のブロックを実行するには、[ステップ オーバー] をもう一度クリックします。シミュレーションが進み、実行順序の次のブロックを実行する直前で一時停止します。緑の強調表示が Out1
という名前の Outport ブロックに移ります。実行順序ビューアーで Out1
という名前のブロックの行が強調表示されます。x1
という信号の端子の値ラベルが更新され、現在のタイム ステップで計算された新しい値が表示されます。
[ステップ オーバー] をクリックしてタイム ステップのステップ実行を続けます。ステップ実行すると、各ブロックの出力値がどのように変わっていくかがわかります。また、各ブロックでステップの出力値の計算に使用される入力値も確認できます。
Scope ブロックの実行後、非表示のブロックでシミュレーションが一時停止します。"非表示のブロック" は、特定のモデル化の問題を自動的に解決する、シミュレーション データをログ記録するなど、いくつかの理由でソフトウェアによって追加されます。非表示のブロックはブロック線図に表示されないため、ブロック線図では、シミュレーションが一時停止した位置を示す緑の強調表示がいずれのブロックにも表示されません。実行順序ビューアーで非表示のブロックの行が強調表示され、ステータスを示す文字列に非表示のブロックでシミュレーションが一時停止していることが示されます。
引き続き [ステップ オーバー] をクリックして、シミュレーションが Sum ブロックで一時停止するまでブロックごとにシミュレーションを進めます。[ステップ オーバー] をクリックして Sum ブロックを実行すると、シミュレーションが次のタイム ステップに進み、実行順序の最初のブロックである x1
という名前のブロックを実行する直前で一時停止します。
シミュレーションの現在のタイム ステップを進め、次のタイム ステップの評価が始まる前で一時停止するには、[ステップを進める] をクリックします。
メモ
タイム ステップ内で一時停止しているときに、sldebug
プログラム インターフェイスからいくつかの関数を使用して、シミュレーションに関する追加情報を取得できます。たとえば、関数 probe
を使用すると、指定したブロックに関する情報を確認できます。sldebug
プログラム インターフェイスの関数で表示される値は、端子の値ラベルに表示される値とは異なることがあります。sldebug
プログラム インターフェイスの関数では、マイナー タイム ステップとメジャー タイム ステップの両方の計算値が表示されます。端子の値ラベルには、メジャー タイム ステップの値のみが表示されます。詳細については、Simulink のデバッグ用のプログラム インターフェイスを参照してください。
タイム ステップを戻す
シミュレーションはタイム ステップまたはブロックごとに進めるだけでなく、1 つ以上のタイム ステップずつ戻すこともできます。シミュレーションのステップを戻す機能をサポートするために、シミュレーションを進めているときにモデルの操作点のスナップショットがキャプチャされます。これらのスナップショットのキャプチャにはメモリが必要であり、シミュレーションのパフォーマンスに影響することがあるため、シミュレーションのステップを戻す機能は既定では無効になっています。詳細については、シミュレーションのステップ実行の仕組みを参照してください。
シミュレーションのステップを戻す機能を有効にするには、次のようにします。
[シミュレーション ステップ オプション] ダイアログ ボックスを開きます。
Simulink ツールストリップの [シミュレーション] タブまたは [デバッグ] タブで、[ステップを戻す] ボタンの矢印をクリックし、[シミュレーション ステップの設定] を選択します。
[シミュレーション ステップ オプション] ダイアログ ボックスで、[ステップを戻す機能を有効にする] を選択します。
[OK] をクリックします。
シミュレーションの開始時点でステップを戻す機能を有効にしていなかったため、シミュレーションのこれまでのタイム ステップのスナップショットはありません。ステップを戻すには、その前にステップを進める必要があります。ステップを進めた後も、シミュレーションでステップを戻す機能を有効にしたタイム ステップより前までシミュレーションのステップを戻すことはできません。
[ステップを進める] を 2 回クリックします。その後、[ステップを戻す] をクリックします。ステータス バーのシミュレーション時間が更新され、ステップを戻した時間が反映されます。端子の値ラベルも更新され、ステップを戻した時間における値が表示されます。
[ステップを戻す] を 2 回クリックした時点で、このシミュレーションのステップをそれ以上戻すことはできなくなるため、[ステップを戻す] ボタンが無効になります。
シミュレーションの完了または停止
シミュレーションのステップ実行が完了したら、最後までシミュレーションを続行するか、現在のタイム ステップでシミュレーションを停止できます。
シミュレーション終了時間までシミュレーションを実行するには、Simulink ツールストリップの [シミュレーション] タブまたは [デバッグ] タブで [続行] をクリックします。
現在のタイム ステップでシミュレーションを停止するには、Simulink ツールストリップの [シミュレーション] タブまたは [デバッグ] タブで [停止] をクリックします。