Main Content

電力段の電圧のデジタル制御

この例では、サンプリング周波数に近い帯域幅で高性能デジタル コントローラーを調整する方法を説明します。

電力段の電圧制御

Simulink® を使用して、電子デバイスの電力段の電圧コントローラーをモデル化します。

open_system('rct_powerstage')

電力段の増幅器は、次の周波数応答で 2 次線形システムとしてモデル化されます。

bode(psmodel)
grid

コントローラーは、設定点 Vcmd を追従し、負荷電流 iLoad の変動の影響を受けないように、デバイスに送られる電圧 Vchip を制御しなければなりません。制御構造は、フィードバック補償器と外乱フィードフォワード補償器で構成されています。増幅器にかかる電圧 Vin は、$V_{\rm max} = 12 V$ に制限されます。コントローラーのサンプリング レートは 10 MHz (サンプル時間 Tm は 1e-7 秒) です。

性能要件

この適用例は、コントローラー帯域幅がナイキスト周波数 pi/Tm = 31.4 MHz に近づかなければならないため難しい作業です。連続時間コントローラーを離散化するときのエイリアシングの問題を回避するためには、コントローラーを離散時間で直接調整することをお勧めします。

電力段は、(周波数全体での) ピーク偏差を 50% としておよそ 5 つのサンプリング周期における設定点での目標電圧 Vcmd の変化に応答しなければなりません。この目的を達成するために、追従要件を使用します。

Req1 = TuningGoal.Tracking('Vcmd','Vchip',5*Tm,0,1.5);
Req1.Name = 'Setpoint change';

viewGoal(Req1)

電力段は、負荷外乱 iLoad もすばやく抑制しなければなりません。この要件は iLoad から Vchip へのゲインで表します。適切な外乱の抑制にするためには、このゲインを低周波数で低くしなければなりません。

s = tf('s');
nf = pi/Tm;   % Nyquist frequency

Req2 = TuningGoal.Gain('iLoad','Vchip',1.5e-3 * s/nf);
Req2.Focus = [nf/1e4, nf];
Req2.Name = 'Load disturbance';

高性能要求により、制御操作と飽和が高くなる可能性があります。Simulink モデルで指定されたランプ プロファイル vcmd (約 250 のサンプリング周期で 0 から 1) では、飽和制約 $V_{\rm in} \le V_{\rm max}$ に達しないようにします。レート制限フィルターを使用してランプ コマンドをモデル化し、レート制限入力から $V_{\rm in}$ へのゲインが $V_{\rm max}$ 未満になることを要求します。

RateLimiter = 1/(250*Tm*s); % models ramp command in Simulink

% |RateLimiter * (Vcmd->Vin)| < Vmax
Req3 = TuningGoal.Gain('Vcmd','Vin',Vmax/RateLimiter);
Req3.Focus = [nf/1000, nf];
Req3.Name = 'Saturation';

適切なロバスト性を確保するには、プラント入力に少なくとも 7 dB のゲイン余裕と 45 度の位相余裕が必要です。

Req4 = TuningGoal.Margins('Vin',7,45);
Req4.Name = 'Margins';

最後に、フィードバック補償器は、プラントの共振をノッチ アウトして無効化する傾向があります。共振周波数が正確に把握されていないまたは変化の影響を受けない場合、このようなプラント反転によって不十分な結果になることがあります。これを避けるために、プラントの共振モードのアクティブな減衰に 0.5 の最小閉ループ減衰を加えます。

Req5 = TuningGoal.Poles(0,0.5,3*nf);
Req5.Name = 'Damping';

調整

次に、systune を使用して、上で定義された要件に従ってコントローラー パラメーターを調整します。最初に、slTuner インターフェイスを使用して Simulink モデルを調整用に構成します。特に、2 つの調整可能なブロックがあることと、モデルをサンプル時間 Tm で線形化して調整しなければならないことを指定します。

