昇圧コンバーター向け伝達関数モデルの推定
この例では、周波数応答データから伝達関数を推定する方法を示します。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
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 がインストールされていない場合は、次のコマンドを使用して保存済み周波数応答データを読み込みます。
load iddemo_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)