カスタム ブロックのタイプ
MATLAB Function ブロック
MATLAB Function ブロックで MATLAB® 言語を使用して、カスタム機能を定義できます。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
カスタム化する機能をモデル作成する既存の MATLAB 関数がある。
Simulink® ブロック線図を使うより MATLAB 関数を使った方がカスタム機能のモデル作成が容易な場合。
カスタム化する機能が連続状態または離散ダイナミクス状態を含まない。
カスタム ブロックは次のタイプの MATLAB 関数ブロックの 1 つを使って MATLAB 関数から作成できます。
Interpreted MATLAB Function ブロックでは MATLAB 関数を使って SISO ブロックを定義できます。
MATLAB Function ブロックでは、組み込みプロセッサに展開できる複数の入力と出力をもつカスタム ブロックを定義できます。
Fcn ブロックでは MATLAB 式を使って単入力単出力 (SISO) ブロックを定義できます。
どのブロック タイプが有利かは、適用するモデルによって異なります。たとえば、MATLAB Function ブロックが含まれているモデルからコードを生成できますが、Fcn ブロックが含まれているモデルのコードは生成できません。
MATLAB System ブロック
MATLAB System ブロックでは、MATLAB 言語で記述された System object を使用してカスタム機能を定義できます。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
カスタム機能をモデル化する既存の System object™ がある。
Simulink ブロック線図を使うより MATLAB 言語を使った方がカスタム機能のモデル化が容易である。
カスタム機能に離散ダイナミクス状態が含まれる。
サブシステム ブロック
サブシステム ブロックはカスタム化された機能の定義をもつ Simulink ブロック線図の作成を可能にします。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
カスタム機能をモデル作成した既存の Simulink ブロック線図がある。
コードを記述するより図式を使った方がモデル作成が容易なカスタム機能。
連続的または離散的なシステム状態の関数となっているカスタム機能。
Simulink ブロックを使用してモデル作成できるカスタム機能。
必要な動作をモデル作成する Simulink サブシステムがあれば、次の方法で、それをカスタム ブロックに変換できます。
マスクによって、ブロックのコンテンツを隠してカスタム ブロック ダイアログ ボックスを提供します。
変更を禁止すると同時にブロックのコピーを更新しやすくするために、ブロックをライブラリに入れます。
詳細については、カスタム ライブラリとブロック マスクの作成を参照してください。
C Caller ブロック
C Caller ブロックでは、C コードを Simulink ブロックに統合できます。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
そのカスタム機能をモデル作成した既存の C コードがある。
C 関数がグローバル変数や静的変数に対して読み取りや書き込みを行わない。
Simulink Coverage™、Simulink Test™、および Simulink Coder™ のような、他の Simulink 機能と簡単に統合する必要がある。
動的システムをモデル化していない。
C Function ブロック
C Function ブロックでは、C コードを Simulink ブロックに統合できます。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
そのカスタム機能をモデル作成した既存の C コードがある。
ブロックから複数の C 関数を呼び出す、または C 関数を条件付きで呼び出す。
C 関数を呼び出す前後にデータを前処理および後処理する C コードを含める。
シミュレーションとコード生成に異なるコードを指定する。
連続状態をもつ動的システムをモデル化していない。
S-Function ブロック
S-Function ブロックでは、MATLAB、C、または C++ コードを使ってカスタム機能を定義できます。次の場合には、これらのブロックがカスタム ブロック作成の良い開始点になります。
そのカスタム機能をモデル化した既存の MATLAB、C、または C++ コードがある。
連続状態または離散ダイナミクス状態など S-Function API へのアクセスが必要なシステム動作を使用する。
Simulink ブロックを使用してカスタム機能をモデル作成できない。
カスタム ブロックは次のタイプの S-Function ブロックの 1 つを使って S-Function から作成できます。
Level-2 MATLAB S-Function ブロックでは、S-Function を MATLAB 言語で記述できます (Write Level-2 MATLAB S-Functionsを参照してください)。MATLAB S-Function はシミュレーション中に MATLAB デバッガーを使ってデバッグできます。
S-Function ブロックでは、S-Function を C または C++ で記述でき、さらに、C MEX ラッパーを介して既存のコードをモデルに統合することもできます (C MEX S-Function を使用したブロックの作成を参照)。
S-Function Builder ブロックは、C MEX S-Function やラッパー関数を作成して C や C++ のレガシ コードを統合するときに役立ちます (C MEX S-Function を使用したブロックの作成を参照)。
レガシ コード ツールは既存の C や C++ 関数を C MEX S-Function に変換します。(Integrate C Functions Using Legacy Code Toolを参照)。
Simulink Coder 製品内の S-Function ターゲットは、グラフィックス サブシステムから C MEX S-Function を自動的に生成します。Simulink サブシステム内にカスタム ブロックを作成する場合でも、そのブロックの最終バージョンが S-Function になる場合は、その S-Function ターゲットを使ってサブシステムを S-Function に変換できます。S-Function ターゲットの使用方法の詳細と制限は、『Simulink Coder ユーザー ガイド』のモデルまたはサブシステムの S-Function ターゲットの使用 (Simulink Coder)を参照してください。
マスクされたブロック
ブロックにマスクを追加することで、ブロックをカスタマイズできます。マスクとは、ブロックへのカスタム インターフェイスです。マスクを使用して、ブロックを以下のようなさまざまな方法でカスタマイズできます。
ブロックの外観を変更。
ブロックのユーザーに対して、一部またはすべてのパラメーターを非表示にする。
ブロック パラメーターをカスタマイズ。
マスクされたブロックの詳細については、ブロック マスクの作成を参照してください。
参考
Fcn | Interpreted MATLAB Function | C Caller | C Function | Level-2 MATLAB S-Function | MATLAB Function | MATLAB System | S-Function | S-Function Builder | Simulink Function | Subsystem