Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

再利用のための Stateflow 関数のエクスポート

Stateflow® チャートの関数をエクスポートすることにより、そのチャートレベルの関数のスコープを Simulink® モデルの他のブロックに拡大できます。以下をエクスポートできます。

  • グラフィカル関数

  • MATLAB® 関数

  • Simulink 関数

  • 真理値表

チャート レベルの関数をエクスポートすると、他の Stateflow チャートおよび Simulink Caller ブロックでそれらを呼び出すことができます。

  • chartName.functionName などの修飾表記を使用して呼び出すことが可能なチャートレベルの関数をエクスポートするには、Stateflow チャートのプロパティの指定の説明に従って、チャートの [チャート レベルの関数をエクスポート] プロパティを選択します。

  • 修飾表記を使用せずに呼び出すことが可能なチャートレベルの関数をエクスポートするには、[チャート レベルの関数をエクスポート] を選択してから [エクスポートされた関数をグローバルに可視として扱う] を選択します。複数の関数を同じ名前でエクスポートすることはできません。

詳細については、モデルからの Simulink 関数の呼び出し (Simulink)を参照してください。

Stateflow チャート間での関数の共有

この例では、Simulink モデル内の他のチャートからエクスポートされた関数を呼び出す方法を説明します。このモデルには、メインの Stateflow チャート mainChart と、2 つの補助ライブラリ チャート lib1Chart および lib2Chart が含まれています。各チャートはチャートレベルのグラフィカル関数を 1 つ含み、チャートの [チャート レベルの関数をエクスポート] プロパティおよび [エクスポートされた関数をグローバルに可視として扱う] プロパティの両方が有効になっています。

メイン チャートには 2 つのデータ オブジェクト xy が含まれており、初期値はそれぞれ 01 です。モデルをシミュレートすると、このチャートのデフォルト遷移がそれらの値を引数として使用して、関数 lib1_func を呼び出します。

関数 lib1_func は、ライブラリ チャート lib1Chart で定義されています。この関数は入力引数を読み取り、それらを関数 lib2_func に渡します。

関数 lib2_func は、ライブラリ チャート lib2Chart で定義されています。この関数は入力引数を読み取り、それらを関数 main_func に渡します。

関数 main_func は、メイン チャートで定義されています。この関数は入力引数を加算して結果を返します。メイン チャートは、この結果を出力データ x として保存します。シミュレーションの各タイム ステップで、一連の関数呼び出しが繰り返されます。シミュレーション中に、増加する x の値が Scope ブロックに表示されます。

チャートレベルの関数のエクスポートに関するガイドライン

サポートされていない入出力を含むチャートレベルの関数はエクスポートしない

入力または出力が以下のいずれかのプロパティをもつ場合、チャートレベルの関数はエクスポートできません。

  • 32 ビット以上の語長をもつ固定小数点データ型

  • 可変サイズ

モデル参照の境界を越えて関数をエクスポートしない

参照モデルから関数をエクスポートして、親モデルから関数を呼び出すことはできません。

コード生成時に出力を組み合わせて関数を更新する

エクスポートされたチャートレベルの関数を使用するモデルのコードを生成する場合は、モデル コンフィギュレーション パラメーター [1 つの出力/更新関数] (Simulink Coder) を有効にして、シミュレーションとコード生成の間で確実に動作を一致させます。

関連するトピック