メインコンテンツ

MIMO システム

ジェット機の状態空間モデル

この例は、ジェット輸送機の MIMO モデルの構築法を示します。ジェット機の物理モデルへの展開の説明は長くなりますので、ここでは、状態空間方程式のみ説明します。飛行機の巡航に関する物理的な背景の詳細に関しては、航空に関する参考文献を参照してください。

マッハ 0.8、高度 40,000 フィートで飛行中のジェット モデルは、次のように表せます。

A = [-0.0558   -0.9968    0.0802    0.0415
      0.5980   -0.1150   -0.0318         0
     -3.0500    0.3880   -0.4650         0
           0    0.0805    1.0000         0];

B = [ 0.0073         0
     -0.4750    0.0077
      0.1530    0.1430
           0         0];

C = [0     1     0     0
     0     0     0     1];

D = [0     0
     0     0];

次のコマンドを使用して、LTI オブジェクトとして、状態空間モデルを作成し、状態、入力、および出力に名前を付けます。

states = {'beta' 'yaw' 'roll' 'phi'};
inputs = {'rudder' 'aileron'};
outputs = {'yaw rate' 'bank angle'};

sys_mimo = ss(A,B,C,D,'statename',states,...
'inputname',inputs,...
'outputname',outputs);

sys_mimo」と入力すると、LTI モデルを表示できます。

sys_mimo
 
a = 
                      beta          yaw         roll          phi
         beta      -0.0558      -0.9968       0.0802       0.0415
          yaw        0.598       -0.115      -0.0318            0
         roll        -3.05        0.388       -0.465            0
          phi            0       0.0805            1            0
 
 
b = 
                    rudder      aileron
         beta       0.0073            0
          yaw       -0.475       0.0077
         roll        0.153        0.143
          phi            0            0
 
 
c = 
                      beta          yaw         roll          phi
     yaw rate            0            1            0            0
   bank angle            0            0            0            1
 
 
d = 
                    rudder      aileron
     yaw rate            0            0
   bank angle            0            0
 
Continuous-time model.

モデルには、2 つの入力と 2 つの出力があります。単位は、beta (横すべり角) と phi (バンク角) に対してはラジアン、yaw (ヨー レート) と roll (ロール レート) に対してはラジアン/秒です。方向舵と補助翼の偏向角の単位も度です。

SISO の場合は、関数 tf を使用して、伝達関数表現を導出できます。

tf(sys_mimo)
 
Transfer function from input "rudder" to output...
               -0.475 s^3 - 0.2479 s^2 - 0.1187 s - 0.05633
 yaw rate:  ---------------------------------------------------
            s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674
 
                         0.1148 s^2 - 0.2004 s - 1.373
 bank angle:  ---------------------------------------------------
              s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674
 
Transfer function from input "aileron" to output...
            0.0077 s^3 - 0.0005372 s^2 + 0.008688 s + 0.004523
 yaw rate:  ---------------------------------------------------
            s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674
 
                        0.1436 s^2 + 0.02737 s + 0.1104
 bank angle:  ---------------------------------------------------
              s^4 + 0.6358 s^3 + 0.9389 s^2 + 0.5116 s + 0.003674

MIMO モデル伝達関数の作成

MIMO 伝達関数は、基本的な SISO 伝達関数の 2 次元の配列です。MIMO 伝達関数モデルを設定するには、2 つの方法があります。

  • SISO 伝達関数モデルの連結

  • cell 配列を引数とする tf の使用

SISO モデルの連結

次の単入力、2 出力の伝達関数について考えます。

H(s)=[s1s+1s+2s2+4s+5]

SISO 要素の連結で、H(s) を指定できます。次に例を示します。

h11 = tf([1 -1],[1 1]);		
h21 = tf([1 2],[1 4 5]);		

または、次も等価です。

s = tf('s')
h11 = (s-1)/(s+1);
h21 = (s+2)/(s^2+4*s+5); 

は連結されることによって H(s) を形成できます。

H = [h11; h21]

この構文は標準的な行列の連結と似ていますが、多入力多出力を含む MIMO システムに対して、簡単で読みやすくなります。

cell 配列を引数とする関数 tf の使用方法

一方、tf を使用して MIMO の伝達関数を定義するには、分子多項式と分母多項式を表す 2 つの cell 配列 (たとえば ND) が必要です。cell 配列の詳細については、cell 配列を参照してください。

たとえば、有理伝達行列 H(s) では、2 つの cell 配列 ND に、次の多項式の要素を含む行ベクトルを含めなければなりません。

N(s)=[s1s+2]D(s)=[s+1s2+4s+5]

次のように入力して、MIMO 伝達行列 H(s) を指定できます。

N = {[1 -1];[1 2]};   % Cell array for N(s)
D = {[1 1];[1 4 5]}; % Cell array for D(s)
H = tf(N,D)

このコマンドでは、以下の結果が出力されます。

Transfer function from input to output...
      s - 1
 #1:  -----
      s + 1
 
          s + 2
 #2:  -------------
      s^2 + 4 s + 5

ND は、H と同じ次元であることに注意してください。一般的な MIMO 伝達行列 H(s) に対して、cell 配列要素の N{i,j}D{i,j} は、伝達行列 H(s) の ij 番目の要素、Hij(s) の分子と分母の行ベクトル表現でなければなりません。

MIMO システムの I/O の組み合わせへのアクセス

MIMO システムの定義後に、システムの入力/出力の組み合わせを指定することにより、I/O の組み合わせへのアクセスや操作ができます。たとえば、sys_mimo が 2 入力 3 出力を含む MIMO システムとすると、

sys_mimo(3,1)

は、最初の入力を 3 番目の出力にマッピングしたサブシステムを抽出します。行のインデックスは出力を、列のインデックスは入力を選択します。同様に、

sys_mimo(3,1) = tf(1,[1 0])

は、積分器のように最初の入力と 3 番目の出力の間の伝達関数を再定義します。