Main Content

機体の平衡化と線形化

この例では、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 番目の状態仕様には、機体軸の角速度 Uw が含まれます。どちらの状態も操作点で既知であり、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')

参考

| | |

関連するトピック