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);在= frest.Sinestream('Frequency',f,'Amplitude',0.03);

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

getSimulationTime(in)/0.02
ans = 15.5933

周波数応答の離散点を計算するには、定義された入力と正弦ストリームを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 がインストールされていない場合は、次のコマンドを使用して保存済み周波数応答データを読み込みます。

loadiddemo_boostconverter_data

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

sysA = tfest(sysData,2) figure, bode(sysData,'r*',sysA,bopt)
sysA = From input "DutyCycle" to output "PS-Simulink Converter": -4.456e06 s + 6.175e09 ----------------------- s^2 + 6995 s + 9.834e06 Continuous-time identified transfer function. Parameterization: Number of poles: 2 Number of zeros: 1 Number of free coefficients: 4 Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using TFEST on frequency response data "sysData". Fit to estimation data: 98.04% FPE: 281.4, MSE: 120.6

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

bdclose(mdl)