Main Content

モデルへの Simulink 関数の追加

Simulink® 関数には、プログラミング言語に似た入力引数と出力引数を使用するインターフェイスがあります。以下を使用して、Simulink 関数の関数定義を作成できます。

  • Simulink Function ブロック内の Simulink ブロック。

  • Stateflow® チャートからエクスポートされたグラフィカル関数内の Stateflow ステート遷移。

  • Stateflow チャートからエクスポートされた MATLAB® 関数内の MATLAB コード。

次の節では、関数 y = timestwo(x) の Simulink 関数を作成する方法を説明します。関数は呼び出し元からの値 (x) を 2 で乗算してから、計算された値 (y) を呼び出し元に送り返します。関数を呼び出す場合は、モデルからの Simulink 関数の呼び出しを参照してください。

Simulink 関数と関数の呼び出し元

ex_simulink_functions_and_function_callers という名前のモデルでは、Simulink 関数を作成して呼び出す複数の方法が説明されています。

このモデルでは、Simulink 関数を次の 3 つの方法で作成します。

  • Simulink Function ブロック

  • グラフィカル関数をエクスポートする Stateflow チャート

  • MATLAB 関数をエクスポートする Stateflow チャート

このモデルでは、各 Simulink 関数を次の 3 つの方法で呼び出します。

  • Function Caller ブロック

  • MATLAB Function ブロック

  • Stateflow チャート

Simulink 関数とその呼び出し元との間のラインによる接続を視覚的に表示するには、[デバッグ] タブにある [情報のオーバーレイ] で、[関数コネクタ] ボタンを選択します。

Simulink Function ブロックを使用した Simulink 関数の作成

Simulink Function ブロックを設定して、入力引数を介して関数の呼び出し元からデータを受信し、出力引数を介して計算された値を渡します。

  1. Simulink Function ブロックをモデルに追加します。

  2. ブロック上に、関数プロトタイプを入力します。

    y = timestwo(x)

    After you configure the block, the block icon displays the function prototype for the Simulink Function.

  3. ブロックをダブルクリックして関数アルゴリズムを定義するサブシステムを開きます。

  4. Gain ブロックを追加して [ゲイン] パラメーターを 2 に設定します。

    To represent the function algorithm, the Simulink canvas has a trigger port, f, with an input of x, gain block with value 2, and an output of y.

Stateflow チャートからエクスポートされたグラフィカル関数を使用した Simulink 関数の作成

グラフィカル関数を Stateflow チャートに設定して、入力引数を介して関数の呼び出し元からデータを受信し、計算された値を出力引数に渡します。関数を Simulink モデルにエクスポートするように、チャート パラメーターを設定します。

Stateflow チャートでのグラフィカル関数の定義

Stateflow チャートにグラフィカル関数を作成します。関数インターフェイスと関数定義を定義します。

  1. Stateflow チャートを Simulink モデルに追加します。Simulink ブロック線図でダブルクリックします。検索ボックスで chart を入力し、検索結果から [チャート] を選択します。

  2. ダブルクリックしてチャートを開きます。

  3. グラフィカル関数を追加します。左側のツール バーでグラフィカル関数アイコン をクリックし、チャートにドラッグします。

  4. 関数インターフェイスを定義します。関数ボックスで、? を関数インターフェイス y = timestwo(x) で置き換えます。

  5. 関数アルゴリズムを定義します。遷移の矢印をクリックし、?{y = 2*x} で置き換えます。

    After you configure the graphical function, the block icon displays the function interface and the function algorithm.

グラフィカル関数のテスト

Simulink モデルにエクスポートする前に Stateflow チャート内でグラフィカル関数をテストします。

  1. 関数をテストするためにチャートでデフォルト遷移を追加します。左側のツール バーから、デフォルト遷移の矢印 をクリックして、チャートにドラッグします。

  2. 矢印をダブルクリックして ?{y1 = timestwo(x1)} で置き換えます。

  3. チャートに入力端子を追加します。モデル エクスプローラーを開きます。左側のペインで Chart を選択します。メニューから、[追加][データ] を選択します。[名前]x1 に、[スコープ][入力] に設定します。

  4. チャートに出力端子を追加します。メニューから、[追加][データ] を選択します。[名前]y1 に、[スコープ][出力] に設定します。

  5. 入力にテスト データを供給する Sine Wave ブロックと、出力からの結果を表示する Scope ブロックを追加します。

    After you add the components to test the graphical function, there is a Sine Wave block as input to a Stateflow chart which sends output to a Scope block.

  6. シミュレーションを実行します。

グラフィカル関数の引数パラメーターの設定

関数の入出力引数のサイズ、実数/複素数、タイプを指定します。チャートは完全に指定されたプロトタイプをもつ関数のみエクスポートできます。

  1. モデル エクスプローラーを開きます。[モデル化] タブの [設計] セクションで、[モデル エクスプローラー] を選択します。

  2. 左側のペインでグラフィカル関数を選択します。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 中央のペインの [列ビュー] リストから、[Stateflow] を選択します。フィルター アイコン を選択し、トグル リストから [すべての Stateflow オブジェクト] を選択します。中央のペインの表から入力引数または出力引数を選択します。

    Column View pane of the Model Explorer shows the arguments of the timestwo graphical function.

  4. 右のペインで [サイズ] を [1] (スカラー) に、[実数/複素数][オフ] (実数) に、[タイプ][double] に設定します。

    Data pane of the Model Explorer shows the parameters set for x.

  5. 出力関数の引数 y で、手順 23 を繰り返します。

