動的なマスク サブシステム
ライブラリ ブロックで内容を変更することを許可
このチェック ボックスが有効になるのは、マスク サブシステムがライブラリ内にある場合だけです。このオプションをオンにすると、ブロックの追加や削除またはこれらのブロックでのパラメーターの設定など、マスク サブシステムの内容をブロックの初期化コードで変更できるようになります。オフの場合は、マスク ライブラリ ブロックが何らかの形で内容を変更しようとするとエラーが発生します。MATLAB® プロンプトでこのオプションを設定するには、自動変更ブロックを選択し、次のコマンドを入力します。
set_param(gcb, 'MaskSelfModifiable', 'on');
その後、ブロックを保存します。
ライブラリ ブロック用の自動変更マスクの作成
ブロックの構造的な内容を変更できるマスク ライブラリ ブロックを作成できます。これらの自動変更マスクでは、次のような操作ができます。
マスク ダイアログ ボックス内のパラメーターに基づいたマスク サブシステムの内容の変更またはサブシステムがライブラリから新しいモデルに当初からドラッグされた場合のマスク サブシステムの内容の変更。
ライブラリ内に常駐する複数の端子の S-Function ブロックにある端子数の変更。
ブロックを読み込むと、Simulink® では自己修正可能ライブラリ ブロックのマスクの初期化コードが実行されます。マスク初期化コードでブロックの入力/出力端子の数を制御する場合は、ブロックを自己修正可能としてマークします。このようにマークしないと、マスク初期化コードは実行されず、適切な数の端子が設定されないため、ブロックは切り離されます。
マスク エディターを使用した自動変更マスクの作成
マスク エディターを使用して自動変更マスクを作成するには、以下のようにします。
ライブラリのロックを解除します (ライブラリのロックとロック解除を参照)。
ライブラリ内のブロックを選択します。
[ブロック] タブの [マスク] グループで、[マスクの編集] をクリックします。マスク エディターが開きます。
マスク エディターの [コード] ペインで、[ライブラリ ブロックで内容を変更することを許可] オプションをオンにします。
そのマスクの [初期化] ペインにあるマスク サブシステムを変更するコードを入力します。
ダイアログ パラメーター コールバック内には、マスク サブシステムを構造的に変更するコードは入力しないでください (マスク コードの追加を参照)。それをすると、パラメーターを編集したときにエラーが発生します。
変更内容を適用するには [適用] を、変更内容を適用してマスク エディターを終了するには [OK] をクリックします。
ライブラリをロックします。
自動変更マスクのコマンド ラインからの作成
コマンド ラインから自動変更マスクを作成するには、以下のようにします。
次のコマンドを使用してライブラリのロックを解除します。
set_param(gcs,'Lock','off')
次のコマンドを使用してブロックが自動変更であることを指定します。
set_param(block_name,'MaskSelfModifiable','on')
ここで、
block_name
には、ライブラリ内のブロックへの絶対パスが入ります。
自動変更マスクの作成
ライブラリ selfModifying_example
には、サブシステムのマスク ダイアログ ボックスでの選択に基づいて入力端子の数を変更する、マスク サブシステムが含まれています。
ライブラリ ウィンドウの [ライブラリ] タブで、[ロックされたライブラリ] をクリックしてライブラリのロックを解除します。
[Subsystem ブロック] タブの [マスク] グループで、[マスクの編集] をクリックします。マスク エディターが開きます。
マスク エディターの [パラメーターとダイアログ] ペインでは、[Number of inports] オプションの値を格納する
numIn
パラメーターを定義します。このマスク ダイアログ ボックス コールバックは、[Number of inports] リストでの選択に基づいてマスク サブシステム内の入力端子を追加または削除します。ダイアログ ボックス コールバックを正常に機能させるには、マスク エディターの [コード] ペインで [ライブラリ ブロックで内容を変更することを許可] オプションがオンになっている必要があります。このオプションが選択されていない場合、ライブラリ ブロックのコピーはその構造的な内容を変更できません。また、[Number of inports] リストの選択を変更するとエラーが発生します。
親サブシステムから子ブロックへのマスク パラメーター値の受け渡し
マスク パラメーター値を親サブシステムから子ブロックに受け渡すには次の 3 つの方法があります。
パラメーターのプロモーションを使用する。
マスク初期化コードを使用する。これは、子ブロックで
set_param
コマンドを使用して実行します。子ブロック パラメーターに親マスク パラメーター名を参照させる。これは編集パラメーターにのみ適用できます。