ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデルの線形化

モデルの線形化について

Simulink® 製品は、関数 linmodlinmod2、および dlinmod を提供して、状態空間行列 "A""B""C"、および "D" 型の線形モデルを抽出します。状態空間行列は、次のように線形の入出力関係を記述します。

x、u、y はそれぞれ状態、入力、出力ベクトルです。たとえば、次のモデルは lmod と呼びます。

このシステムの線形モデルを抽出するには、次のコマンドを入力します。

[A,B,C,D] = linmod('lmod')

A =
   -2    -1    -1
    1     0     0
    0     1    -1
B =
    1
    0
    0
C =
    0     1     0
    0     0    -1
D =
    0
    1

入出力は、Ports & Subsystems ライブラリの Inport および Outport ブロックを使用して定義します。Sources ブロックと Sinks ブロックは、入力と出力としては機能しません。Inport ブロックは、Sum ブロックを使用して Source のブロックと併用できます。データが状態空間型であるか、LTI オブジェクトに変換されると、関数をControl System Toolbox™ 製品に適用してさらに解析できます。

  • LTI オブジェクトへの変換

    sys = ss(A,B,C,D);
    
  • ボード位相と振幅周波数プロット

    bode(A,B,C,D) or bode(sys)
    
  • 線形化した時間応答

    step(A,B,C,D) or step(sys)
    impulse(A,B,C,D) or impulse(sys)
    lsim(A,B,C,D,u,t) or lsim(sys,u,t)
    

Control System Toolbox 製品と Robust Control Toolbox™ 製品では、他の関数を使用して線形制御システムを設計できます。

モデルが非線形の場合、線形化されたモデルを抽出する操作点を選択できます。linmod の追加の引数が操作点を指定します。

[A,B,C,D] = linmod('sys', x, u)

離散システムや連続系と離散系の混在するシステムでは、線形化に関数 dlinmod を使用します。この関数の呼び出し構文は、2 番目の右辺引数に線形化を実行するサンプル時間が含まれていなければならない点を除いて、linmod と同じです。

参照先モデルの線形化

Model ブロックが含まれた Simulink 環境から線形モデルを抽出するには、linmod を使用します。

    メモ:   通常モードでは、linmod コマンドはブロック別の線形化アルゴリズムを参照先モデルのブロックに適用します。モデル ブロックがアクセラレータ モードの場合、linmod コマンドは数値摂動法を使用して参照先モデルを線形化します。マルチレートのモデル ブロックをアクセラレータ モードで線形化する機能には制限があるため、参照先モデルを使用して線形化する場合は、モデル ブロックが参照するすべてのモデルにノーマル モードのシミュレーションを使用する必要があります。ブロック別の線形化アルゴリズムについては、Simulink Control Design™ のドキュメンテーションを参照してください。

たとえば、f14 モデル mdlref_f14mdlref_f14 を考えてみましょう。Aircraft Dynamics Model ブロックはモデル mdlref_dynamicsmdlref_dynamics を参照します。

mdlref_f14 モデルを線形化するには、次のように最上位の mdlref_f14 モデルで linmod コマンドを呼び出します。

[A,B,C,D] = linmod('mdlref_f14')

その結果の状態空間モデルは、参照先モデルを含む完全な f14 モデルです。

Model ブロックが含まれているモデルの場合は、状態と入力操作点を使用して linmod を呼び出すことができます。入力操作点を使用すると、状態ベクトル x は最上位モデルとその他の参照先モデルの合計状態ベクトルを参照します。状態ベクトルは、構造体の形式を使用して入力しなければなりません。完全な状態ベクトルを取得するには、次の関数を呼び出します。

x = Simulink.BlockDiagram.getInitialState(topModelName)

'v5' アルゴリズムを使用した線形化

'v5' 引数を使用して linmod コマンドを呼び出すと、MATLAB® ソフトウェア Version 5.3 より前に作成された摂動アルゴリズムが起動します。このアルゴリズムを使用すると、モデルのあらゆる状態と入力の摂動の実行に使用される摂動の値も指定できます。

[A,B,C,D]=linmod('sys',x,u,para,xpert,upert,'v5')

Derivative または Transport Delay ブロックが含まれたモデルを、'v5' オプションの linmod を使用して線形化する方法は、困難な場合があります。線形化の前に、問題を回避するために特別設計されたブロックに置き換えてください。これらのブロックは、Simulink Extras ライブラリ内のLinearization サブライブラリにあります。

Extrasライブラリには、[Blocksets & Toolboxes] アイコンを開いてアクセスします。

  • Derivative ブロックの場合は、Switched derivative for linearization を使用します。

  • Derivative ブロックの場合は、Switched derivative for linearization を使用します (このブロックを使用するには、Control System Toolbox 製品が必要です)。

Derivative ブロックを使用する場合は、他のブロックに導関数の項を組み入れることもできます。たとえば、Transfer Fcn ブロックと直列の Derivative ブロックがある場合、次の形式の 1 つの Transfer Fcn ブロックを使用した方がうまく実装できますが、これは常に可能であるとは限りません。

この例では、図の左側のブロックを右側のブロックに置き換えることができます。

この情報は役に立ちましたか?