このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ブロックのコールバック
ブロックが読み込まれるとき、開かれるとき、編集されるときなどにブロック イベントの MATLAB® コードを実行するブロック コールバックを指定できます。
[モデル化] タブの [設計] で、[プロパティ インスペクター] をクリックします。
コールバックを指定するブロックを選択します。
プロパティ インスペクターの [プロパティ] タブの [コールバック] セクションで、定義するコールバックを選択します。
ボックス内に、コールバックで実行する関数を入力します。
ブロック コールバックをプログラムで指定するには、set_param
関数を使用して、MATLAB コードをブロック コールバック パラメーターに割り当てます。
モデリング アクションが起こる前か起こった後にブロックのコールバックが実行される場合、そのコールバックはモデリング アクションの直前または直後に発生します。
LoadFcn
、ContinueFcn
、InitFcn
、ModelCloseFcn
、PauseFcn
、PostSaveFcn
、PreSaveFcn
、StartFcn
、および StopFcn
の各コールバックは、アクティベーションのタイミングが [ブロック線図の更新]
である Variant Subsystem ブロックの非アクティブなバリアント選択肢およびコメント化されたブロックに対しては実行されません。この抑制により、計算のオーバーヘッドが軽減され、現在のモデルの反復に影響しないブロックからの不要な診断メッセージが回避されます。たとえば、find_system
関数で @Simulink.match.allVariants
マッチ フィルターを使用してアクティブと非アクティブのバリアント選択肢を特定する場合、Simulink® は非アクティブなバリアント選択肢をリストしますが、LoadFcn
コールバックを実行する対象はアクティブなバリアント選択肢のみになります。非アクティブなバリアント選択肢はモデルの実行に影響しないため、それらに対しては LoadFcn
コールバックを実行しません。ただし、コメント化されているか非アクティブな Model ブロックや Subsystem Reference ブロック内にあるモデルまたはサブシステム ファイル内のブロックに対しては、これらのコールバックは抑制されません。また、マスクの初期化およびマスクパラメータのコールバックも抑制されません。該当するコールバックの一覧については、Author Mask Initialization and Callbacksおよびマスク パラメーターを参照してください。
ブロックを開くコールバック パラメーター
ブロックのコールバック パラメーター | コールバックが実行されるタイミング |
---|---|
| ブロックを開くとき。 一般に、このパラメーターは Subsystem ブロックで使用します。 コールバックが実行されるのは、ブロックをダブルクリックしたときか、ブロックを引数として
|
| ブロック線図が読み込まれた後。
Subsystem ブロックの場合は、 |
ブロックを編集するコールバック パラメーター
ブロックのコールバック パラメーター | コールバックが実行されるタイミング |
---|---|
| ブロックが移動またはサイズが変更されたとき。 |
| ブロックの名前やパスが変更された後。 Subsystem ブロックのパスが変更された場合、Subsystem ブロックは子孫のブロックの |
PreCopyFcn | ブロックがコピーされる前。
|
| ブロックがコピーされた後。このコールバックは、
|
| ブロックがシステム クリップボードにコピーまたは切り取られたとき。 |
PreDeleteFcn | ブロックがグラフィカルに削除される前。たとえば、ブロックをグラフィカルに削除するときやブロックに対して
|
| ブロックがグラフィカルに削除された後。たとえば、ブロックをグラフィカルに削除するとき、ブロックに対して
Subsystem ブロックの場合は、 |
| ブロックがメモリから破棄されたとき。たとえば、ブロックまたはブロックを含むサブシステムに対して ブロックがまだグラフィカルに削除されていない場合は、 |
| ブロックの削除が元に戻されたとき。 |
ブロックのコンパイルおよびシミュレーションのコールバック パラメーター
ブロックのコールバック パラメーター | コールバックが実行されるタイミング |
---|---|
| ブロック線図がコンパイルされる前とブロック パラメーターが評価される前。 |
| ブロック線図がコンパイルされた後とシミュレーションを開始する前。 S-Function ブロックの場合、 |
| シミュレーションを継続する前。 |
| シミュレーションの一時停止時。 |
| シミュレーションの終了時。 S-Function ブロックの場合、 |
ブロックを保存するまたは閉じるコールバック パラメーター
ブロックのコールバック パラメーター | コールバックが実行されるタイミング |
---|---|
| ブロック線図を閉じる前。 Subsystem ブロックの場合は、 |
| ブロック線図を読み込んだ後。 Subsystem ブロックの場合は、 |
| ブロックを
たとえば、開いている MATLAB ウィンドウをすべて閉じるには、以下のようなコマンドを使用します。 set_param('my_model','CloseFcn','close all') |
| ブロック線図を閉じる前。 モデルを閉じるときに、 Subsystem ブロックの場合は、 |
Subsystem ブロック コールバック パラメーター
他のブロックのコールバック パラメーターを Subsystem ブロックで使用できますが、次の表のコールバック パラメーターは Subsystem ブロックに固有のものです。
メモ
マスク サブシステムに対するコールバックでマスク サブシステムのパラメーターを直接参照することはできません。ブロック マスクの作成を参照してください。ソフトウェアでは MATLAB ベース ワークスペースにあるブロック コールバックが評価されますが、一方マスク パラメーターはマスク サブシステムのプライベート ワークスペースに存在します。ブロック コールバックでは get_param
関数を使用してマスク パラメーターの値を取得できます。たとえば、ここで、gain
は現在のブロックにおけるマスク パラメーターの名前です。
get_param(gcb,'gain')
ブロックのコールバック パラメーター | コールバックが実行されるタイミング |
---|---|
| ブロックまたはラインがサブシステムで削除された後。 ブロックに |
| エラーがサブシステム内で発生したとき。
newException = errorHandler(subsys,...
errorType,originalException) ここで、
元の例外を発行する場合は、サブシステムやエラー タイプの指定は不要です。 次のコマンドでは、サブシステム set_param(subsys,'ErrorFcn','errorHandler') set_param 関数の呼び出しには、コールバック コードの入力引数は含めないでください。コールバックによって返されるエラー メッセージが表示されます。 |
| ブロックを含むサブシステムを閉じる前または以下を使用してブロックを新しいサブシステムの一部にする際
モデルを閉じるとき、ルート モデル レベルにあるブロックの |