このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
2 値疑似乱数信号を使用したパワー エレクトロニクス モデルの周波数応答の推定
この例では、Simscape™ Electrical™ コンポーネントを使用して Simulink® でモデル化されたパワー エレクトロニクス システムについて、2 値疑似乱数列 (PRBS) を使用して周波数領域のモデルを同定する方法を示します。この例では、PRBS を入力信号として使用して、コントローラー設計ワークフローでの周波数応答推定を扱います。
通常の場合、パワー エレクトロニクス システムはパルス幅変調 (PWM) 発生器などの高周波数のスイッチング コンポーネントを使用するため、線形化することができません。しかし、大半の Simulink Control Design™ の PID 調整ツールは、線形化されたプラント モデルに基づいて PID ゲインを設計します。線形化できないパワー エレクトロニクス モデル用のそのようなモデルを取得するため、この例で示すように、ある範囲の周波数にわたってプラントの周波数応答を推定できます。
周波数応答データを収集するためには、次のことが可能です。
コマンド ラインでプラントの周波数応答を推定する
モデル線形化器アプリを使用してプラントの周波数応答を推定する
この例では、コマンド ラインでプラントの周波数応答を推定する方法を示します。パワー エレクトロニクス システムのプラントの周波数応答をモデル線形化器で PRBS 入力信号を使用して推定する方法については、モデル線形化器での 2 値疑似乱数列を使用した周波数応答の推定を参照してください。
昇圧コンバーター モデル
この例では、パワー エレクトロニクス システムとして昇圧コンバーター モデルを使用します。昇圧コンバーター回路は、電圧源のチョッピングまたはスイッチング制御によって、ある DC 電圧を別の (通常はより高い) DC 電圧に変換します。
mdl = 'scdboostconverter';
open_system(mdl)
このモデルでは、PWM 信号で駆動する MOSFET をスイッチ動作に使用します。出力電圧 は参照値
に調整されます。デジタル PID コントローラーが、電圧誤差信号に基づき PWM デューティ比
を調整します。この例では、PWM デューティ比から負荷電圧
への周波数応答を推定します。
Simscape Electrical ソフトウェアには、多くのパワー エレクトロニクス システム用の事前定義されたブロックが含まれています。このモデルには、昇圧コンバーター モデルの 2 つのバージョンをもつバリアント サブシステムが含まれます。
電力コンポーネントを使用して作成された昇圧コンバーターの回路。回路コンポーネントのパラメーターは [1] に基づきます。
昇圧コンバーター回路と同じパラメーターをもつように設定された昇圧コンバーター ブロック。このブロックの詳細については、Boost Converter (Simscape Electrical)を参照してください。
サブシステムの Boost Converter ブロック バージョンを使用するには、モデルで Boost Converter ブロックをクリックするか、または次のコマンドを使用します。
set_param([bdroot '/Simscape Power Systems Boost Converter'],... 'LabelModeActiveChoice','block_boost_converter');
モデルの操作点の検出
昇圧コンバーターの周波数応答を推定するには、まず、コンバーターが動作する定常状態の操作点を特定しなければなりません。操作点の検出の詳細については、Simscape モデルの定常状態の操作点の検出を参照してください。この例では、0.045 秒でのシミュレーションのスナップショットから推定された操作点を使用します。
opini = findop(mdl,0.045);
計算した操作点でモデルを初期化します。
set_param(mdl,'LoadInitialState','on','InitialState','getstatestruct(opini)');
2 値疑似乱数信号の作成
2 値疑似乱数信号 (PRBS) は、2 つの値の間で切り替わるホワイトノイズのようなプロパティをもつ、周期的で確定的な信号です。PRBS は、最大周期の長さが の本来的に周期的な信号です。ここで、
は PRBS の次数です。詳細については、PRBS 入力信号を参照してください。
次の構成で PRBS を作成します。
非周期的な PRBS を使用するには周期数を 1 に設定する。
PRBS の次数 14 を使用して、長さが 16383 の信号を作成する。正確な周波数応答推定を取得するには、PRBS の長さは十分に大きくなければなりません。
PRBS のインジェクション周波数を 200 kHz に設定してモデルのサンプル時間に一致させる。つまり、サンプル時間を
5e-6
秒に指定します。システムが適切に励起されるよう、摂動振幅を 0.05 に設定する。入力の振幅が大きすぎる場合、昇圧コンバーターは不連続の電流モードで動作します。入力の振幅が小さすぎる場合は、PRBS をパワー エレクトロニック回路のリップルと区別できなくなります。
in_PRBS = frest.PRBS('Order',14,'NumPeriods',1,'Amplitude',0.05,'Ts',5e-6);
周波数応答データの収集
周波数応答データを収集するため、コマンド ラインでプラントの周波数応答を推定できます。これを行うには、まず入力と出力の線形解析ポイントをモデルから取得します。
io = getlinio(mdl);
モデルの初期条件を使用して操作点を指定します。
op = operpoint(mdl);
線形化出力の信号パスで時変信号を生成するすべてのソース ブロックを検出します。このような時変信号は、線形化出力ポイントでの信号を妨げ、推定結果が不正確になる可能性があります。
srcblks = frest.findSources(mdl,io);
時変ソース ブロックを無効にするには、frestimateOptions
オプション セットを作成して BlocksToHoldConstant
オプションを指定します。
opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks;
PRBS 入力信号を使用して周波数応答を推定します。
sysest_prbs = frestimate(mdl,io,op,in_PRBS,opts);
昇圧コンバーター モデルの解析的伝達関数
解析的伝達関数は、モデルのコンポーネント パラメーターに基づいて決定できます。
L = 20e-6; C = 1480e-6; R = 6; rC = 8e-3; rL = 1.8e-3; Vo = 18; Iload = Vo/R;
解析的伝達関数を計算するには、実際のデューティ比の値が必要です。この昇圧コンバーターでは、ログに記録された操作点におけるデューティ比を使用します。
D = 0.734785; d = 1-0.734785;
昇圧コンバーター モデルのコンポーネントのパラメーターを使用して解析的伝達関数を定義します ([1] に基づきます)。
Den = [L*C*(R+rC) L+C*rL*(R+rC)+C*R*rC-R*D*C*rC R+rL-R*D-R^2*D*(1-D)/(R+rC)]; Num1 = [L/R/(1-D)^2 rL/R/(1-D)^2-R/(R+rC)+Iload/Vo*(2*rL/(1-D)^2+R*rC/(R+rC)/(1-D))]; Num = [C*rC*Num1(1) Num1(1)+C*rC*Num1(2) Num1(2)]; TFvd = tf(-R*Vo*(1-D)^2*Num, (1+rL/R/(1-D)-R*D/(R+rC))*Den);
より正確に説明すると、伝達関数 TFvd では PWM 信号に起因する遅延を考慮します。
N = 1.5;
Ts = 5e-6;
iodelay = N*Ts; % 0.5 PWM + 1 ZOH
TFvd.IODelay = iodelay;
周波数応答データの sinestream FRE 結果との比較
PRBS 信号を使用した推定結果を、sinestream 入力信号を使用して得られた結果と比較します。sinestream に使用した 50 Hz から 5 kHz までの対数的に等間隔な 15
個の周波数で信号を比較します。
load frdSinestream wbode = estsysSinestream.Frequency; opts = bodeoptions; opts.PhaseMatching = 'on'; opts.XLim = [wbode(1),wbode(end)]; bodeplot(sysest_prbs,estsysSinestream,TFvd,opts); legend('PRBS estimation result','Sinestream estimation result',... 'Analytical transfer function','Location','northeast'); grid on
入力信号による周波数応答の推定にかかったシミュレーション時間を調べるには、関数getSimulationTime
を使用できます。
tfinal_sinestream = in_sine1.getSimulationTime tfinal_prbs = in_PRBS.getSimulationTime
tfinal_sinestream = 0.2833 tfinal_prbs = 0.0819
in_PRBS
を使用した場合のシミュレーション時間は、in_sine1
でモデルの周波数応答を推定するのにかかった時間の約 30% です。これは、sinestream 入力信号を使用した場合よりも、PRBS 入力信号を使用した場合の方が、周波数応答の推定がはるかに高速であることを示しています。
推定された周波数応答の結果 sysest_prbs
は estsysSinestream
とほぼ一致しています。PRBS 入力信号では多数の周波数点から周波数応答を推定するため、推定結果にシステムの共振特性に関する情報が多数含まれます。sinestream 入力信号を使用して同様の結果を得るには、周波数点の数を増やさなければならない場合があり、そうすると推定時間が長くなります。この方法を使用すると、sinestream 信号を使用した推定に比べて、短いシミュレーション時間で正確な周波数応答の推定が得られます。
低周波数における周波数応答の結果の改善
低周波数における周波数応答推定の結果を改善するために、元の昇圧コンバーター モデルのサンプル時間よりも遅いサンプル時間を使用することができます。これを行うには、入力解析ポイントで Constant ブロックを、出力解析ポイントで Rate Transition ブロックを使用するようモデルを変更します。
Constant ブロックと Rate Transition ブロックの両方で 5e-5
秒のサンプル時間を使用します。これは元のサンプル時間 5e-6
秒の 10 倍遅いものです。
新しいサンプル時間を使用して次数 12 の PRBS 入力信号を作成します。
in_PRBS = frest.PRBS('Order',12,'NumPeriods',1,'Amplitude',0.05,'Ts',5e-5);
新しい PRBS 入力信号を使用すると、低周波数まで範囲を広げて周波数応答を取得できます。
PRBS 入力信号のサンプル時間を変更できることで、周波数応答の推定プロセスに追加の自由度が提供されます。元のモデルより大きなサンプル時間を使用することにより、低周波数の範囲について、より高い解像度の周波数応答推定結果を短いシミュレーション時間で得られます。また、より低いサンプリング レートで推定を実行することで、ハードウェアに展開する際の処理要件が軽減されます。
モデルを閉じます。
close_system(mdl,0)
参考文献
[1] Lee, S. W. Practical Feedback Loop Analysis for Voltage-Mode Boost Converter. Application Report SLVA633. Texas Instruments, 2014. https://www.ti.com/lit/an/slva633/slva633.pdf.
参考
frest.PRBS
| frestimate
| frestimateOptions