Main Content

正確な線形化アルゴリズム

Simulink® Control Design™ ソフトウェアは、ブロックごとの手法を使用してモデルを線形化します。Simulink モデル内の各ブロックを個別に線形化し、これらのブロックの線形化を組み合わせる方法でシステム全体の線形化を行います。

ソフトウェアは操作点から各ブロックの入力と状態のレベルを判断し、各ブロックからこれらのレベルに対するヤコビアンを要求します。

ブロックによっては、ソフトウェアが解析的な線形化を計算できないことがあります。以下に例を示します。

  • 一部の非線形性にはヤコビアンが定義されていません。

  • ステート チャートや Triggered Subsystem など、一部の離散ブロックはゼロに線形化される傾向があります。

  • 一部のブロックはヤコビアンを実装しません。

  • S-Function ブロックや MATLAB Function ブロックなどのカスタム ブロックには解析的なヤコビアンがありません。

そのようなブロックについては、想定される線形化がわかっている場合にはカスタム線形化を指定できます。カスタム線形化を指定しない場合、ソフトウェアはブロックの入力と状態を摂動させて、その摂動への応答を測定することにより線形化を検出します。詳細については、個々のブロックの摂動を参照してください。

連続時間モデル

Simulink Control Design ソフトウェアを使用すると、連続時間の非線形システムを線形化できます。その結果、状態空間形式の線形化モデルが生成されます。

連続時間の場合、非線形システムの状態空間方程式は次のようになります。

x˙(t)=f(x(t),u(t),t)y(t)=g(x(t),u(t),t)

ここで、x(t) はシステムの状態、u(t) は入力信号、y(t) は出力信号です。

線形化されたモデルを記述するには、操作点の中央に位置する状態、入力、出力の変数の新しいセットを定義します。

δx(t)=x(t)x0δu(t)=u(t)u0δy(t)=y(t)y0

操作点におけるシステムの出力は、y(t0)=g(x0u0t0)=y0 です。

線形化された状態空間方程式を、δx(t)、δu(t)、および δy(t) を使用して表すと、次のようになります。

δx˙(t)=Aδx(t)+Bδu(t)δy(t)=Cδx(t)+Dδu(t)

ここで、ABC、および D は定数係数行列です。これらの行列は、操作点で評価された、システムのヤコビアンです。

A=fx|t0,x0,u0B=fu|t0,x0,u0C=gx|t0,x0,u0D=gu|t0,x0,u0

非線形システムへの線形時不変近似は、t=t0x(t0)=x0、および u(t0)=u0 における操作点近隣の領域で有効になります。つまり、システム状態の値である x(t) と入力である u(t) が操作点に十分に近接している場合、システムはほぼ線形に動作します。

線形化されたモデルの伝達関数は、ラプラス変換関数 δy(t) とラプラス変換関数 δu(t) の比です。

Plin(s)=δY(s)δU(s)

マルチレート モデル

Simulink Control Design ソフトウェアを使用すると、マルチレートの非線形システムを線形化できます。その結果、状態空間形式の線形化モデルが生成されます。

"マルチレート モデル" には、異なるサンプリング レートをもつ状態が含まれています。マルチレート モデルでは、状態変数の値は異なる時間と異なる周波数で変わります。これらの変数は一部、連続的に変化することがあります。

非線形のマルチレート システムの一般的な状態空間方程式は次のとおりです。

x˙(t)=f(x(t),x1(k1),,xm(km),u(t),t)x1(k1+1)=f1(x(t),x1(k1),,xm(km),u(t),t)xm(km+1)=fi(x(t),x1(k1),,xm(km),u(t),t)y(t)=g(x(t),x1(k1),,xm(km),u(t),t)

ここで、k1、...、km は整数値、tk1、...、tkm は離散時間です。

この非線形システムをシングルレートの離散モデルとして近似する線形化方程式は次のとおりです。

δxk+1Aδxk+BδukδykCδxk+Dδuk

線形化モデルのレートは一般的に、サンプル時間の最小公倍数であり、通常、最も遅いサンプル時間です。

詳細については、マルチレート モデルの線形化を参照してください。

個々のブロックの摂動

Simulink Control Design ソフトウェアは、線形化が事前にプログラムされていないブロックを、数値摂動法を用いて線形化します。ブロックの線形化は、ブロックの操作点に関するブロックの状態および入力を数値的に摂動することにより計算されます。

ブロックの摂動アルゴリズムは、小規模な "摂動" を線形ブロックに適用し、この摂動に対する応答を測定します。摂動値と操作点の値の既定の差異は 105(1+|x|) です。ここで、"x" は操作点の値です。この摂動と応答を使用し、このブロックの線形状態空間が計算されます。個々のブロックの摂動レベルを変更する方法の詳細については、線形化時に摂動するブロックの摂動レベルの変更を参照してください。

通常、状態空間形式による連続時間の非線形 Simulink ブロックは、次によって与えられます。

x˙(t)=f(x(t),u(t),t)y(t)=g(x(t),u(t),t).

これらの方程式では、x(t) はブロックの状態を表し、u(t) はブロックの入力を表し、y(t) はブロックの出力を表します。

このシステムの線形化モデルは、操作点 t=t0, x(t0)=x0, u(t0)=u0 および y(t0)=g(x0,u0,t0)=y0 の周りの小さい領域で有効です。

線形化されたブロックを記述するには、操作点の中央に位置する状態、入力および出力の変数の新しいセットを定義します。

δx(t)=x(t)x0δu(t)=u(t)u0δy(t)=y(t)y0

これらの新しい変数を使った線形化状態空間方程式は、次のように表されます。

δx˙(t)=Aδx(t)+Bδu(t)δy(t)=Cδx(t)+Dδu(t)

非線形システムへの線形時不変近似は、操作点の周囲の領域で有効です。

この線形化されたモデルの状態空間行列 ABC、および D は、ブロックのヤコビアンを表します。

線形化のときに状態空間行列を計算するために、次の処理が実行されます。

  1. 状態および入力を一度に 1 つずつ摂動し、δx˙ と δy を計算することによってこの摂動に対するシステムの応答を測定します。

  2. 摂動と応答を使用して状態空間行列を計算します。

    A(:,i)=x˙|xp,ix˙oxp,ixo,B(:,i)=x˙|up,ix˙oup,iuoC(:,i)=y|xp,iyoxp,ixo,D(:,i)=y|up,iyoup,iuo

ここで

  • xp,i は状態ベクトルで、その i 番目のコンポーネントが操作点の値から摂動されます。

  • xo は、操作点における状態ベクトルです。

  • up,i は入力ベクトルで、その i 番目のコンポーネントが操作点の値から摂動されます。

  • uo は、操作点における入力ベクトルです。

  • x˙|xp,i は、xp,i, uo における x˙ の値。

  • x˙|up,i は、up,i, xo における x˙ の値。

  • x˙o は、操作点における x˙ の値。

  • y|xp,i は、xp,i, uo における y の値。

  • y|up,i は、up,i, xo における y の値。

  • yo は、操作点における y の値です。

ユーザー定義ブロック

S-Function および MATLAB Function ブロックなどのすべてのユーザー定義ブロックは線形化に対応しています。これらのブロックは数値摂動法を使用して線形化されます。

ユーザー定義ブロックは、非浮動小数点精度のデータ型を使用している場合は線形化されません。詳細については、非浮動小数点の信号または状態をもつブロックの線形化を参照してください。

ルックアップ テーブル

通常のルックアップ テーブルは数値的に摂動されます。事前ルックアップ テーブルには、事前にプログラムされた (正確な) ブロックごとの線形化が含まれています。