Main Content

Simulink Function

Simulink ブロックで関数をグラフィカルに定義

  • Simulink Function block

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

説明

Simulink Function ブロックは、Simulink® ブロックを使用した関数をグラフィカルに定義するための開始点として事前定義される Subsystem ブロックです。このブロックは、関数の呼び出し元にテキスト インターフェイスを提供します。Simulink Function ブロックは、Function Caller ブロック、MATLAB Function ブロック、または Stateflow® チャートから呼び出すことができます。モデルからの Simulink 関数の呼び出しを参照してください。

ブロック パラメーターについては、Subsystem を参照してください。

Simulink Function の呼び出しをシーケンス ビューアーで可視化できます。ビューアーには、呼び出しが行われたタイミングが引数および戻り値とともに表示されます。

Simulink Function ブロックまたは Function Caller ブロックを選択して、関連するブロックを強調表示できます。1 つ以上の関連するブロックがサブシステムまたは参照モデルに含まれている場合、関連するブロックに加え、その関連ブロックを含む Subsystem ブロックまたは Model ブロックも強調表示されます。

開いているブロック線図または新しいタブに関連するブロックを表示するには、Simulink Function ブロックまたは Function Caller ブロックの選択後に表示される省略記号をポイントします。その後、操作バーから [関連するブロック] Related Blocks button を選択します。選択したブロックに複数のブロックが対応している場合は、関連するブロックのリストが開きます。リストはテキスト ボックスに検索語を入力してフィルター処理できます。関連するブロックをリストから選択すると、関連するブロックが表示された開いているブロック線図または新しいタブにウィンドウのフォーカスが移ります。

関数インターフェイス

Simulink Function ブロック上には関数インターフェイスが表示されます。ブロックのテキストを編集すると、関数定義に対して Argument Inport ブロックと Argument Outport ブロックが追加、削除されます。また、編集することで、Simulink Function ブロック内の Trigger ブロックの [関数名] パラメーターが設定されます。

たとえば、Simulink Function ブロック上に「y = myfunction(u)」と入力すると、サブシステム内に 1 つの Argument Inport ブロック (u) および 1 つの Argument Outport ブロック (y) が追加されます。

Function Caller ブロックを使用して関数を呼び出す場合は、Function Caller ブロックのパラメーター [関数プロトタイプ] が、Simulink Function ブロックで指定する関数インターフェイスと完全に一致しなければなりません。この一致には、関数名および入力引数と出力引数の名前が含まれます。たとえば、この Simulink Function ブロックと Function Caller ブロックはどちらも引数名 uy を使用します。

Stateflow 遷移ラベルまたはステート ラベルから関数を呼び出す場合は、異なる引数名を使用できます。たとえば、この Simulink Function ブロックは x 引数と y 引数を使用しますが、Stateflow 遷移は x2 引数と y2 引数を使用して関数を呼び出します。

Function-Call Subsystem ブロックと Simulink Function ブロック

一般的には、信号の直接接続を使用している Function-Call Subsystem ブロックの方が Simulink Function ブロックよりも信号のトレーサビリティに優れています。一方、Simulink Function ブロックでは、モデルの階層構造を通して入力および出力信号線の経路指定を行う必要がありません。

属性Function-Call Subsystem ブロックSimulink Function ブロック
関数の実行/呼び出し方法信号線を使用してトリガー関数名を使用して参照によって呼び出す
正式な入力引数 (Argument Inport ブロック) および出力引数 (Argument Outport ブロック)なしあり
ローカル入力 (Inport ブロック) および出力 (Outport ブロック)ありあり

端子

入力

すべて展開する

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'

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

  • 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'

ブロックの特性

データ型

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

直達

いいえ

多次元信号

はいa

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

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

拡張機能

バージョン履歴

R2014b で導入

すべて展開する