機体の平衡化と線形化
この例では、Simulink® Control Design™ ソフトウェアを使用して機体を平衡化および線形化する方法を示します。
目標は、昇降舵の偏差と結果的に平衡化された本体比を検出することです。これにより、設定速度で機体が飛行する際に指定の入射角が生成されます。
平衡化条件を見つけると、その平衡化条件状態の周辺にあるダイナミクスについて線形モデルを計算できます。
固定のパラメーター:
入射角 (
Theta)機体姿勢 (
U)位置
平衡化された定常状態のパラメーター:
昇降舵の偏差 (
w)本体比 (
q)
操作点の計算
モデルを開きます。
mdl = 'scdairframe';
open_system(mdl)

モデルの初期条件を使用してモデルの操作点の仕様オブジェクトを作成します。
opspec = operspec(mdl)
opspec =
Operating point specification for the Model scdairframe.
(Time-Varying Components Evaluated at time t=0)
States:
----------
x Known SteadyState Min Max dxMin dxMax
___________ ___________ ___________ ___________ ___________ ___________ ___________
(1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position
0 false true -Inf Inf -Inf Inf
-3047.9999 false true -Inf Inf -Inf Inf
(2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta
0 false true -Inf Inf -Inf Inf
(3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w
984 false true -Inf Inf -Inf Inf
0 false true -Inf Inf -Inf Inf
(4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q
0 false true -Inf Inf -Inf Inf
Inputs:
----------
u Known Min Max
_____ _____ _____ _____
(1.) scdairframe/Fin Deflection
0 false -Inf Inf
Outputs:
----------
y Known Min Max
_____ _____ _____ _____
(1.) scdairframe/q
0 false -Inf Inf
(2.) scdairframe/az
0 false -Inf Inf
モデルのどの状態が以下に該当するかを指定します。
操作点で既知
操作点で定常状態
Position の状態は既知であり、定常状態ではないことを指定します。状態値は opspec.States(1).x で指定し、モデルの初期条件から既定値を使用します。
opspec.States(1).Known = [1;1]; opspec.States(1).SteadyState = [0;0];
2 番目の状態は入射角 Theta に対応します。これは既知ですが、定常状態ではないことを指定します。位置の状態と同様に、モデルの初期条件から既定の状態値を使用します。
opspec.States(2).Known = 1; opspec.States(2).SteadyState = 0;
3 番目の状態仕様には、機体軸の角速度 U と w が含まれます。どちらの状態も操作点で既知であり、w は定常状態であることを指定します。
opspec.States(3).Known = [1 1]; opspec.States(3).SteadyState = [0 1];
これらの仕様を満たす操作点を求めます。
op = findop(mdl,opspec);
Operating point search report:
---------------------------------
opreport =
Operating point search report for the Model scdairframe.
(Time-Varying Components Evaluated at time t=0)
Operating point specifications were successfully met.
States:
----------
Min x Max dxMin dx dxMax
___________ ___________ ___________ ___________ ___________ ___________
(1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position
0 0 0 -Inf 984 Inf
-3047.9999 -3047.9999 -3047.9999 -Inf 0 Inf
(2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta
0 0 0 -Inf -0.0097235 Inf
(3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w
984 984 984 -Inf 22.6897 Inf
0 0 0 0 -1.4367e-11 0
(4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q
-Inf -0.0097235 Inf 0 1.1477e-16 0
Inputs:
----------
Min u Max
_________ _________ _________
(1.) scdairframe/Fin Deflection
-Inf 0.0014161 Inf
Outputs:
----------
Min y Max
__________ __________ __________
(1.) scdairframe/q
-Inf -0.0097235 Inf
(2.) scdairframe/az
-Inf -0.24207 Inf
モデルの線形化
計算された操作点でモデルを線形化するには、最初に線形化の入力ポイントと出力ポイントを指定します。
io(1) = linio('scdairframe/Fin Deflection',1,'input'); io(2) = linio('scdairframe/EOM',3,'output'); io(3) = linio('scdairframe/Selector',1,'output');
操作点でモデルを線形化します。
sys = linearize(mdl,op,io);
線形モデルのボード振幅応答をプロットします。
bodemag(sys)
bdclose('scdairframe')

参考
operspec | findop | linio | linearize