Main Content

周波数応答データで表されるシステムの補償器の設計

この例では、"制御システム デザイナー" を使用して周波数応答データ (FRD) で定義されたプラント モデルの補償器を設計する方法について説明します。

周波数応答データ (FRD) プラント モデルの取得

周波数応答データなど、プラント モデルのノンパラメトリック表現は、解析および制御設計に頻繁に使用されます。これらの FRD モデルは、通常、以下から取得できます。

1) システム上で周波数領域の測定を行う信号アナライザー ハードウェア。

2) システムの時間応答データを使用するノンパラメトリック推定法。以下の製品を使用すると FRD モデルを推定できます。

Simulink® Control Design™:

Signal Processing Toolbox™:

System Identification Toolbox™:

  • 関数: etfe (System Identification Toolbox)spa (System Identification Toolbox)spafdr (System Identification Toolbox)

FRD モデルと設計要件

この例では、次のようなエンジン スロットルの角度を作動させるエンジン速度コントローラーを設計します。

エンジンの周波数応答は推定済みです。データを読み込み、表示します。

load FRDPlantDemoData.mat
AnalyzerData
AnalyzerData = struct with fields:
          Response: [594x1 double]
         Frequency: [594x1 double]
    FrequencyUnits: 'rad/s'

次の FRD モデル オブジェクトを作成します。

FRDPlant = frd(AnalyzerData.Response,AnalyzerData.Frequency,...
    'Unit',AnalyzerData.FrequencyUnits);

設計仕様は以下のとおりです。

  • 基準速度のステップ変化に対し定常偏差ゼロ

  • 位相余裕が 60 度より大きい

  • ゲイン余裕が 20 dB より大きい

補償器の設計

"制御システム デザイナー" を開きます。

controlSystemDesigner({'bode','nichols'},FRDPlant)

アプリが、ボード開ループ エディターとニコルス開ループ エディターと共に開きます。

補償器は、ボード エディターまたはニコルス エディターのいずれかで開ループ周波数応答を整形することによって設計できます。これらのエディターでは、補償器のゲイン、極および零点を対話的に変更します。

定常偏差ゼロの追従要件を満たすために、補償器に積分器を追加します。ボード エディターのプロット領域を右クリックし、[極/零点の追加]、[積分器] を選択します。

ゲイン要件および位相余裕要件を満たすために、補償器に零点を追加します。ボード エディターのプロット領域を右クリックし、[極/零点の追加]、[実数零点] を選択します。補償器のゼロおよびゲインの位置を余裕の仕様が満たされるまで変更します。

設計要件を満たす設計の 1 つとして以下が考えられます。

C(s)=0.001(s+4)s.

この PI コントローラーである補償器の設計では、20.7 dB のゲイン余裕および 70.8 度の位相余裕を達成します。

設計した補償器をワークスペースにエクスポートします。[エクスポート] をクリックします。

設計の検証

Simulink® 内の非線形モデルを使用し、エンジンの応答のシミュレーションを実行してコントローラーの性能を検証します。この例の場合、検証シミュレーションの結果は EngineStepResponse にあります。

2000 から 2500 RPM への基準速度の変更に対するエンジンの応答を次のようにプロットします。

plot(EngineStepResponse.Time,EngineStepResponse.Speed)
title('Engine Step Response')
xlabel('Time (s)')
ylabel('Engine Speed (RPM)')

Figure contains an axes object. The axes object with title Engine Step Response contains an object of type line.

応答は、定常偏差ゼロおよび仕様に従う過渡を以下のメトリクスにより示します。

stepinfo(EngineStepResponse.Speed,EngineStepResponse.Time)
ans = struct with fields:
         RiseTime: 0.7136
    TransientTime: 1.7194
     SettlingTime: 1.3738
      SettlingMin: 2.2505e+03
      SettlingMax: 2.5078e+03
        Overshoot: 0.3127
       Undershoot: 0
             Peak: 2.5078e+03
         PeakTime: 2.3853

参考

関連するトピック