Main Content

疑似代数ループ

Atomic Subsystem または Model ブロックによって Simulink が代数ループを検出する設定になっているときは、サブシステムの内容に入力から出力への直達が含まれていない場合であっても、"疑似代数ループ" が発生します。Atomic Subsystem を作成するときは、すべての Inport ブロックは直達となるため、代数ループが発生します。

まず、含められたモデルで考えてみましょう。このモデルの表すプラントのシンプルな比例制御は、次の式で表されます。

$$ G(s) = \frac{1}{s^2+2s+1}$$

これは、次のような状態空間形式で書き直すことができます。

$$
\dot{x} = \left[
 \begin{array}{cc}
 -2 & -1 \\
1 & 0
 \end{array}
 \right]
+ \left(
\begin{array}{c}
0\\1
\end{array}
\right)
$$

$$
y = \left[\begin{array}{cc}0&1\end{array}\right]
$$

この方程式は、代数変数も直達ももたず、代数ループももちません。

以下の手順に従って、モデルを変更します。

  1. サブシステムに Controller ブロックと Plant ブロックを含めます。

  2. Subsystem ダイアログ ボックスで、[Atomic サブシステムとして扱う] を選択してサブシステムを Atomic にします。

  3. [モデル コンフィギュレーション パラメーター] の [診断] ペインで、[代数ループ] パラメーターを [error] に設定します。

このモデルをシミュレーションすると、Atomic Subsystem 内のパスは直達ではありませんが、サブシステムが直達であるために、代数ループが発生します。シミュレーションは代数ループ エラーで停止します。