Simulink のデバッグ用のプログラム インターフェイス
Simulink® のデバッグ用のプログラム インターフェイスを使用すると、モデルのシミュレーションを一度に 1 メソッドずつ実行できます。Simulink のブロックは、各タイム ステップで特定の時間にソルバーによって呼び出される一連のメソッドとして実装されます。ブレークポイントを使用し、シミュレーションを一時停止するタイミングを制御して実行結果を調べることで、モデルの動作を特定のブロック、パラメーター、または接続までトレースできます。ブレークポイントは、モデル全体の特定の条件 (ゼロクロッシングなど) に対して設定することも、ブロックのメソッドや信号に対して設定することもできます。
メモ
Simulink のデバッグ用のプログラム インターフェイスを使用してシミュレーションをデバッグするには、関数 sldebug
を使用するか関数 sim
で名前と値の引数 debug
を使用してシミュレーションを開始する必要があります。
プログラム インターフェイスの機能の多くについて、Simulink エディターにも同じ機能が用意されています。
Simulink デバッグ関数の使用
シミュレーションをプログラムでデバッグする場合は、関数 sldebug
を使用してシミュレーションを開始します。関数 sldebug
を呼び出すと、MATLAB® コマンド プロンプトが sldebug
コマンド プロンプトになります。>>
の代わりに (sldebug @0): >>
と表示されます。デバッグ セッションを制御するには、MATLAB コマンド ウィンドウの sldebug
コマンド プロンプトでデバッグ コマンドを入力します。
使いやすいように、Simulink のデバッグ用のプログラム インターフェイスはデバッグ関数の省略形を受け入れます。たとえば、関数 step
を呼び出す場合、コマンド step
を入力する代わりにコマンド s
を入力できます。
MATLAB 関数の使用
sldebug
コマンド プロンプトでは任意の MATLAB 式を入力できます。たとえば、ブレークポイントで一時停止し、シミュレーションでモデルの時間と出力のログを tout
および yout
として記録しているとします。sldebug
コマンド プロンプトで次のコマンドを入力してプロットを作成できます。
plot(tout,yout)
MATLAB 関数の中には、Simulink のデバッグ用のプログラム インターフェイスの関数と同じ名前の関数や似た名前の関数があります。変数の内容を表示したり、Simulink デバッグ関数と部分的または完全に名前が一致する関数を呼び出したりするときは、関数 eval
を使用します。たとえば、ワークスペースに変数 s
があるとします。この変数の内容を表示するには、関数 step
を呼び出す代わりに次のコマンドを使用します。
eval('s')
ブロック ID とメソッド ID について
デバッグ関数とメッセージの中には、数値の "ブロック ID" や "メソッド ID" を使用してモデル内の特定のブロックやメソッドを参照するものがあります。ブロック ID とメソッド ID は、シミュレーションのそれぞれのブロックとメソッドに実行時に割り当てられる数値です。
ブロック ID は、シミュレーションのコンパイル段階で、モデルの並べ替え順リストと実行リストを生成するときに割り当てられます。ブロック ID の形式は (t)s:b
で、t
はブロックが実行されるタスクを識別する整数、s
はブロックを含むシステムを識別する整数、b
はそのシステムの実行リストでのブロックの位置を示す整数です。たとえば、ブロック ID (0)0:1
は、モデルのルート システムにある最初のブロックを参照します。関数 slist
を使用して、モデル内の各非バーチャル ブロックのブロック ID を確認できます。
ブレークポイントの設定と管理
シミュレーション デバッグ セッションでは、"ブレークポイント"、つまりシステムを解析するためにシミュレーションを一時停止する特定のポイントを設定できます。関数 continue
を使用して、特定のブレークポイントのヒットから次のヒットまでシミュレーションを実行できます。
ブレークポイントは、調査が必要な問題や動作がモデルの特定のポイントや特定の条件で発生することがわかっている場合に役立ちます。適切なブレークポイントを定義し、関数 continue
を使用してシミュレーションを実行することで、調査が必要なシミュレーションのポイントまでシミュレーションを中断せずに実行できます。
メモ
シミュレーションが MATLAB S-Function のブレークポイントで一時停止した場合に、MATLAB を閉じるには、まずシミュレーション デバッグ セッションを終了しなければなりません。
次の表は、プログラムでブレークポイントを設定するために使用できる関数をまとめたものです。
関数 | ブレークポイントの動作 |
---|---|
break | 指定のメソッドでシミュレーションを一時停止するブレークポイントを設定 関数 |
bafter | 指定のメソッドの後にシミュレーションを一時停止するブレークポイントを設定 関数 |
tbreak [t] | 指定のシミュレーション タイム ステップでシミュレーションを一時停止するブレークポイントを設定またはクリア |
ebreak | 回復可能なソルバー エラーが発生したときにシミュレーションを一時停止するブレークポイントを設定またはクリア |
nanbreak |
|
xbreak | 可変ステップ シミュレーションでソルバーによってステップ サイズが制限される場合にシミュレーションを一時停止するブレークポイントを設定またはクリア |
zcbreak | サンプリングされていないゼロクロッシング イベントが発生したときにシミュレーションを一時停止するブレークポイントを設定またはクリア |
シミュレーションに関する情報の表示
シミュレーション デバッグ セッションで、いくつかの関数を使用してシミュレーションに関する実行時の情報を表示できます。
次の表は、シミュレーション中にモデル内のブロックに関する情報 (ブロックの出力値と入力値を含む) を表示するために使用できるオプションをまとめたものです。これらの各関数を呼び出したときに表示される情報のレベルはソフトウェアの構成に依存します。表示する情報のレベルを指定するには、関数 probe
を使用します。
関数名 | 説明 |
---|---|
probe | コマンドを発行したときに指定のブロックのデータを表示 |
disp | シミュレーションが一時停止したときに指定のブロックのデータを表示 |
trace | ブロックが実行されるたびに指定のブロックのデータを表示 |
次の表は、シミュレーション中にモデルに関する実行時の情報を表示するために使用できるその他のオプションをまとめたものです。
モデルに関する情報の表示
次の表は、モデルに関する情報を表示するために使用できる関数をまとめたものです。
Simulink エディターからのデバッグ中におけるシミュレーション デバッグ コマンドの使用
Simulink エディターを使用してシミュレーション デバッグ セッションを開始した場合、シミュレーションがタイム ステップ内で一時停止している間、disp
や probe
などのシミュレーション デバッグ コマンドの一部を発行できます。Simulink エディターからシミュレーション デバッグ セッションを開始するには、モデルに 1 つ以上のブレークポイントを追加します。次に、[ブレークポイント リスト] で [タイム ステップ内で一時停止] が選択されていることを確認します。
Simulink エディターから開始されたデバッグ シミュレーションがタイム ステップ内で一時停止すると、MATLAB コマンド ウィンドウの MATLAB コマンド プロンプト (>>
) が sldebug
プロンプトに置き換えられます。 (R2024a 以降)
次の表では、Simulink エディターから開始されたシミュレーション デバッグ セッションで、タイム ステップ内で一時停止している間に使用できるプログラムによるシミュレーション デバッグ コマンドについて説明しています。
カテゴリ | 関数名 | 説明 |
---|---|---|
モデルに関する情報の表示 | probe | 指定したブロックの入力、出力、および状態データを表示 |
elist | 実行順序を表示 | |
slist | モデル内のブロックの並べ替えられたリストを表示 | |
stimes | モデル内のサンプル時間に関する情報を表示 | |
systems | モデルまたはモデルの階層構造内の非バーチャル サブシステムのリストを表示 | |
states | 状態値を表示 | |
zclist | ゼロクロッシングを検出するブロックのリストを表示 | |
ブロック線図でのブロックまたは代数ループの強調表示 | bshow | モデルで指定したブロックを強調表示 |
ashow | 代数ループを特定して強調表示 | |
モデルレベルのブレークポイントの追加または削除 | nanbreak |
|
zcbreak | サンプリングされていないゼロクロッシング イベントが発生したときに一時停止するブレークポイントを設定またはクリア | |
トレース ポイントの追加と削除 | trace | 指定したブロックが実行されるたびにブロックに関する情報を表示 |
atrace | 代数ループを解くたびに情報を表示 | |
etrace | メソッドに出入りする際に情報を表示 | |
strace | ソルバーの情報を表示 | |
untrace | トレース ポイントを削除 | |
シミュレーション デバッグ セッションに関する情報の取得、ヘルプへのアクセス、またはシミュレーション デバッグ セッションの終了 | status | 現在のシミュレーション デバッグ セッションで使用しているオプションを表示 |
where | シミュレーション ループ内の現在の位置を表示 | |
help | Simulink でのデバッグ用のプログラム インターフェイスについてヘルプを表示 | |
stop | シミュレーション デバッグ セッションを停止 |