ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

昇圧コンバーター モデルの LPV 近似

この例では、昇圧コンバーターの Simscape Power Systems™ モデルについて、線形パラメーター変動 (LPV) 近似を取得する方法を説明します。LPV 表現により、さまざまな操作条件で迅速に平均的動作を解析することができます。

昇圧コンバーター モデル

昇圧コンバーター回路は、電圧源のチョッピングまたはスイッチング制御によって、ある DC 電圧を別の DC 電圧に変換します。特定の負荷電圧の要求は、トランジスタ デューティ比の対応する要件に変換されます。デューティ比の変調は、通常、スイッチング周波数より数桁も低速になります。その結果、比較的小さなリップルで平均電圧に到達します。このダイナミクスの拡大図は、図 1 を参照してください。

図 1: コンバーターの出力 (負荷) 電圧の生成

実際には、電源電圧 および抵抗負荷 にも外乱は存在し、実際の負荷電圧 に影響します。

Simulink モデルを開きます。

mdl = 'BoostConverterExampleModel';
open_system(mdl);

図 2: Simscape Power Systems ベースの昇圧コンバーター モデル

このモデルの回路の特徴は、高周波のスイッチングにあります。このモデルは、25 ns のサンプル時間を使用します。モデルで使用される "Boost Converter" ブロックは、コンバーター ダイナミクスの 3 種類のバージョンを実装するバリアント サブシステムです。ブロックをダブルクリックすると、そのバリアントと実装が表示されます。このモデルは、単一の入力としてデューティ比を取り、3 つの出力 (インダクターの電流、負荷電流および負荷電圧) を生成します。

このモデルは、高周波のスイッチング要素と小さなサンプル時間のため、低速でシミュレーションが実行されます (0 ~ 10 ms の変化で見た場合)。

バッチ平衡化と線形化

さまざまな用途において、特定のデューティ比プロファイルに応答して生成される平均電圧が重要となります。そのような動作は、この回路の基本サンプル時間よりも数桁ほど大きいタイム スケールで研究されています。このような回路の "平均モデル" は、一定期間の電力のダイナミクスの平均に基づく解析的な考慮事項によって導出されます。モデル BoostConverterExampleModel は、最初のバリアント (AVG 電圧モデル) などのような回路の平均モデルを実装します。一般的にはこのバリアントは、"低水準モデル" バリアントより高速に実行されます。

平均モデルは線形システムではありません。これは、デューティ比および負荷変動に対する非線形の依存性を示します。シミュレーションの高速化と電圧の安定したコントローラーの設計を支援するために、さまざまなデューティ比および負荷値でモデルを線形化できます。線形システムの入力および出力は、元のモデルと同じになります。

ここでは、スナップショット時間ベースの平衡化および線形化アプローチを使用します。スケジューリング パラメーターは、デューティ比の値 (d) と抵抗負荷の値 (R) です。モデルはスケジューリング パラメーターのさまざまな値で平衡化され、その結果線形モデルのグリッドが生成されます。たとえば、デューティ比の変動に 10% ~ 60%、負荷変動に 4 ~ 15 Ω の範囲を選択します。それらの値の取りうるすべての組み合わせで取得されたそれぞれのスケジューリング変数および線形化に対して、その範囲内の 5 つの値を選択します。

スケジューリング パラメーター: d: デューティ比 R: 抵抗負荷

nD = 5; nR = 5;
dspace = linspace(0.1,0.6,nD); % nD values of "d" in 10%-60% range
Rspace = linspace(4,15,nR);    % nR values of "R" in 4-15 Ohms range
[dgrid,Rgrid] = ndgrid(dspace,Rspace);  % all possible combinations of "d" and "R" values

パラメーター構造体配列を作成します。

params(1).Name = 'd';
params(1).Value = dgrid;
params(2).Name = 'R';
params(2).Value = Rgrid;

さまざまな条件下でのモデルのシミュレーションにより、モデルの出力は 0.01 秒より前に定常状態値で安定することがわかります。そのため、ここではスナップショット時間として t = 0.01s を使用します。

モデルの入力、出力および状態の数を宣言します。