グラフィカル関数へのエクスポート関数パラメーターの設定

シミュレーション中に、Stateflow チャートから Simulink モデルにグラフィカル関数をエクスポートするパラメーターを設定します。

  1. モデル エクスプローラーを開きます。

  2. 左側のペインで、グラフィカル関数が含まれるチャートを選択します。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 右側のプロパティ ダイアログ ボックスで [チャート レベルの関数をエクスポート] チェック ボックスをオンにして [適用] ボタンをクリックし、[エクスポートされた関数をグローバルに可視として扱う] チェック ボックスをオンにします。

    別の Stateflow チャートからエクスポートされたグラフィカル関数を呼び出す場合 (グラフィカル関数をエクスポートしたチャートではなく)、[エクスポートされた関数をグローバルに可視として扱う] チェック ボックスをオンにする必要はありません。

Stateflow チャートからエクスポートされた MATLAB 関数を使用した Simulink 関数の作成

MATLAB 関数を Stateflow チャートに設定して、入力引数を介して関数の呼び出し元からデータを受信し、出力引数を介して計算された値を渡します。関数を Simulink モデルにエクスポートするように、チャート パラメーターを設定します。

Stateflow チャートでの MATLAB 関数の定義

Stateflow チャートに MATLAB 関数を作成します。関数インターフェイスと関数定義を定義します。

  1. Stateflow チャートを Simulink モデルに追加します。ブロック線図でダブルクリックします。検索ボックスで chart を入力し、検索結果から [チャート] を選択します。

  2. チャートを開きます。

  3. MATLAB 関数を追加します。左側のツール バーでグラフィカル関数アイコン をクリックし、チャートにドラッグします。

  4. 関数インターフェイスを定義します。関数ボックスで、? を関数インターフェイス y = timestwo(x) で置き換えます。

    MATLAB Function called timestwo.

  5. 関数ボックスをダブルクリックし、MATLAB コード エディターを開きます。MATLAB コードで関数アルゴリズムを定義します。

    MATLAB code editor with function algorithm defined as y equals 2 times x.

MATLAB 関数のテスト

Simulink モデルにエクスポートする前に、Stateflow チャート内で MATLAB 関数をテストします。

  1. 関数をテストするためにチャートでデフォルト遷移を追加します。左側のツール バーから、デフォルト遷移の矢印 をクリックして、チャートにドラッグします。

  2. 矢印をダブルクリックして ?{y1 = timestwo(x1)} で置き換えます。

  3. チャートに入力端子を追加します。モデル エクスプローラーを開きます。左側のペインで Chart を選択します。メニューから、[追加][データ] を選択します。[名前]x1 に、[スコープ][入力] に設定します。

  4. チャートに出力端子を追加します。メニューから、[追加][データ] を選択します。[名前]y1 に、[スコープ][出力] に設定します。

  5. 入力にテスト データを供給する Sine Wave ブロックと、出力からの結果を表示する Scope ブロックを追加します。

    After you add the components to test the MATLAB function, there is a Sine Wave block as input to a Stateflow chart which sends output to a Scope block.

  6. シミュレーションを実行します。

MATLAB 関数の引数パラメーターの設定

関数の入出力引数のサイズ、実数/複素数、タイプを指定します。チャートは完全に指定されたプロトタイプをもつ関数のみエクスポートできます。

  1. モデル エクスプローラーを開きます。[モデル化] タブの [設計] セクションで、[モデル エクスプローラー] を選択します。

  2. 左側のペインで MATLAB 関数を選択します。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 中央のペインの [列ビュー] リストから、[Stateflow] を選択します。フィルター アイコン を選択し、トグル リストから [すべての Stateflow オブジェクト] を選択します。中央のペインの表から入力引数または出力引数を選択します。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  4. 右のペインで [サイズ] を [1] (スカラー) に、[実数/複素数][オフ] (実数) に、[タイプ][double] に設定します。

  5. 出力関数の引数 y で、手順 23 を繰り返します。

MATLAB 関数へのエクスポート関数パラメーターの設定

シミュレーション中に Stateflow チャートから MATLAB 関数をエクスポートするためのパラメーターを設定します。

  1. モデル エクスプローラーを開きます。

  2. 左側のペインで MATLAB 関数が含まれるチャートを選択します。

  3. 右側のプロパティ ダイアログ ボックスで [チャート レベルの関数をエクスポート] チェック ボックスをオンにして [適用] ボタンをクリックし、[エクスポートされた関数をグローバルに可視として扱う] チェック ボックスをオンにします。

    エクスポートされた MATLAB 関数を他の Stateflow チャート (MATLAB 関数をエクスポートしたチャートとは別のもの) から呼び出そうとしている場合、[エクスポートされた関数をグローバルに可視として扱う] チェック ボックスをオンにする必要はありません。

参考

| | | |

関連するトピック