Using Simulink    

コールバックルーチンの使用法

ブロック線図またはブロックを、特定の方法で動作させた場合に実行されるMATLAB表現を定義することができます。コールバックルーチン と呼ばれるこれらの表現は、ブロックまたはモデルパラメータに関連付けられます。たとえば、ブロックの OpenFcn パラメータに関連付けられたコールバックは、そのブロック名をダブルクリックするかパスを変更したときに実行されます。

コールバックルーチンを定義し、それらをパラメータに関連付けるためには、set_param コマンドを使用します (set_paramをご参照ください)。

たとえば、つぎのコマンドは、ユーザが mymodel のTestブロックをダブルクリックすると、変数 testvar を評価します。

多くのモデルコールバックと関連したルーチンに対して、clutch システム(clutch.mdl)を調べてみることができます。

つぎの表は、コールバックルーチンを定義することができるパラメータの一覧を示し、それらのコールバックルーチンがいつ実行されるかを示します。動作が起こる前か後に実行されるルーチンは、それぞれ、動作の直前か直後に発生します。

表 4-6: モデルコールバックパラメータ 
パラメータ
実行時
CloseFcn
ブロック線図を閉じる前
PostLoadFcn
モデルをロードした後。このパラメータに対するコールバックルーチンの定義は、モデルが既にロード済みであることを必要とするインタフェースを生成するのに有効です。
InitFcn
モデルシミュレーションの開始時に呼び出し
PostSaveFcn
モデルを保存した後
PreLoadFcn
モデルをロードする前。このパラメータに対するコールバックルーチンの定義は、モデルが使用する変数をロードするのに有効です。
PreSaveFcn
モデルを保存する前
StartFcn
シミュレーションを開始する前
StopFcn
シミュレーションを停止した後。出力は、StopFcn 実行前にワークスペース変数やファイルに書き込まれます。

表 4-7: ブロックコールバックパラメータ 
パラメータ
実行時
CloseFcn
close_system コマンドを使用してブロックを閉じるとき
CopyFcn
ブロックをコピーした後。コールバックは、Subsystemブロックに対して再帰的です(つまり、CopyFcn パラメータが定義されているブロックを含むSubsystemブロックをコピーすると、そのルーチンも実行されます)。ルーチンは、add_block コマンドを用いてブロックをコピーする場合も実行されます。
DeleteFcn
ブロックを削除する前。このコールバックは、Subsystemブロックに対して再帰的です。
DestroyFcn
ブロックが削除される時
InitFcn
ブロック線図がコンパイルされる前とブロックパラメータが評価される前。.
LoadFcn
ブロック線図がロードされた後。このコールバックは、Subsystemブロックに対して再帰的です。
ModelCloseFcn
ブロック線図を閉じる前。このコールバックはSubsystemブロックに対して再帰的です。
MoveFcn
ブロックが移動またはサイズが変更されたとき。
NameChangeFcn
ブロック名またはパスを変更した後。Subsystemブロックのパスを変更すると、それ自身の NameChangeFcn ルーチンを呼び出した後、それが含むすべてのブロックに対してこの関数を再帰的に呼び出します。
OpenFcn
ブロックを開くとき。このパラメータは、一般にSubsystemブロックで使用します。ルーチンはブロックをダブルクリックするか、ブロックを引数として open_system コマンドを呼び出すと実行されます。OpenFcn パラメータは、ブロックのオープンと関連した通常の挙動、すなわちブロックのダイアログボックスを表示するかサブシステムをオープンする動作を変更します。
ParentCloseFcn
ブロックを含むサブシステムを閉じる前、またはCreate Subsystemコマンドによりブロックを新しいサブシステムの一部とするとき。(new_systemを参照)。
PreSaveFcn
ブロック線図の保存前。このコールバックは、Subsystemブロックに対して再帰的です。
PostSaveFcn
ブロック線図の保存後。このコールバックは、Subsystemブロックに対して再帰的です。
StartFcn
ブロック線図がコンパイルされた後とシミュレーションを開始する前。S-Functionブロックの場合は、 StartFcn は、ブロックの mdlProcessParameters 関数の最初の実行のすぐ前に実行されます。詳細は、Writing S-Functions の第3章の"Overview of the C MEX S-Function Routines"を参照してください。
StopFcn
シミュレーションの終了時。S-Function ブロックの場合、StopFcn はブロックの mdlTerminate 関数の実行後に実行されます。詳細は、Writing S-Functions の第3章の"Overview of the C MEX S-Function Routines"を参照してください。
UndoDeleteFcn
ブロックの削除が元に戻されたとき。


 サブシステム端子のラベリング モデル作成のヒント