メインコンテンツ

Simulink Function

Simulink ブロックを使用した関数の定義

  • Simulink Function block

ライブラリ:
Simulink / User-Defined Functions

説明

Simulink Function ブロックは、Simulink® ブロックを使用した関数の実装を有効にするように事前構成されている Subsystem ブロックです。Simulink Function ブロックを使用して関数を定義して呼び出すには、以下を行います。

  • 関数名と入力引数および出力引数を含む関数プロトタイプを指定する (例 y = f(u))。

  • Simulink ライブラリのブロックを使用して関数の動作を実装する。

  • モデルの階層構造の任意の場所で呼び出して再利用するように Simulink Function ブロックを構成する。

Simulink Function block with view of inside the subsystem.

関数が呼び出されると、呼び出し元は入力引数を介して関数にデータを送り、実装された動作に基づいて関数が実行された後、出力引数を介して関数からデータを受け取ります。

詳細については、Simulink 関数の概要を参照してください。

関数プロトタイプの指定

関数プロトタイプは関数の実装とは切り離されています。入力引数と出力引数を指定し、モデルの階層構造内の他のブロックからの関数の呼び出し方法を指定します。関数プロトタイプで指定された入力引数と出力引数は、Argument Inport ブロックまたは Argument Outport ブロックでそれぞれ表されます。ブロック上に表示されるテキストをダブルクリックすることで関数プロトタイプを編集できます。

関数の動作の実装

関数の目的の動作を実装するには、必要なすべての Simulink ブロックをサブシステム内に追加します。Simulink Function ブロックでは、Argument Inport ブロックと Argument Outport ブロックに加え、InportブロックとOutportブロックを使用してデータを入力および出力できます。

例については、Simulink 関数を使用した共有プリンターでのインク状態の監視を参照してください。

Simulink Function ブロックの構成

Simulink Function ブロックを構成するには、Simulink Function ブロック内にある Trigger ブロックのブロック パラメーターを開きます。

  • 関数名Simulink Function ブロックの関数名を指定します。

  • 関数の可視性 – 関数のスコープの可視性を選択します。

    [関数の可視性]port に設定されている場合、次のパラメーターも指定できます。

Simulink 関数の呼び出し

関数の呼び出し元と関数プロトタイプを使用して、関数を呼び出して実行できます。Simulink Function ブロックで定義された関数は、Function Caller ブロック、Chart (Stateflow)MATLAB Function ブロック、MATLAB System ブロック、または S-Function ブロックから呼び出すことができます。

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

モデルに関する考慮事項

Simulink Function ブロックを使用するときは、関数呼び出し間での状態の維持や連続サンプル時間がモデルに必要かどうかを検討してください。

  • 関数呼び出し間での状態の維持 – Simulink Function ブロックが状態をもつ任意のブロック (Unit Delay ブロックや Memory ブロックなど) を含む場合、それらの状態の値は関数呼び出しの間で維持されます。その関数に対して複数の呼び出しがある場合、状態値は異なる呼び出し元から発信される呼び出しの間でも維持されます。

  • 連続サンプル時間は継承できない – Simulink Function ブロックは連続サンプル時間を継承できません。

Simulink Function ブロックを使用したコード生成

Simulink Coder™ または Embedded Coder® がある場合、Simulink 関数を含むモデルからコードを生成できます。詳細については、Simulink Function ブロックとコードの生成 (Embedded Coder)およびConfigure Entry-Point Function Interfaces for Simulink Function and Function Caller Blocks (Embedded Coder)を参照してください。

端子

入力

すべて展開する

Inport ブロックをサブシステム ブロック内に配置することで、ブロックへの外部入力端子が追加されます。端子ラベルは Inport ブロックの名前と一致します。

ローカル環境から信号を受信するには、Inport ブロックを使用します。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

サブシステム ブロック内の Argument Inport ブロックは、入力引数に対応する入力端子を提供します。端子はサブシステム ブロックには表示されません。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

出力

すべて展開する

