Real-Time WorkshopのS​-Functionタ​ーゲット機能を利用し​てサブシステムをS-​Function化し​、シミュレーションを​実行するとS-Fun​ction化前には発​生しなかった代数ルー​プが発生します。

10 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2009 年 6 月 29 日
Real-Time WorkshopのS-Functionターゲット機能を利用してサブシステムをS-Function化し、シミュレーションを実行するとS-Function化前には発生しなかった代数ループが発生します。

採用された回答

MathWorks Support Team
MathWorks Support Team 2009 年 6 月 29 日
サブシステムを含むモデルのシミュレーションを行う場合、Simulinkはサブシステムの境界を越えて、ブロックの実行順序を決定します。
一方、S-Functionターゲット機能を利用してサブシステムをS-Function化した場合、そのサブシステムは1個のブロックになります。そのため、サブシステムの境界を越えて、実行順序を決定することはできません。したがって、サブシステムをS-Function化した場合、オリジナルのモデルと処理順序が変わり、代数ループが発生する場合や結果が異なる場合があります。
この現象を回避するには、次の手順でサブシステムをAtomic化してからS-Function化を行います。
サブシステムをAtomic化すると、そのサブシステムは単一のブロックとして扱われるので、S-Function化した後と同じ処理順序となります。
1) サブシステムを右クリックして「Subsystemのパラメータ」を選択し、表示されるダイアログで「Atomicサブシステムとして扱う」にチェックを入れます。
2) シミュレーションを行い、代数ループが発生する場合は「代数ループの発生を最小限に抑える」にチェックを入れます。
3) さらに代数ループが発生する場合は、下記にある関連ソリューション(Simulinkモデルのシミュレーション中に、’代数ループ(algebraic loop)’に関する警告が出力されました。代数ループとは何ですか?また、その回避方法はありますか?) の方法で回避します。
4) 代数ループが発生しなくなったら、S-Function化を行います。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeElectromechanical についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!