Real-Time Workshop User's Guide | ![]() ![]() |
サブシステムからS-Functionブロックを作成
この節では、モデルからサブシステムを抽出する方法と、そこから再利用可能なS-Functionコンポーネントを生成する方法を説明します。
図 10-1は、信号をサブシステムに入力する簡単なモデルSourceModel
を示します。図 10-2は、サブシステムSourceSubsys
を示します。異なる幅およびサンプル時間をもつ信号は、以下の通りです。
目的は、S-Functionターゲットを使ってモデルからSourceSubsys
を抽出し、そこからS-functionブロックをビルドすることです。ユーザは、S-Functionブロックが、それを生成したサブシステムと同様に実行することを希望します。
このモデルでは、SourceSubsys
はサンプル時間と信号の幅を入力信号から継承します。S-Functionブロックが、入力幅とサンプル時間を明示的に設定しないでSourceSubsys
からビルドされる場合、新規のブロックは、それが置かれるモデルのサンプル時間と信号の幅を継承します。
しかし、この例では、S-Functionブロックは、SourceSubsys
内に存在するようにSourceModel
のプロパティを保持することを希望します。サブシステムを別のS-Functionコンポーネントとしてビルドする前に、inportのサンプル時間と幅を明示的に設定する必要があります。さらに、S-Functionコンポーネントのソルバオプションは、オリジナルのモデルと同じでなければなりません。これは、生成したS-Functionコンポーネントが、オリジナルのサブシステムと同様に機能することを保証します。
SourceSubsys
をS-Functionコンポーネントとしてビルドするには、
SourceSubsys
を空のウィンドウにコピー/ペーストします。SourceSubsys
内のinportの信号幅とサンプル時間を、オリジナルモデルの信号の信号幅およびサンプル時間と一致するように設定します。 Inport 1, Filter
は、幅が1でサンプル時間が1です。Inport 2, Xferfcn
は幅が1で、サンプル時間が0.5です。Inport 3, offsets
は幅が2で、継承されるサンプル時間が1です。SourceSubsys
に接続します。
正しい信号幅とサンプル時間がこれらの端子に伝播されます。
このオプションが選択されると、ビルドプロセスは、S-Functionコンポーネントをビルドした後に新規のモデルを作成します。新規のモデルは、S-FunctionコンポーネントとリンクされたS-Functionブロックを含みます。
図 10-3: SourceModel内に組み込まれたS-Function
S-Functionブロックを実行する速度は、オリジナルモデルよりも一般的に速くなります。この速度の差は、大規模で複雑なモデルに対してよりはっきりします。生成したS-Functionを使うことにより、モデリングプロセスの効率を向上させることができます。
![]() | 知的財産の保護 | 生成したS-Functionのチューニング可能なパラメータ | ![]() |