Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Stateflow チャートでの外部 MATLAB 関数の呼び出し

Simulink® モデルの Stateflow® チャートには、ステート アクションと遷移アクションの構文を定義するアクション言語プロパティがあります。チャート キャンバスの左下隅にあるアイコンが、チャートのアクション言語を示します。

  • アクション言語は MATLAB®

  • アクション言語は C。

C をアクション言語として使用するチャートでは、ml 名前空間演算子または関数 ml を使用することにより、組み込みの MATLAB 関数を呼び出して MATLAB ワークスペース変数にアクセスできます。詳細については、C チャート内の MATLAB 関数およびワークスペース データへのアクセスを参照してください。

MATLAB をアクション言語として使用するチャートでは、コード生成でサポートされる MATLAB 関数を直接呼び出すことができます。コード生成でサポートされていない外部関数を呼び出すには、関数 coder.extrinsic (MATLAB Coder) を使用しなければなりません。coder.extrinisic(function_name) によって関数を宣言すると、シミュレーション時に Stateflow でその関数への呼び出しが作成されます。Stateflow チャートでは、coder.extrinsic は 1 回だけ宣言します。coder.extrinsic で予約キーワードを宣言することはできません。詳細については、Stateflow オブジェクトの命名のガイドラインを参照してください。

Atomic サブチャートを含むチャートの場合は、Atomic サブチャート内で coder.extrinsic を個別に使用して、コード生成でサポートされていない関数を宣言しなければなりません。

関数 coder.extrinsic の使用

外部関数heaviside (Symbolic Math Toolbox)の呼び出しを有効にするため、このモデルは coder.extrinsic を使用します。

このチャートには A と B の 2 つのパラレル ステートと、1 つのグラフィカル関数ブロック foo があります。ステート A は coder.extrinsic を使用して、コード生成でサポートされていない関数 heaviside を宣言します。ステート B とグラフィカル関数ブロックでも、coder.extrinsic を使わずに heaviside を使用します。

ステート A への入力は正弦波 u1、ステート B への入力は余弦波 u2 です。グラフィカル関数 out は、入力 in に対して関数 heaviside の値を出力します。

チャートで coder.extrinsic を使用して heaviside を宣言する必要があるのは 1 回だけです。その後は、チャート内の任意の位置で、coder.extrinsic を使わずに関数 heaviside を使用できます。コードを生成すると、coder.extrinsic を使用して宣言した関数に外部関数への呼び出しが含まれますが、この関数は生成されたコードに表示されません。

このチャートの結果を可視化するには、スコープを開きます。

参考

(Symbolic Math Toolbox) | (MATLAB Coder)

関連するトピック