Outport ブロックをサブシステム ブロック内に配置することで、ブロックの出力端子が追加されます。サブシステム ブロック上の端子ラベルは Outport ブロックの名前です。

信号をローカル環境に送信するには、Outport ブロックを使用します。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

サブシステム ブロックの Argument Outport ブロックは、出力引数に対応する出力端子を提供します。端子はサブシステム ブロックには表示されません。

データ型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

パラメーター

すべて展開する

メイン

Subsystem ブロック アイコンに端子ラベルを表示する方法を選択します。

  • なし — 端子ラベルを表示しません。

  • FromPortIcon — 対応する端子アイコン上に信号名が表示される場合、Subsystem ブロック上に信号名を表示します。それ以外の場合は、端子のブロック名、またはブロック名が既定の名前の場合は端子番号を表示します。

  • FromPortBlockNameSubsystem ブロック上に対応する端子のブロック名を表示します。

  • SignalName — 端子に接続されている信号に名前が付いている場合、Subsystem ブロック上の信号の名前を表示します。それ以外の場合は、対応する端子のブロック名を表示します。

Subsystem ブロックでの端子ラベルの編集については、Edit Port Labels on Subsystem Blocksを参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ShowPortLabels
値: 'FromPortIcon' (既定値) | 'FromPortBlockName' | 'SignalName' | 'none'

サブシステムの内容へのユーザー アクセスを制御します。

  • ReadWrite — サブシステムの内容を開き、修正することができます。

  • ReadOnly — サブシステムを開くことはできますが、修正することはできません。サブシステムがブロック ライブラリに存在する場合、サブシステムへのリンクを作成して開くことができます。また、サブシステムのローカル コピーを作成して変更することはできますが、アクセス許可や元のライブラリ インスタンスの内容を変更することはできません。

  • NoReadOrWrite — サブシステムを開くことも修正することもできません。サブシステムがライブラリに存在する場合、モデルにあるサブシステムのリンクを作成することはできますが、サブシステムを開いたり、アクセス許可を変更したり、サブシステムのローカル コピーを作成したりすることはできません。

[読み取り/書き込みアクセス許可] パラメーターが [NoReadOrWrite] に設定されているサブシステムの内容を表示しようとしても、応答はありません。たとえば、そのようなサブシステムをダブルクリックしても、サブシステムは開かれず、メッセージも表示されません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: Permissions
値: 'ReadWrite' (既定値) | 'ReadOnly' | 'NoReadOrWrite'

サブシステムの実行中にエラーが発生した場合に呼び出される関数名を入力します。

2 つの引数が関数に渡されます。その引数は、サブシステムのハンドルと、エラー タイプを指定する文字ベクトルです。関数が指定されていない場合、サブシステムの実行によってエラーが発生すると、一般的なエラー メッセージが表示されます。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: ErrorFcn
値: '' (既定値) | function name in quotes
データ型: char | string

このサブシステムによって参照されるワークスペース変数名を解決するかどうかを選択します。

詳細については、記号の解釈および記号関連付けプロセスを参照してください。

  • すべて — ブロック パラメーター値と Simulink データ オブジェクト (Simulink.Signal オブジェクトなど) の指定に使用されるワークスペース変数など、このサブシステムが使用するワークスペース変数のすべての名前を解決します。

  • ExplicitOnly — ブロックのパラメーター値、データ ストア メモリ (ここにはブロックは存在しません)、信号、"must resolve" というマークの付いた状態を指定するために使用されるワークスペース変数名だけを解決します。

  • なし — ワークスペース変数名を解決しません。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: PermitHierarchicalResolution
値: 'All' (既定値) | 'ExplicitOnly' | 'None'

メモ

Simulink Function ブロックのスコープの可視性や同期性を構成するには、Simulink Function ブロック内にある Trigger ブロックのブロック パラメーターを開きます。

ブロックの特性

データ型

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | imagea | integera | singlea | stringa

直達

いいえ

多次元信号

はいa

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

a 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

拡張機能

すべて展開する

バージョン履歴

R2014b で導入

すべて展開する