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

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

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

昇圧コンバーター モデル

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

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

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

Simulink モデルを開きます。

mdl = 'BoostConverterExampleModel';
open_system(mdl);

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

このモデルの回路の特徴は、高周波のスイッチングにあります。このモデルは、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 = 2;
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 つの出力、および 2 つの状態が含まれます。このモデルは、サンプル時間が 25 ns の離散時間です。このボード線図は、スケジューリング パラメーターのグリッド上でダイナミクスに大きな変動があることを示します。線形システム配列と、付属するオフセット データ (uoffyoff および xoff) を使用して、LPV System ブロックを構成できます。これにより取得された "LPV モデル" は、平均ダイナミクスの線形システム配列の近似として機能します。LPV ブロック構成は、BoostConverterLPVModel モデルで使用できます。

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

linsysd = c2d(linsys,Ts*1e4);
mdl = 'BoostConverterResponseComparison';
open_system(mdl);
%sim(mdl); % uncomment to run

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

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

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

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

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

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

まとめ

デューティ比入力および抵抗負荷をスケジューリング パラメーターとして使用することで、状態空間モデル配列の形で平均的なモデルの動作の線形近似を取得できました。

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

参考

|

関連するトピック