Real-Time WorkshopのS-Functionターゲット機能を利用してサブシステムをS-Function化し、シミュレーションを実行するとS-Function化前には発生しなかった代数ループが発生します。
17 次查看(过去 30 天)
显示 更早的评论
Real-Time WorkshopのS-Functionターゲット機能を利用してサブシステムをS-Function化し、シミュレーションを実行するとS-Function化前には発生しなかった代数ループが発生します。
采纳的回答
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Electromechanical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!