マスクにおけるブロック パラメーターのプロモート
ブロックおよびサブシステムは関連付けられた複数のパラメーターをもつことができます。ブロックのマスクは、これらのパラメーターの 1 つ以上を公開し、その他のパラメーターが表示されないようにします。ブロックの基となる任意のパラメーターをブロック マスクまたはサブシステム マスクにプロモートできます。任意のサブシステムについて、すべての入れ子になったブロック、ブロック パラメーター、内部パラメーターが単一のビューに表示されます。任意のノードをクリックして、入れ子になったブロック内のプロモート可能な任意のパラメーターにアクセスできます。パラメーターをブロック ダイアログ ボックスからマスクにプロモートすることで、次のことが可能です。
必要なパラメーターをブロック ダイアログ ボックスからマスク ダイアログ ボックスに移動させることによってマスク ダイアログ ボックスをカスタマイズする。
モデルの別のインスタンスでライブラリ ブロックを再利用する。ライブラリ ブロックのインスタンスごとに、それぞれのブロックのパラメーターをプロモートすることによって、個別のマスク ダイアログ ボックスを作成できます。
インターフェイスを簡略化し、ブロックのユーザーが表示や設定を行うことができるパラメーターを指定する。
パラメーターのプロモートには次のオプションを使用できます。
1 対 1 でプロモート: このオプションは、マスク エディターでブロック パラメーターとマスク パラメーターを 1 対 1 で対応させる場合に使用します。各ブロック パラメーターに対して 1 つのマスク パラメーターが作成されます。たとえば、"ゲイン" や "乗算" などのパラメーターがある "Gain" ブロックのブロック ダイアログ ボックスについて考えてみます。"ゲイン" パラメーターのみを公開するには、"Gain" ブロックをマスクし、"ゲイン" パラメーターをマスク ダイアログ ボックスにプロモートします。
多対 1 でプロモート: このオプションは、ブロック パラメーターとマスク パラメーターの多対 1 の対応関係を作成する場合に使用します。1 つのマスク パラメーターを複数のプロモートされたパラメーターと関連付けることができます。たとえば、サブシステム内の複数の "ゲイン" パラメーターをマスクの 1 つのパラメーターにプロモートできます。
メモ:
パラメーターのデータ型が
popup
またはDataType
の場合、プロモートするパラメーターはオプションも同じでなければなりません。
プロモートされたすべてのパラメーターで
Evaluate
属性が同じでなければなりません。
プロモートされたパラメーターの属性を変更することもできます。たとえば、プロモートされたパラメーターを読み取り専用にしたり非表示にしたりできます。属性の詳細については、プロパティ エディターを参照してください。
モデルの確認
モデルには 2 つのサブシステム ブロックが含まれています。Selective Promotion of Parameters
はパラメーターを 1 対 1 でプロモートし、Promote Many to One
はパラメーターを多対 1 でプロモートします。
open_system('slexMaskParameterPromotionExample.slx');
1 対 1 でプロモート
基となる各ブロック パラメーターについて、マスク パラメーターとの 1 対 1 の対応関係を作成できます。
サブシステム Selective Promotion of Parameters
を含むモデルについて考えます。このサブシステムには 3 つの "Gain" ブロックが含まれています。そのうちの 1 つの "Gain" ブロックの値は固定です。ユーザー インターフェイスを簡略化するために、可変の "Gain" ブロックのパラメーターはマスクにプロモートされています。
パラメーターをプロモートするには、次の手順に従います。
1. [マスク エディター]、[パラメーターとダイアログ]、[パラメーター]、[1 対 1 でプロモート] に移動します。
2. 可変の "ゲイン" パラメーター Gain
と Gain1
を選択し、[プロモート] をクリックします。
メモ: プロモートされたパラメーターのプロンプトは変更できます。
3. マスクを保存し、モデルをシミュレートします。Gain1
ブロックの値がマスク パラメーター gain1_promoted
から取得されることに注目してください。
4. モデルをシミュレートします。Gain3
ブロックの値は固定で、initialization
で設定されていることに注目してください。可変の "ゲイン" パラメーターはマスク ダイアログ ボックスに表示されます。
多対 1 でプロモート
複数のブロック パラメーターを 1 つのマスク パラメーターにプロモートするには、マスク エディターで [多対 1 でプロモート] オプションを使用します。たとえば、このモデルの Promote Many to One
というサブシステムには 3 つの "Gain" ブロック ("Gain1"、"Gain2"、"Gain3") が含まれています。変数 K
はこれらの "Gain" ブロックの "ゲイン" パラメーターを表します。これらの各 "Gain" ブロックの "ゲイン" パラメーターのみをブロック マスクに単一のパラメーターとしてプロモートできます。これを行うと、編集用のマスクでパラメーター K
が使用可能になり、その値が "Gain1" ブロック、"Gain2" ブロック、および "Gain3" ブロックに適用されます。
1. [マスク エディター]、[パラメーターとダイアログ]、[多対 1 でプロモート] に移動します。
2. "ゲイン" パラメーター Gain1
、Gain2
、および Gain3
を選択します。
3. [プロモート] をクリックします。
4. モデルをシミュレートします。値 4 がマスクから基礎となるブロック "Gain1"、"Gain2"、"Gain3" に渡される点に注目してください。この場合、出力に 64 と示されます。
ベスト プラクティス
プロモートされたパラメーターの値はマスク ダイアログ ボックスでのみ設定し、基となるブロックのダイアログ ボックスまたはコマンド ラインからは設定しないでください。
プロモートしたパラメーターを他のマスクに再度プロモートすることはできません。
プロモートされたパラメーターの [評価] 属性は編集しないでください。このプロパティはブロック パラメーターから継承されます。
調整不可能なパラメーターをプロモートする場合、[調整可能] 属性は編集しないでください。
マスクまたはリンクされた子ブロックのパラメーターは表示もプロモートもできません。
ブロック パラメーターに関連付けられたコールバックはブロック マスクにプロモートされ、サブシステム マスクにはプロモートされません。ユーザー定義のコールバックは、ダイナミック ダイアログのコールバックの実行後に順次実行されます。