Using Simulink    

代数ループ

いくつかのSimulinkブロックは、直接フィードスルー を伴う入力端子をもっています。これは、これらの入力端子のブロックに入る信号の値を知らなければ、これらのブロックの出力を計算することができないことを意味します。直接フィードスルー入力をもつブロックに対して、いくつかの例があります。

ブロックに直接フィードスルーがあるかどうかを確認するには、第9章のブロックを説明する特性表を参照してください。

代数ループ は、直接フィードスルーをもつ入力端子が同じブロックの出力と直接接続されるか、または直接フィードスルーをもつ他のブロックを通るフィードバック経路を通じて接続される場合に発生します(この一般ルールの例外については、非代数直接フィードスルーループ を参照してください)。例として、つぎの簡単なスカラループがあります。

数学的にこのループは、Sumブロックの出力は代数状態z で、これは最初の入力u からzを差し引いたもの(すなわちz = u - z) に等しくなるように制約されていることを意味しています。この単純ループの解はz = u/2 ですが、ほとんどの代数ループは検査によって解くことはできません。ベクトル代数ループは、つぎのモデルに示すように、複数の代数状態変数z1, z2 などを使って容易に作成することができます。

Algebraic Constraintブロック(Algebraic Constraintを参照)は、代数方程式をモデル化し、初期推定値を指定するのに便利です。Algebraic Constraintブロックは、その入力信号F(z) をゼロに制約し、代数状態z を出力します。このブロックは、入力でゼロを生成するのに必要な値を出力します。出力はいくつかのフィードバック経路を通って入力に影響しなければなりません。ブロックのダイアログボックスで代数状態値の初期推定値を指定することにより、代数ループソルバの効率を向上させることができます。

スカラ代数ループは、スカラ代数方程式またはF(z) = 0 形式の制約を表します。ここで、z はループ内のブロックの1つの出力であり、関数Fはループ内の他のブロックを通ってそのブロックの入力に至るまでのフィードバック経路からなります。前のページに示した簡単な1ブロックの例では、F(z) = z - (u - z) となります。上に示すベクトルループの例では、方程式はつぎのとおりです。

代数ループは、モデルに代数的な制約F(z) = 0 が含まれるときに生じます。この制約は、モデル化しようとするシステムの物理的な相互接続の結果として生じるか、あるいは特に微分代数方程式(DAE)システムをモデル化しようとしているために生じることがあります。

モデルに代数ループが含まれる場合、Simulinkは各時間ステップごとにループ解法ルーチンを呼び出します。ループソルバは繰り返し実行して(可能であれば)問題に対する解を求めます。その結果、代数ループをもつモデルは、それらをもたないモデルよりも実行が遅くなります。

F(z) = 0 を解くために、Simulinkループソルバは、弱ライン検索および偏導関数のヤコビアン行列に対するランク1の更新を伴うニュートン法を使用します。この手法はロバストですが、代数状態z に適切な初期推定を与えなければ、ループソルバが収束しないようなループを作成する可能性があります。代数ループ内のラインに対する初期推定値は、その1つのライン上に(信号に対する初期条件を指定するために通常使用する) ICブロックを配置して指定することができます。上に示したように、代数ループ内のラインに対する初期推定値を指定するもう1つの方法は、Algebraic Constraintブロックを使用することです。

ループ内の代数状態変数に対する初期推定値を指定するためには、可能であればICブロックまたはAlgebraic Constraintブロックを使用してください。

非代数直接フィードスルーループ

直接フィードスルーブロックを伴う全てのループが代数的であることは、一般的規則ですが、これに従わない例外も存在します。代数ループとならない例外とは、つぎの2点です。

トリガ付きサブシステムは、トリガイベント間で出力定数を保持します(トリガ付きサブシステムを参照)。そのため、ソルバは前の時間ステップからの出力を使って、現在の時刻での入力を計算できます。実際に、これはトリガ付きサブシステムを含むループに対してソルバが行うことで、そのため代数ソルバの必要性はなくなります。

たとえば、つぎのシステムを考えます。

このシステムは、つぎの方程式を効率的に解くことができます。

ここで、u はサブシステムにトリガが適用された最新時刻の z の値です。このシステムの出力は、システムのスコープで表示されるように階段関数になります。

ここで、前の例に示されるシステムからトリガを除去することを考えます。.

このような場合、加算器サブシステムの u2 端子での入力は、全ての時間ステップに対して、カレントの時間ステップでのサブシステム出力と等しくなります。このシステムの数学的な表現

は、数学的には正しい解が存在しないことを示します。


 ゼロクロッシングの検出 離散システムのモデル化とシミュレーション