Main Content

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

指定のメソッドでシミュレーションを一時停止するブレークポイントを設定

関数 break を使用して設定したブレークポイントをクリアするには、関数 clear を使用します。

bafter

指定のメソッドの後にシミュレーションを一時停止するブレークポイントを設定

関数 bafter を使用して設定したブレークポイントをクリアするには、関数 clear を使用します。

tbreak [t]

指定のシミュレーション タイム ステップでシミュレーションを一時停止するブレークポイントを設定またはクリア

ebreak

回復可能なソルバー エラーが発生したときにシミュレーションを一時停止するブレークポイントを設定またはクリア

nanbreak

NaN または無限大 (Inf) の値の出現時にシミュレーションを一時停止するブレークポイントを設定またはクリア

xbreak

可変ステップ シミュレーションでソルバーによってステップ サイズが制限される場合にシミュレーションを一時停止するブレークポイントを設定またはクリア

zcbreak

サンプリングされていないゼロクロッシング イベントが発生したときにシミュレーションを一時停止するブレークポイントを設定またはクリア

シミュレーションに関する情報の表示

シミュレーション デバッグ セッションで、いくつかの関数を使用してシミュレーションに関する実行時の情報を表示できます。

次の表は、シミュレーション中にモデル内のブロックに関する情報 (ブロックの出力値と入力値を含む) を表示するために使用できるオプションをまとめたものです。これらの各関数を呼び出したときに表示される情報のレベルはソフトウェアの構成に依存します。表示する情報のレベルを指定するには、関数 probe を使用します。

関数名説明
probe

コマンドを発行したときに指定のブロックのデータを表示

disp

シミュレーションが一時停止したときに指定のブロックのデータを表示

trace

ブロックが実行されるたびに指定のブロックのデータを表示

次の表は、シミュレーション中にモデルに関する実行時の情報を表示するために使用できるその他のオプションをまとめたものです。

関数名説明
atraceシミュレーション デバッグ セッションで代数ループを解くたびに情報を表示
statesシステムの状態についての現在の値を表示
straceシミュレーション デバッグ セッションでソルバー情報を表示

モデルに関する情報の表示

次の表は、モデルに関する情報を表示するために使用できる関数をまとめたものです。

関数名説明
slist

モデルの並べ替えられたリストを表示する。

並べ替えられたリストの情報には、モデル内の各ブロックのブロック ID が含まれます。

ashowシミュレーション デバッグ セッションでモデル内の代数ループを強調表示する。
bshow指定のブロック ID に対応するブロックをブロック線図内で強調表示する。
systemsモデル内またはモデルの階層構造内の非バーチャル サブシステムのリストを表示する。
zclistゼロクロッシングを検出するブロックのリストを表示する。
status現在のシミュレーション デバッグ セッションで有効になっているデバッグ オプションのリストを表示する。

参考