Main Content

マスクにおけるブロック パラメーターのプロモート

ブロックおよびサブシステムは関連付けられた複数のパラメーターをもつことができます。ブロックのマスクは、これらのパラメーターの 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. 可変の "ゲイン" パラメーター GainGain1 を選択し、[プロモート] をクリックします。

メモ: プロモートされたパラメーターのプロンプトは変更できます。

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. "ゲイン" パラメーター Gain1Gain2、および Gain3 を選択します。

3. [プロモート] をクリックします。

4. モデルをシミュレートします。値 4 がマスクから基礎となるブロック "Gain1""Gain2""Gain3" に渡される点に注目してください。この場合、出力に 64 と示されます。

ベスト プラクティス

  • プロモートされたパラメーターの値はマスク ダイアログ ボックスでのみ設定し、基となるブロックのダイアログ ボックスまたはコマンド ラインからは設定しないでください。

  • プロモートしたパラメーターを他のマスクに再度プロモートすることはできません。

  • プロモートされたパラメーターの [評価] 属性は編集しないでください。このプロパティはブロック パラメーターから継承されます。

  • 調整不可能なパラメーターをプロモートする場合、[調整可能] 属性は編集しないでください。

  • マスクまたはリンクされた子ブロックのパラメーターは表示もプロモートもできません。

  • ブロック パラメーターに関連付けられたコールバックはブロック マスクにプロモートされ、サブシステム マスクにはプロモートされません。ユーザー定義のコールバックは、ダイナミック ダイアログのコールバックの実行後に順次実行されます。