Main Content

昇圧コンバーター向け伝達関数モデルの推定

この例では、周波数応答データから伝達関数を推定する方法を示します。Simulink モデルから周波数応答データを収集するには Simulink® Control Design™ を使用し、測定データから伝達関数を推定するには tfest コマンドを使用します。以前に保存した周波数応答データを使用してこの例を実行するには、「伝達関数の推定」の節から開始します。

昇圧コンバーター

Simulink モデルを開きます。

mdl = 'iddemo_boost_converter';
open_system(mdl);

このモデルは、電圧源のチョッピングまたはスイッチング制御により 、ある DC 電圧を別の DC 電圧 (通常はより高い電圧) に変換する昇圧コンバーター回路です。このモデルでは、PWM 信号によって駆動された IGBTがスイッチングに使用されます。

この例の場合は、PWM デューティ比設定点から負荷電圧 Uout への伝達関数に焦点を当てます。

周波数応答データの収集

周波数の異なる正弦波を使用してデューティ比設定点に摂動を与え、結果として生じた負荷電圧をログに記録するには frestimate コマンドを使用します。これに基づき、周波数応答の離散点を与える入力正弦波の大きさと位相が、システムによってどのように変更されるかを知ることができます。

frestimate を使用するには、2 つの準備手順が必要となります。

  • 周波数応答の入力点と出力点を指定する

  • 入力点に与える正弦波を定義する

周波数応答の入力点と出力点は linio コマンドを使用して作成され、この例の場合は DutyCycle ブロックと Voltage Measurement ブロックの出力になります。

ios = [...
    linio([mdl,'/DutyCycle'],1,'input'); ...
    linio([mdl,'/PS-Simulink Converter'],1,'output')];

入力点に与える正弦波を定義するには、frest.Sinestream コマンドを使用します。ここでは、200 ~ 20,000 rad/s の周波数範囲に対象を絞り、デューティ比 0.03 で摂動を与えます。

f = logspace(log10(200),log10(20000),10);
in = frest.Sinestream('Frequency',f,'Amplitude',0.03);

この正弦ストリーム信号を使用してモデルをシミュレートするために必要なシミュレーション時間は、getSimulationTime コマンドを使用して決定されます。この場合、モデルによって使用されるシミュレーション終了時間はわかっているので、単にモデルを実行した場合と比べて、正弦ストリームのシミュレーションにどれだけ長い時間がかかるかを把握できます。

getSimulationTime(in)/0.02

周波数応答の離散点を計算するには、定義された入力と正弦ストリームを frestimate で使用します。

[sysData,simlog] = frestimate(mdl,ios,in);
bopt               = bodeoptions;
bopt.Grid          = 'on';
bopt.PhaseMatching = 'on';
figure, bode(sysData,'*r',bopt)

このボード応答は、この回路に対する期待事項と一致する 56 db のゲイン、約 2,500 rad/s のマイナーな共振、および約 20 db/decade の高周波数ロールオフをもつシステムを示しています。

frest.simView コマンドを使用すると、frestimate プロセスを調べて、与えられた信号、測定された出力、および周波数応答を単一のグラフィカル インターフェイスにまとめて示すことができます。

frest.simView(simlog,in,sysData);

この Figure は、与えられた正弦波に対するモデルの応答とモデルの応答の FFT を示しています。正弦波を与えた結果、線形モデルを示す優位周波数と限定高調波をもった信号が発生し、周波数応答データの収集が成功します。

伝達関数の推定

前の手順では、周波数応答データを収集しました。このデータはシステムを離散周波数点として表しています。ここでは、このデータに伝達関数を適合させます。

周波数応答データの生成には、Simulink Control Design を使用しました。Simulink Control Design がインストールされていない場合は、次のコマンドを使用して保存済み周波数応答データを読み込みます。

load iddemo_boostconverter_data

周波数応答データを調べた結果からは、システムを 2 次システムによって記述できるものと予想されます。

sysA = tfest(sysData,2)
figure, bode(sysData,'r*',sysA,bopt)

推定された伝達関数は、指定された周波数範囲全体で正確です。

bdclose(mdl)