メインコンテンツ

パラメーター変数の定義による複数の MATLAB Function ブロックでのデータの使用

複数の MATLAB Function ブロックのインスタンスで同じデータにアクセスする場合は、"パラメーター変数" を定義します。パラメーター変数はワークスペース内のデータに割り当てるか、ブロック マスクを作成してマスク パラメーターに変数を割り当てることができます。

ワークスペース データへのパラメーター変数の割り当て

MATLAB Function ブロックのパラメーター変数の値は、ワークスペース変数または Simulink.Parameter オブジェクトから取得されます。パラメーター変数を作成する前に、次のスペースのいずれかでワークスペース変数または Simulink.Parameter オブジェクトを作成しなければなりません。

  • Simulink® モデル ワークスペース。

  • データ ディクショナリ。詳細については、データ ディクショナリとはを参照してください。

  • MATLAB® ワークスペース。MATLAB を閉じた場合はデータを再定義しなければなりません。

ワークスペース変数またはオブジェクトをワークスペースで直接作成するか、MAT ファイルまたは MATLAB ファイルから変数を読み込むか、カスタム MATLAB コードで変数を作成できます。次の表に、それぞれのスペースの違いを示します。

データ ストレージ スペース可視性
モデル ワークスペースモデルに対してローカル
データ ディクショナリ指定した Simulink モデルと共有
ベース ワークスペースすべての Simulink モデルで利用可能。

詳細については、Simulink モデルの変数とオブジェクトの保存場所の決定を参照してください。

ワークスペース変数またはオブジェクトを作成した後、[シンボル] ペインとプロパティ インスペクター (R2022a 以降)を使用して MATLAB Function ブロックでパラメーター変数を作成できます。

  1. MATLAB Function ブロックを開きます。

  2. MATLAB Function ブロック エディターで、[関数] タブの [データの編集] をクリックします。

    The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

  3. [シンボル] ペインで、[データの作成] ボタン をクリックします。

  4. 変数を選択し、[スコープ] プロパティを設定します。[タイプ] 列でタイプのアイコンをクリックし、[パラメーター データ] を選択します。[シンボル] ペインでは、[スコープ][パラメーター] に設定された変数は [パラメーター データ] アイコン で示されます。

  5. [名前] 列で、パラメーター変数の名前をワークスペース変数または Simulink.Parameter オブジェクトの名前に設定します。

MATLAB Function ブロックの変数の定義の詳細については、MATLAB Function ブロックの変数の作成と定義を参照してください。

MATLAB Function ブロックのパラメーター変数の例

この例では、パラメーター変数をもつ MATLAB Function ブロックを使用します。この例では、ベース ワークスペースの変数でパラメーター値の値を定義します。

MATLAB® 関数は、パラメーター変数 const に Sine Wave ブロック信号の値を乗算します。MATLAB Function ブロックを開いてコードを確認します。

function y = fcn(u, const)
y = const*u;

モデルを読み込むと、"PreLoadFnc" コールバックが実行され、ベース ワークスペース変数 const が定義されます。コールバックを表示するには、[モデル化] タブで [モデル設定][モデル プロパティ] をクリックします。[モデル プロパティ] ウィンドウの [コールバック] タブで [PreLoadFnc] をクリックします。

MATLAB コマンド ウィンドウで再定義することで変数を調整できます。

MATLAB Function ブロックで、[関数] タブの [データの編集] をクリックします。[シンボル] ペインで const をクリックします。プロパティ インスペクターと [シンボル] ペインに const がパラメーター変数として表示されます。

パラメーター変数とワークスペース変数は同じ名前でなければなりません。この例では、ワークスペース変数の名前を変更せずにパラメーター変数の名前を変更しているためエラーになります。

マスク パラメーターへのパラメーター変数の割り当て

ブロック マスクを作成し、そのマスク内でパラメーターの値を設定することで、MATLAB Function ブロックのパラメーター変数に値を代入できます。マスク パラメーターにパラメーター変数を割り当てるには、次のようにします。

  1. MATLAB Function ブロックを開きます。

  2. MATLAB Function ブロック エディターで、[関数] タブの [準備] セクションにある [データの編集] をクリックします。

  3. [シンボル] ペインで、[データの作成] ボタン をクリックします。

  4. 変数を選択し、[スコープ] プロパティを設定します。[タイプ] 列でタイプのアイコンをクリックし、[パラメーター データ] を選択します。

  5. [名前] 列でパラメーター変数の名前を設定し、ブロックを終了します。

  6. モデルで MATLAB Function ブロックをマスクします。ブロックのマスクの作成の詳細については、マスクの基礎を参照してください。

  7. [マスク エディター] ウィンドウの [パラメーターとダイアログ] ペインでパラメーターを追加します。パラメーター変数と同じ名前を使用します。

  8. マスクを保存し、[マスク エディター] ウィンドウを終了します。

マスクされた MATLAB Function ブロックのパラメーター変数の例

この例では、マスクを使用してパラメーター変数の値を設定します。

MATLAB 関数は、パラメーター変数 const に Sine Wave ブロック信号の値を乗算します。MATLAB Function ブロックの矢印アイコンをクリックしてコードを確認します。

function y = fcn(u, const)
y = const*u;

MATLAB Function ブロックをダブルクリックして const の値を調整できます。

ブロック マスクで [Set sine wave multiplier] パラメーターが定義されており、これはマスク エディターで編集できます。MATLAB Function ブロックでは、プロパティ インスペクターにおいて const[スコープ]Parameter に設定されたデータとして定義されています。このプロパティは、[シンボル] ペインで const を選択するとプロパティ インスペクターで表示できます。

パラメーター変数とマスク パラメーターは同じ名前でなければなりません。この例では、マスク パラメーターの名前を変更せずにパラメーター変数の名前を変更しているためエラーになります。調整可能でないパラメーターを使用する場合、プロパティ インスペクターで [調整可能] プロパティがオフになっていることを確認してください。

パラメーター変数の階層

パラメーター変数を定義すると、記号の関連付けと同じルールを使用して、その変数の代入が Simulink で検索されて選択されます。記号の解釈を参照してください。同じ名前の変数がそのブロックから見える複数のワークスペース内にある場合、ワークスペース階層内でそのブロックに最も近いデータが使用されます。MATLAB Function ブロックがマスク サブシステム内にある場合は、サブシステム ワークスペースのデータが使用されます。それ以外の場合は、モデル ワークスペースのデータが使用され、続いて MATLAB ベース ワークスペースのデータおよび関連付けられた Simulink データ ディクショナリのデータがこの順序で使用されます。

参考

トピック