TunedBlocks = {'compensator','FIR'};
ST0 = slTuner('rct_powerstage',TunedBlocks);
ST0.Ts = Tm;

% Register points of interest for open- and closed-loop analysis
addPoint(ST0,{'Vcmd','iLoad','Vchip','Vin'});

FIR フィルターをフィードフォワード補償器として使用します。これを行うには、1 次 FIR フィルターのパラメーター化を作成し、それを Simulink の "Feedforward FIR" ブロックに割り当てます。

FIR = tunableTF('FIR',1,1,Tm);
% Fix denominator to z^n
FIR.Denominator.Value = [1 0];
FIR.Denominator.Free = false;
setBlockParam(ST0,'FIR',FIR);

slTuner では、フィードバック補償器が 3 次状態空間モデル (Simulink ブロックで指定された次数) として自動的にパラメーター化されます。次に、systune でフィードフォワード補償器とフィードバック補償器を調整します。減衰要件と余裕要件を厳密な制約として扱い、可能な限り残りの要件を満たすように試みます。

rng(0)
topt = systuneOptions('RandomStart',6);
ST = systune(ST0,[Req1 Req2 Req3],[Req4 Req5],topt);
Final: Soft = 1.28, Hard = 0.99973, Iterations = 360
Final: Soft = 1.28, Hard = 0.96667, Iterations = 469
Final: Soft = 1.29, Hard = 0.85363, Iterations = 293
Final: Soft = 1.28, Hard = 0.9954, Iterations = 473
Final: Soft = 1.29, Hard = 0.99829, Iterations = 465
Final: Soft = 1.29, Hard = 0.99631, Iterations = 422
Final: Soft = 1.31, Hard = 0.85685, Iterations = 346

最適な設計は、厳密な制約を満たし (1 未満の Hard)、その他の制約をほぼ満たします (1 に近い Soft)。これは、各要件の調整後の応答をプロットしてグラフで確認します。

figure('Position',[10,10,1071,714])
viewGoal([Req1 Req2 Req3 Req4 Req5],ST)

検証

最初に、slTuner インターフェイスを使用して線形領域で設計を検証します。ステップ コマンド Vcmd とステップ外乱 iLoad に対する閉ループ応答をプロットします。

figure('Position',[100,100,560,500])
subplot(2,1,1)
step(getIOTransfer(ST,'Vcmd','Vchip'),20*Tm)
title('Response to step command in voltage')
subplot(2,1,2)
step(getIOTransfer(ST,'iLoad','Vchip'),20*Tm)
title('Rejection of step disturbance in load current')

getLoopTransfer を使用して、プラント入力における開ループ応答を計算し、プラントとフィードバック補償器の応答を重ね合わせます。

clf
L = getLoopTransfer(ST,'Vin',-1);
C = getBlockValue(ST,'compensator');
bodeplot(L,psmodel(2),C(2),{1e-3/Tm pi/Tm})
grid
legend('Open-loop response','Plant','Compensator')
ans = 

  Legend (Open-loop response, Plant, Compensator) with properties:

         String: {'Open-loop response'  'Plant'  'Compensator'}
       Location: 'northeast'
    Orientation: 'vertical'
       FontSize: 8.5500
       Position: [0.6292 0.8384 0.3483 0.1161]
          Units: 'normalized'

  Use GET to show all properties

コントローラーは目的の帯域幅を実現し、応答は十分に迅速化されます。調整後のパラメーター値を Simulink モデルに適用し、調整後の応答のシミュレーションを実行します。

writeBlockValue(ST)

非線形シミュレーションからの結果は次のように表示されます。制御信号 Vin は、シミュレーションの設定点の追従部分で $\pm 12 V$ 飽和境界内にほぼ留まっています。

図 1: ランプ コマンドとステップ負荷外乱への応答

図 2: 設定点の追従フェーズにおける入力電圧 Vin の大きさ

参考

(Simulink Control Design) | (Simulink Control Design) | | |

関連するトピック