このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
カスタムブロックを作成する場合,次のことを考慮してください。
そのブロックが連続または離散の状態動作をモデル化するか。
シミュレーションの性能は重要か。
カスタムブロックを含むモデルのコードを生成する必要があるか。
この表は,各カスタムブロックタイプにおける3つの懸念事項への対処を示しています。
モデル化における考慮事項
カスタム ブロック タイプ | 状態ダイナミクスのモデル化 | シミュレーションの性能 | コード生成 |
---|---|---|---|
解释MATLAB函数 | いいえ | 高速ではない | サポートなし |
2级MATLAB函数 | はい | 高速ではない | 薄层色谱ファイルが必要 |
MATLAB函数 | いいえ | 高速 | サポートあり、ただし例外あり |
MATLAB系统 | はい | 高速 | サポートあり、ただし例外あり |
系统函数 | はい | 高速 | 薄层色谱ファイルまたは非インライン S函数のサポートが必要 |
C呼叫者 | いいえ | 高速 | サポートあり |
s函数生成器 | はい | 高速 | サポートあり |
金宝appSimulink函数 | はい | 高速 | サポートあり |
子系统 | はい | 高速 | サポートあり |
カスタム ブロックの詳細設計については次を考慮してください。
複数の入力端子と出力端子が必要なカスタム ブロックかどうか。
金宝app®エンジンとやり取りするコールバック メソッドは何か、また、どのカスタム ブロックであればそれらコールバック メソッドのすべて、またはサブセットを実装できるようになるか。
金宝app模拟ブロック線図の更新速度に対するカスタム ブロックの影響が重要かどうか。
現在の出力を計算するために以前の出力の一部またはすべてを要求するブロックの,状態動作をモデル化する必要があります。詳細については,状態変数を参照してください。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数,C呼叫者 | 状態動作をモデル化できない。 |
MATLAB函数 | 持久的 変数を使用することで離散状態をモデル化できる。 |
二级MATLAB®系统函数 | ContStates 実行時オブジェクト メソッドまたは德沃克 実行時オブジェクト メソッドをブロック コールバック メソッドと組み合わせて使用することで連続状態動作と離散状態動作の両方をモデル化できる。サポートされるメソッドのリストについては、编写二级MATLAB S函数の二级MATLAB S函数回调方法を参照。 |
MATLAB系统 | 系统对象のDiscreteState プロパティをブロックコールバックメソッドと組み合わせて使用することで離散状態動作をモデル化できる。このブロックは系统对象™メソッドを次のコールバックメソッドに対して使用する。计算输出 (斯捷潘普 、输出 )、mdlUpdate (updateImpl )、临床条件 (重置impl )、mdlStart (setupImpl )、mdlTerminate (释放 )。詳細については、系统对象とはを参照。 |
C墨西哥人s函数,s函数生成器 | ブロック コールバック メソッドを組み合わせて使用することで連続状態動作と離散状態動作の両方をモデル化できる。詳細については、C-MEX S函数的回调方法を参照。 |
金宝appSimulink函数 | エンジンと直接通信する。連続および離散 金宝app模拟ブロック ライブラリにある適切なブロックを使用することで状態動作をモデル化できる。異なる呼び出し元からこの関数が複数回呼び出される場合,状態値はそれらの呼び出しの間でも維持される。詳細については,複数のサイトからの仿金宝app真软件功能ブロックの呼び出しを参照してください。 |
子系统 | エンジンと直接通信する。連続および離散 金宝app模拟ブロック ライブラリにある適切なブロックを使用することで状態動作をモデル化できる。 |
ほとんどのアプリケーションについて、すべてのカスタム ブロック タイプは十分なシミュレーション性能を提供します。実性能の表示を得るには、金宝app模拟プロファイラーを使用してください。詳細については、プロファイラーによるパフォーマンスデータの取得を参照してください。
性能表示の 2.つのカテゴリは、インターフェイス コストとアルゴリズム コストです。インターフェイス コストは、データを 金宝app模拟エンジンからブロックに移動するのに要する時間です。アルゴリズム コストは、ブロックで実装したアルゴリズムを実行するのに要する時間です。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数 | インターフェイスの関係で,性能はやや低速ながら,MATLAB関数と同じアルゴリズムコストになります。 ブロック データ (入力や出力など) が解释MATLAB函数ブロックとの間でやり取りされるとき,金宝app仿真软件エンジンはこのデータをMATLAB配列にパッケージ化します。このパッケージ化には時間がかかり,通信時に一時的にメモリ要求が増加します。このインターフェイスでフレームや配列のような大量のデータをやり取りすると,性能がかなり低速になることがあります。 データが変換された後は,MATLAB実行エンジンがアルゴリズムを実行します。その結果,アルゴリズムコストはMATLAB関数と同じになります。 |
2级MATLAB函数 | 解释MATLAB函数ブロックと同じアルゴリズムコストが発生しますが,インターフェイスコストはわずかながら高くなります。MATLAB的s函数は複数の入力と出力を扱うので,解释MATLAB函数ブロックよりパッケージが複雑です。さらに、金宝app模拟エンジンは実装したブロック メソッドごとに MATLAB実行エンジンを呼び出しますが、解释MATLAB函数ブロックは输出 メソッドに対してのみMATLAB実行エンジンを呼び出します。 |
MATLAB函数 | コードを生成してシミュレーションを実行するので、コストは他の 金宝app模拟組み込みブロックと同じになります。 このブロックのアルゴリズム コストの解析は、ブロックの実装方法のせいで難しくなっています。平均すると、このブロックの関数と MATLAB関数はほぼ同じ速度で実行されます。 MATLAB実行エンジンを呼び出すために 外部编码器 を使用するコードがMATLAB函数ブロックにある場合、matlabs函数または解释MATLAB函数ブロックで発生するすべてのコストが発生します。MATLAB実行エンジンがMATLAB函数ブロックから呼び出されると、意図しない実行を避けるために、確認の警告が出ます。アルゴリズムコストを削減するには,すべてのMATLAB函数ブロックのデバッグを無効にします。 |
MATLAB系统 | インタープリター型実行モードでは、モデルが MATLAB実行エンジンを使用してブロックをシミュレートするため、性能は2级MATLAB函数に類似します。コード生成モードでは、モデルが生成コードを使用してブロックをシミュレートするため、性能はMATLAB函数に類似します。詳細については、この表のMATLAB函数の項目を参照してください。 |
C呼叫者 | モデルを初めてシミュレートするときは,カスタムコードの解析とビルドが原因で,実行速度が遅くなる可能性があります。最初のコンパイル後にシミュレーションを高速化するには,[コンフィギュレーションパラメーター]から,コンパイルを高速化するために(高速なビルド]を選択し,シミュレーションを高速化するために[高速に実行]を選択します。 |
C墨西哥人s函数 | コンパイルされたコードを使ってシミュレーションを実行するので、コストは 金宝app模拟組み込みブロックと同じになります。アルゴリズム コストは S函数の複雑度によって異なります。 |
s函数生成器 | このブロックは指定した仕様と Cコードのみから S函数をビルドします。モデルで生成された S函数のラッパーとしてこのブロックを使用することもできます。C-MEX S-函数と比較すると、このブロックのアルゴリズム コストはラッパーからのみ発生します。 |
金宝appSimulink函数子系统 | ライブラリに含まれている場合,ブロックが通常のサブシステムとしてモデル内に存在する場合に比べて,インターフェイスやアルゴリズムの追加コストは発生しません。 性能は,サブシステム内で実行されるアルゴリズムの複雑度に比例します。サブシステムがライブラリの中にある場合,オーバーヘッドはブロック線図がはじめて更新されるときやシミュレーションの準備をするときに,まだ読み込まれていないライブラリを仿金宝app真软件が読み込むときに発生します。参照されているすべてのライブラリブロックが変更されていない場合,仿金宝app真软件はその後ライブラリを再読み込みしません。モデルがライブラリを使用しなかった場合よりも,モデルのコンパイルは速くなります。 |
モデルがより大きなシステムの一部である場合,コード生成が必要です。カスタムブロックタイプの中には金宝app仿真软件编码器™でコード生成をサポートしないものがあります。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数 | コード生成をサポートしない。 |
C呼叫者 | コード生成をサポートします。 |
2级MATLAB函数 | 目标语言编译器(TLC)関数を使って実装されたアルゴリズムに対してのみコードを生成します。アクセラレータモードとエクスターナルモードのシミュレーションでは,アルゴリズムをTLCで実装することなくs函数をMATLAB実行エンジンを呼び返してインタープリターで実行するようにできます。MATLAB的s函数が模拟取景设备 である場合,金宝app仿真软件编码器製品はコード生成時に自動的にそのブロックを除外します。 |
MATLAB函数,MATLAB系统 | コード生成をサポートします。ただし,ブロックがMATLAB実行エンジンを呼び出す場合,MATLAB実行エンジンの呼び出しがブロックの出力に影響しない場合にのみ,ビルドに金宝app仿真软件编码器製品が使用されます。この条件下では,金宝app仿真软件编码器製品は生成された Cコードからこれらの呼び出しを除外します。この機能によって、組み込みコードを生成する場合でも可視化コードをそのまま残すことができます。 |
C墨西哥人s函数,s函数生成器 | いずれもコード生成をサポートします。
詳細については,S函数与代码生成(金宝appSimulink编码器)を参照してください。 |
金宝appSimulink函数 | コード生成をサポートします。 |
子系统 | サブシステムに含まれるブロックがコード生成をサポートする限り,コード生成をサポートします。詳細については,子系统函数的控制生成(嵌入式编码器)を参照してください。 |
次のタイプのカスタムブロックでは,複数の入力端子と出力端子がサポートされます。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数 | サポートされる入力端子と出力端子はそれぞれ 1.つのみ。 |
MATLAB函数 | バス信号を含めて、複数の入力端子と出力端子をサポート。詳細については、構造体の入出力とバス信号とのインターフェイスを参照してください。 |
MATLAB系统 | バス信号を含めて、複数の入力端子と出力端子をサポート。さらに,getNumInputs メソッドおよびgetNumOutputs メソッドを使用して,系统对象のプロパティに基づいて入力端子と出力端子の数を変更できる。 |
C呼叫者 | バス信号を含めて、複数の入力端子と出力端子をサポート。複素数データ型はサポートされていません。 |
MATLAB二级s函数,C MEX s函数,s函数生成器 | 複数の入力端子と出力端子をサポート。さらに,ユーザー定義のパラメーターに基づいて入力端子と出力端子の数を変更できる。C MEX S-Function およびs函数生成器はバス信号をサポートします。 |
金宝appSimulink函数 | バス信号を含めて、複数の入力端子と出力端子をサポート。 |
子系统 | バス信号を含めて、複数の入力端子と出力端子をサポート。さらに、ユーザー定義のパラメーターに基づいて入力端子と出力端子の数を変更できる。詳細については、自己修正可能なリンク付きサブシステムを参照してください。 |
金宝app仿真软件は毎回のシミュレーションの前と,ユーザーに要求されたときにブロック線図を更新します。ブロックごとに,ブロック線図の更新プロセスで何らかのオーバーヘッドが発生します。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数 | ブロック線図の更新コストは低コストです。 |
MATLAB函数,C呼叫者 | コードの生成を通してシミュレーションを行います。したがって,ブロックがはじめて更新されるときはかなり時間がかかる場合があります。コードの生成はインクリメンタルなので,ブロックとそれに接続する信号が変更されていないときは,金宝app仿真软件はブロックを繰り返し更新しません。 |
MATLAB系统 | ブロック線図の更新でコードを生成しないため、MATLAB函数より高速。コードの生成はインクリメンタルなので,ブロックとそれに接続する信号が変更されていないときは,金宝app仿真软件はブロックを繰り返し更新しません。 |
C MEX s -函数,MATLAB二级s -函数 | ブロック線図の更新で実行されるメソッドをオーバーライドするときにのみ,他の仿金宝app真软件ブロックより大きなオーバーヘッドが発生します。メソッドが複雑になると,ブロック線図を更新する時間が目に見えて長くなります。ブロック線図を更新するときに実行されるメソッドのリストは,金宝appSimulink引擎与C S函数的交互のプロセスの図解を参照してください。ブロック線図を更新するとき、モデルの初期化の段階で 金宝app模拟は mdlStartまでのすべての関連メソッドを呼び出しますが、mdlStart はその中に含まれません。 |
金宝appSimulink功能,子系统 | 速度は、サブシステム内で実行されるアルゴリズムの複雑度に比例します。サブシステムがライブラリの中にある場合、オーバーヘッドはブロック線図がはじめて更新されるときやシミュレーションの準備をするときに、まだ読み込まれていないライブラリを 金宝app模拟が読み込むときに発生します。参照されているすべてのライブラリ ブロックが変更されていない場合、模拟はその後ライブラリを再読み込みしません。モデルがライブラリを使用しない場合よりも、モデルのコンパイルは速くなります。 |
金宝app仿真软件ブロックは(仿真软件功能ブロックを除く)ブロックの動作を完全に指定するブロックコールバックメソッドを介して仿真软件エンジンと通信します。各カスタムブロックタイプに異なるセットのコールバックメソッドを実装できます。ブロックが仿金宝app真软件エンジンとやり取りする方法については,金宝appSimulink引擎与C S函数的交互を参照してください。この表ではS函数回调方法の名前を同等と見なして使用します。
カスタム ブロック タイプ | メモ |
---|---|
解释MATLAB函数,MATLAB函数,C呼叫者 | いずれも,入力された値から出力値を計算するために计算输出 メソッドを作成する。これらのブロックの1つを使って他のコールバックメソッドを実装することはできないため,状態動作をモデル化できない。 |
2级MATLAB函数 | コールバックメソッドのより大きなサブセットを実装でき,それには連続状態および離散状態のモデル化に使用できるメソッドが含まれる。サポートされるメソッドのリストについては,编写二级MATLAB S函数の二级MATLAB S函数回调方法を参照。 |
MATLAB系统 | 系统对象メソッドを次のコールバック メソッドに対して使用する。计算输出 (斯捷潘普 、输出 )、mdlUpdate (updateImpl )、临床条件 (重置impl )、mdlStart (setupImpl )、mdlTerminate (释放 )。詳細については、金宝app模拟エンジンと 系统对象メソッドとの相互作用を参照。 |
C墨西哥人s函数 | コールバック メソッドの完全なセットを実装できる。 |
s函数生成器 | 计算输出 、mdlDerivatives ,およびmdlUpdate を実装できる。 |
金宝appSimulink函数 | スタンドアロンの関数としてパッケージ化される。この関数の呼び出し元はすべて,呼び出し元の場所に基づくコールバックメソッドのいずれかの一部になる。 |
子系统 | エンジンと直接通信する。連続および離散 金宝app模拟ブロック ライブラリにある適切なブロックを使用することで状態動作をモデル化できる。 |
matlabs函数とコード生成用の MATLAB関数には根本的な違いがあります。
金宝app仿真软件编码器製品はMATLAB函数とコード生成用MATLAB関数の両方のコードを生成できます。ただし,MATLAB函数にはコード生成にターゲット言語のコンパイラ(TLC)ファイルが必要ですが,コード生成用MATLAB関数には必要ありません。
MATLAB的s函数は任意のMATLAB関数を使用できますが,コード生成用MATLAB関数はMATLAB言語のサブセットです。サポートされているコード生成用の関数のリストについては,C/C++コードの生成でサポートされている関数およびオブジェクトを参照してください。
MATLAB的s函数は離散状態と連続状態のダイナミクスをモデル化できますが,コード生成用MATLAB関数は状態ダイナミクスをモデル化できません。
コールバックと MATLABグラフィックスを使ってカスタム ブロックの機能を拡張できます。
ブロックのコールバックは、シミュレーションの特定の時点でユーザー定義の動作を実行します。たとえば、コールバックはシミュレーションの前にデータを MATLABワークスペースに読み込んだり、シミュレーションの終わりにシミュレーション データのグラフを生成したりできます。ブロック コールバックはどのカスタム ブロック タイプでも使用できます。使用できるコールバックの一覧と使用方法の詳細は、ブロックのコールバックの指定を参照してください。
软件设计师(MATLABのグラフィカルユーザーインターフェイス開発環境)はカスタムユーザーインターフェイスを手軽に作成するツールを提供します。程序设计师の使用方法の詳細については,アプリの作成を参照してください。
解释MATLAB函数|2级MATLAB函数|MATLAB函数|MATLAB系统|系统函数|s函数生成器|金宝appSimulink函数|子系统