ny = 3; nu = 1; nx = 7;
ArraySize = size(dgrid);

findop を使用して、平衡操作点を計算します。コードは終了するまで数分間かかります。

op = findop(mdl, 0.01, params);

モデルで指定された線形化の入力と出力を取得します。

io = getlinio(mdl);

操作点配列 op でモデルを線形化し、オフセットを保存します。

[linsys, ~, info] = linearize(mdl, op, io, params, ...
	linearizeOptions('StoreOffsets', true));

線形化の結果からオフセットを抽出します。

offsets = getOffsetsForLPV(info);
yoff = offsets.y;
xoff = offsets.x;
uoff = offsets.u;

線形システム配列をプロットします。

bodemag(linsys)
grid on

図 3: スケジューリング パラメーター グリッド上で取得された線形システム配列のボード線図

LPV シミュレーション: 予備解析

linsys は 25 の線形状態空間モデルの配列で、それぞれに 1 つの入力、3 つの出力および 7 つの状態が含まれます。このモデルは、サンプル時間が 25 ns の離散時間です。このボード線図は、スケジューリング パラメーターのグリッド上でダイナミクスに大きな変動があることを示します。線形システム配列とそのオフセット データ (uoffyoff および xoff) を使用して、LPV System ブロックを構成できます。これにより取得された "LPV モデル" は、平均ダイナミクスの線形システム配列の近似として機能します。LPV ブロック構成は、BoostConverterLPVModel_Prelim モデルで使用できます。

lpvmdl = 'BoostConverterLPVModel_Prelim';
open_system(lpvmdl);

図 4: linsys を使用して構成された LPV モデル。

モデルのシミュレーションを実行する際に、スケジューリングの範囲におおよそ対応するデューティ比の入力プロファイルを使用します。また、抵抗負荷を変動させて、負荷外乱のケースのシミュレーションを実行します。

シミュレーション データを生成します。

t = linspace(0,.05,1e3)';
din = 0.25*sin(2*pi*t*100)+0.25;
din(500:end) = din(500:end)+.1;  % the duty cycle profile

rin = linspace(4,12,length(t))';
rin(500:end) = rin(500:end)+3;
rin(100:200) = 6.6;              % the load profile

yyaxis left
plot(t,din)
xlabel('Time (s)')
ylabel('Duty Cycle')
yyaxis right
plot(t,rin)
ylabel('Resistive Load (Ohm)')
title('Scheduling Parameter Profiles for Simulation')

図 5: シミュレーション用に選択されたスケジューリング パラメーター プロファイル。

メモ: 上記の信号を生成するためのコードは、独立に読み込みおよび実行するためにモデルの PreLoadFcn コールバックに追加されています。これらの設定をオーバーライドして独自のコードを試す場合、ベース ワークスペースでこのデータを上書きします。

LPV モデルをシミュレートします。

sim(lpvmdl, 'StopTime', '0.004');

図 6: LPV シミュレーション結果。

シミュレーションでは、LPV モデルのシミュレートが遅いことが示されています。そこで次に、LPV モデルをいくらか簡略化することを検討します。線形システムに一般に適用される簡略化には、状態数の削減 (balred を参照)、サンプル時間の変更 (d2d を参照) および不要な入出力チャネルの削除が含まれます。この種の解析を LPV システムに拡張するために、次の近似を行います。スケジューリング パラメーターがゆっくり変化すると仮定され、システムが常に平衡状態の近くに留まる場合は、モデルの状態変数を "偏差状態" で置き換えることができます。この近似により、状態オフセット データと初期状態の値をゼロ値に置き換えられるようになります。結果として得られる連立方程式は、偏差状態 において線形です。

モデル次数の低次元化

配列内でのシステムのエネルギーに対する線形システム状態の貢献度を評価してみましょう。

HSV = zeros(nx,nD*nR);
for ct = 1:nD*nR
   HSV(:,ct) = hsvd(linsys(:,:,ct));
end
ax = gca;
cla(ax,'reset');
bar3(ax, HSV)
view(ax,[-69.5 16]);
xlabel(ax, 'System Number')
ylabel(ax, 'State Number')
zlabel(ax, 'State Energy')

