Main Content

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

参照モデルにおける Simulink Function ブロック

Simulink Function ブロックおよび関数の呼び出し元 (Function Caller ブロックや Stateflow® チャートなど) は参照モデル内に配置できますが、そのためには特別な考慮が必要になります。

  • 参照モデルはエクスポート関数モデルのルールに従わなければなりません。エクスポート関数モデルの概要を参照してください。

  • Function Caller ブロックに引数データ型を明示的に定義しなければならない場合があります。

以下の例では、Function Caller ブロック、Simulink Function ブロックおよび参照モデルの間の 4 つの関係について説明します。

参照モデルにおける Simulink Function ブロック

この例では、親モデルには Function Caller ブロックが含まれ、参照モデル Model_B には Simulink Function ブロックが含まれます。Model_B はエクスポート関数モデルのルールに従わなければなりません。

Function Caller ブロックは関数の引数のデータ型を決定できます。Function Caller ブロック内で [入力引数の仕様] パラメーターおよび [出力引数の仕様] パラメーターを定義する必要はありません。

ただし、既定では、Simulink Function ブロックのスコープはモデルであるため、関数名の呼び出しを Model ブロック名で修飾することが必要になります。

完成したモデルを開くには、ex_referenced_model_with_simulink_function_block を参照してください。

入力に 2 を乗算する関数を定義する Simulink Function ブロックが Model_B に含まれています。このモデルは Simulink Function ブロックのみを含むため、エクスポート関数モデルのルールを満たします。エクスポート関数モデルの概要を参照してください。

Model_B について、エクスポート関数モデルのルールを満たすようにソルバーのコンフィギュレーション パラメーターを設定します。

  • タイプ: 固定ステップ

  • ソルバー: 離散 (連続状態なし)

サブシステムに配置された参照モデルにおける Simulink Function ブロック

[関数の可視性][グローバル] に設定して Simulink Function ブロックがグローバルであると識別されたら、参照モデルが配置される場所についての制限はありません。

たとえば、Model_BSimulink Function ブロックとともに Subsystem ブロックに配置できます。

参照モデル内の Function Caller ブロック

この例では、親モデルが Simulink Function ブロックを含み、参照モデル Model_AFunction Caller ブロックを含んでいます。このモデル化パターンを使用する場合、Simulink Function ブロック内の Trigger Port ブロックの [関数の可視性] パラメーターを [グローバル] に設定しなければなりません。

親モデルでは、ソルバーのタイプを [可変ステップ] または [固定ステップ] に設定します。

完成したモデルを開くには、ex_referenced_model_with_function_caller_block を参照してください。

Model_A には Function Caller ブロックが含まれます。

Function Caller ブロックが Model_A 内で関数を見つけられないため、Trigger ブロックの [関数の可視性] パラメーターを [グローバル] に設定して Function Caller ブロック引数パラメーターを指定しなければなりません。

  • 入力引数の仕様: Simulink Function ブロックの入力引数のデータ型と一致するように指定します (たとえば double(1.0))。

    Simulink Function ブロックの引数の指定に、Input Argument ブロックおよび Output Argument ブロックの [データ型] パラメーターを指定します。

  • 出力引数の仕様: Simulink Function ブロックの出力引数のデータ型と一致するように指定します (たとえば double(1.0))。

個別の参照モデルにおける Function ブロックと Function Caller ブロック

この例では親のモデルに 2 つの参照モデルが含まれています。Model_AFunction Caller ブロックを含む参照モデルです。Model_B はスコープ内 Simulink Function ブロックを含む参照モデルです。Simulink Function ブロックを含む Model_B のみ、エクスポート関数のルールに従わなければなりません。

Model_A について、参照モデル内の Function Caller ブロックの参照モデルと同様に引数の仕様を指定します。Model_B について、参照モデルにおける Simulink Function ブロックの参照モデルと同様にパラメーターを指定します。

完成したモデルを開くには、ex_referenced_model_with_simulink_function_and_function_caller を参照してください。

Model_A には Function Caller ブロックが含まれます。関数が [グローバル] に設定されている場合、[入力引数の仕様] パラメーターと [出力引数の仕様] パラメーターを定義します。関数が [スコープ内] に設定されている場合は、ブロック名ではなく、関数の解決に必要なモデルのファイル名を y = Model_B.FunctionName(u) の形式で指定します。

入力に 2 を乗算する関数を定義する Simulink Function ブロックが Model_B に含まれています。このモデルは Simulink Function ブロックのみを含むため、エクスポート関数モデルのルールを満たします。エクスポート関数モデルの概要を参照してください。

同じモデル内の関数と関数呼び出し

この例では、親のモデルに 1 つの参照モデル Model_C が含まれています。これは、Function Caller ブロックとスコープ内 Simulink Function ブロックの両方を含む参照モデルです。

  • Model_C のインスタンスが 1 つのみで、コンフィギュレーション パラメーター [最上位モデルごとに可能なインスタンスの総数][1] に設定されている場合、親モデルはエラーなしでシミュレーションされます。Model_C では関数がエクスポートされないため、エクスポート関数ルールに従う必要はありません。

  • コンフィギュレーション パラメーター [最上位モデルごとに可能なインスタンスの総数][複数] に設定されている場合、Model_C では、モデルの単一のインスタンスと複数インスタンスのどちらがあるかに関係なく、関数がエクスポートされます。どちらの場合も、Simulink にエラーが表示されます。モデルはエクスポート関数ルールに従う必要がありますが、Function Caller ブロックはエクスポート関数モデルの最上位で許可されないため、このルールには従いません。

Model_C には Function Caller ブロックとスコープ内 Simulink Function ブロックの両方が含まれます。このモデリング パターンを使用する場合、Model_C の 1 つのインスタンスのみ親モデルで許可されます。

参考

ブロック

関連するトピック