メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

フィードバック制御設計で使用するためのプラント モデルの線形化

この例では、油圧プラント モデルを線形化して、制御システムの安定性の解析と設計をサポートする方法を示します。

使用できるソフトウェアに合わせて、この例の該当する節を使用して各種の線形化手法と解析手法を調べてください。

モデルの探求

デジタル位置コントローラーを備えた油圧アクチュエータのモデル例を開くには、以下を入力します。

openExample('simscape/HydraulicActuatorWithDigitalPositionControllerExample')

このモデルは、閉ループ回路で動作する、複動式シリンダーを備えた双方向バルブを表します。Hydraulic Actuator サブシステムをダブルクリックして、モデル コンフィギュレーションを確認します。

コントローラーは、連続時間伝達関数に伝達遅延 (離散時間で実装したときの計算時間とゼロ次ホールド) を加算したものとして表されます。線形化 I/O ポイントのサブシステムを使用すると、フィードバック制御ループを簡単に切断および復元できます。そのためには、ベース ワークスペース変数 ClosedLoop を、それぞれ 0 と 1 に設定します。

モデルの注釈で Linearize ハイパーリンクをクリックすると、小信号周波数応答をすばやく生成し、表示することができます。周波数応答を生成する MATLAB® スクリプトを表示するには、その次に注釈で示されたハイパーリンク see code をクリックします。このドキュメンテーションでは、予備知識と、お持ちのソフトウェアに応じた線形化の代替方法を説明します。

通常、自明でない線形化入出力モデルを取得して周波数応答を生成するには、モデルレベルの入力と出力を指定しなければなりません。デジタル位置コントローラーを備えた油圧アクチュエータのモデルは、線形化の方法によって、2 つの方法でこの要件に対応します。

  • Simulink®linmod を使用して線形化を行うには、最上位またはモデルレベルで入力端子と出力端子が必要です。このモデルにはこれらの端子があり、In1Out1 というマークが付けられています。

  • Simulink Control Design™ ソフトウェアでは、線形化ポイントを用いて入力および出力信号線を指定する必要があります。指定される信号線は Simscape™ の物理的接続線ではなく、Simulink の信号線でなければなりません。このモデルには、そのような線形化ポイントが指定されています。Simulink Control Design ソフトウェアによる平衡化と線形化の詳細については、その製品のドキュメンテーションを参照してください。

Load Position スコープを開き、標準の閉ループ コントローラーの構成でモデルをシミュレートします。

双方向バルブが開いたときに、モデルが 2 ~ 3 秒間に準線形の定常状態応答をもつことがわかります。したがって、2.5 秒での状態は、線形化に適した操作点です。

コントローラーを使用した平衡化と Simulink 関数 linmod を使用した線形化

  1. コントローラーのパラメーターを設定します。

    コントローラーの離散時間実装のサンプル時間を指定するには、MATLAB コマンド ウィンドウに以下を入力します。

    ts = 0.001;

    連続時間コントローラーの分子と分母を指定するには、以下を入力します。

    num = -0.5;
    den = [1e-3 1];
  2. 操作点を探すには、閉ループを実行し、カスタム双方向バルブが開いているときの、2.5 秒での状態を選択します。

    フィードバック ループを閉じるには、以下を入力します。

    assignin('base','ClosedLoop',1);

    モデルをシミュレートして、状態ベクトル X と入力ベクトル U の形で操作点情報を保存するには、以下を入力します。

    [t,x,y] = sim('HydraulicActuatorWithDigitalPositionController');
    idx = find(t>2.5,1);
    X = x(idx,:); U = y(idx);
  3. Simulink 関数 linmod を使用して、モデルを線形化します。

    フィードバック ループを切断するには、次のように入力します。

    assignin('base','ClosedLoop',0);

    モデルを線形化するには、次のように入力します。

    [a,b,c,d] = linmod('HydraulicActuatorWithDigitalPositionController',X,U);

    次のように入力してフィードバック ループを閉じます。

    assignin('base','ClosedLoop',1);
  4. 負のフィードバックを使用するボード線図を生成するには、MATLAB コマンド ウィンドウに次のように入力します。

    c = -c; d = -d;
    npts = 100; w = logspace(-3,5,npts); G = zeros(1,npts);
    for i = 1:npts                                                     
        G(i) = c*(1i*w(i)*eye(size(a))-a)^-1*b +d;                     
    end
    subplot(211), semilogx(w,20*log10(abs(G)))                         
    grid                                                               
    ylabel('Magnitude (dB)')                                           
    subplot(212), semilogx(w,180/pi*unwrap(angle(G)))                  
    ylabel('Phase (degrees)')                                          
    xlabel('Frequency (rad/s)')                                        
    grid 

メモ

linmod 関数は、基本的な線形化機能のみを提供します。完全な線形化機能を使用するには、Simulink Control Design ソフトウェアを使用してください。詳細については、線形化ツールの選択 (Simulink Control Design)を参照してください。

Simulink Control Design ソフトウェアによる線形化

メモ

この節での作業を行うには Simulink Control Design のライセンスがなければなりません。

Simulink Control Design ソフトウェアは操作点の検出に役立つツールを備えており、状態名を定義する状態空間モデル オブジェクトを返します。Simscape モデルの線形化には、この方法を推奨します。

  1. デジタル位置コントローラーを備えた油圧アクチュエータのモデル ウィンドウの Simulink ツールストリップで、[アプリ] タブの [制御システム] の下の [モデル線形化器] をクリックします。

  2. [モデル線形化器] ウィンドウにある [線形解析] タブの [操作点] ドロップダウン リストで、[線形化の条件] を選択します。シミュレーションのスナップショット時間として 2.5 秒を入力し、[OK] をクリックします。

  3. [ボード線図] プロット ボタンをクリックします。

Simulink Control Design ソフトウェアによる平衡化と線形化の詳細については、Simulink Control Design ドキュメンテーションを参照してください。

参考

トピック