図 7: 線形システム配列 linsys のハンケル特異値の棒グラフ。5 行 5 列の配列は、プロット用に 25 要素のシステム ベクトルにフラット化されます。

プロットでは、最も重要なダイナミクスの取得には 2 つの状態のみが必要とされることが示されています。この情報を使用して、balred により 7 つの状態のシステム配列 linsys を 2 つの状態の配列に低次元化します。ここでは、同じ 2 つの変換された状態が操作グリッド全体に寄与するものと仮定します。LPV 表現は、線形システム配列内で状態に整合性が必要です。

opt = balredOptions('StateElimMethod','Truncate');
linsys2 = linsys;
for ct = 1:nD*nR
   linsys2(:,:,ct) = balred(linsys(:,:,ct),2,opt);
end

モデル配列の目的の時間スケールへのアップサンプリング

次に、モデル配列 linsys (または linsys2) には 25 ns のサンプル時間があることに注目します。このモデルは、デューティ比および負荷変動に応答する出力の変化を学習するために必要です。これらの変動は、システムの基本サンプル時間よりはるかに低速になり、マイクロ秒単位で発生します (0 ~ 50 ms)。そのため、モデルのサンプル時間を 1e4 倍に増加します。

linsys3 = d2d(linsys2, linsys2.Ts*1e4);

これで、線形システム配列 linsys3 とオフセット yoff および uoff を使用して、LPV モデル アセンブリで別の試行を行う準備ができました。

LPV シミュレーション: 最後

事前構成されたモデル BoostConverterLPVModel_Final は、linsys3 とそのオフセット データを使用して LPV モデルのシミュレーションを実行します。状態のオフセットにはゼロ値が使用されます。

lpvmdl = 'BoostConverterLPVModel_Final';
open_system(lpvmdl);
sim(lpvmdl);

図 8: 低次元化/スケーリングされた線形システム配列 linsys3 を使用した LPV モデルのシミュレーション

LPV モデルは、元のモデル BoostConverterExampleModel よりはるかに高速にシミュレーションを実行します。しかし、どのようにこの結果と元の昇圧コンバーター モデルから取得された結果を比較するのでしょうか?それを確認するには、モデル BoostConverterResponseComparison を開きます。このモデルには、忠実度の高い "低水準モデル" バリアントを使用するために構成された Boost Converter ブロックがあります。また、3 つのスコープで出力が昇圧コンバーターの出力に重なる LPV ブロックもあります。

mdl = 'BoostConverterResponseComparison';
open_system(mdl);
% sim(mdl); % uncomment to run

図 9: 忠実度の高いモデルの応答とその平均的動作の LPV 近似との比較に使用されるモデル。

シミュレーション コマンドは、コメント アウトされています。実行時にコメントを解除します。結果を、以下のスコープのスナップショットに示します。

図 10: インダクターの電流の信号。青: オリジナル、マゼンタ: LPV システム応答

図 11: 負荷電流の信号。青: オリジナル、マゼンタ: LPV システム応答

図 12: 負荷電圧の信号。青: オリジナル、マゼンタ: LPV システム応答

元の昇圧コンバーター回路における高速のスイッチング ダイナミクスのため、シミュレーションは極めてゆっくりと実行されます。結果は、LPV モデルで平均的な動作を的確に再現できることを示しています。

まとめ

デューティ比入力および抵抗負荷をスケジューリング パラメーターとして使用することで、状態空間モデル配列の形で平均的なモデルの動作の線形近似を取得できました。このモデル配列は、モデルの低次元化およびサンプルレートの変換操作によりさらに単純化されました。

操作点に関連付けられたオフセット データとともに結果のモデル配列を使用して、非線形の平均的な動作の LPV 近似を作成しました。シミュレーションの精査から、忠実度の高い Simscape Power Systems モデルの平均的動作を、LPV モデルにより高い精度でエミュレートできることがわかりました。LPV モデルは、メモリの消費量も小さく、元のシステムよりはるかに高速にシミュレーションを実行できました。

この情報は役に立ちましたか?