「入力端子はループ内​にあります」というエ​ラーを解消したい。

31 views (last 30 days)
Ryunosuke Oshima
Ryunosuke Oshima on 13 Jul 2021
Answered: covao on 16 Mar 2023
plantの上部にあるIIR(時変システム)を設置したところ、以下のようなエラーが発生しました。(IIR部分を通常の非時変離散伝達関数に置き換えたときはこのエラーは発生しなかった。)
<エラーメッセージ>
'kmracs/adaptive mechanism/Subsystem2/gaussian' またはこれによって参照されるモデルには、出力の計算中に永続変数または状態変数を更新するブロックが含まれていて、1 つの代数ループではサポートされていません。これは、次のブロックをもつ代数ループです。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/plant/Switch' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/D1' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/Add' の入力端子 (2) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/kernel' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/Delay3' の入力端子 (1) はループ内にあります。 このメッセージは非表示の SignalConversion ブロックに関連しています。 このブロックはブロックの挿入、または展開の結果として、input port 1 においてブロック 'kmracs/adaptive mechanism/Delay3' に対して追加されます。. 隠されたブロックのパラメーター 'Output' は 'Signal copy' に設定されます。 問題をデバッグするためのブロックを手動で挿入することを検討してください。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/Subsystem2/Math Function' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/Subsystem2/gaussian' の入力端子 (1, 3) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/Real-Imag to Complex1' の入力端子 (1, 2) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/plant/Discrete Filter1' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/plant/Manual Switch' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/plant/Manual Switch1' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/adaptive mechanism/Product2' の入力端子 (2) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/Subtract' の入力端子 (2, 3) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/Complex to Real-Imag' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
'kmracs/Saturation' の入力端子 (1) はループ内にあります。
コンポーネント: Simulink | カテゴリ: Model エラー
問題のブロック線図
全体図
plant
adaptive mechanism
なお、後学のためにエラーの発生理由も教えていただけると、嬉しいです。

Answers (1)

covao
covao on 16 Mar 2023
英語では、下記のエラーメッセージに相当します。
Error:'*****' updates persistent or state variables while computing outputs, therefore it cannot be used in an algebraic loop.
図から代数ループの原因を特定するのは難しいですが、代数ループになっているMATLAB Function内でpersistent変数を使っていることが原因の可能性があります。
類似するエラーのケースがこちらにあります。
一般的な代数ループの回避方法については、下記の回答があります。

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!