前言:昨天更新了移相全橋的功率級仿真部分,有興趣可以點過去看看。《移相全橋仿真建模與控制 第一節(jié)》
電壓模式控制的移相全橋變換器,在閉環(huán)控制的角度上可以看成是BUCK類的衍生。畢竟不管移相全橋,硬開關(guān)全橋,雙管正激,都是通過控制原邊開關(guān)的占空比,再通過隔離變壓器降壓,變成輸入為Vin/N的方波加到次級的BUCK電路上。所以下文將從隔離BUCK的角度來做閉環(huán)控制器的參數(shù)設(shè)計。
下圖是電壓模式控制的BUCK變換器的原理圖,詳細的展示了功率級,反饋采樣網(wǎng)絡(luò),反饋控制器,PWM發(fā)生器,這些必備的組件。
下圖是把實際電路簡化為環(huán)路控制的視角:
環(huán)路可以分為:功率級Gvd(s),PWM發(fā)生器Fm,反饋和采樣Gea(s),由三者相乘構(gòu)成了整體的環(huán)路增益,我們分析穩(wěn)定性就是用這個T(s)。簡而言之環(huán)路設(shè)計:就是在選定的開環(huán)穿越頻率Fc處,計算功率級和PWM這一級的傳遞函數(shù)Gpl(s)在該頻率點處的的增益和相位移,然后再計算反饋控制器的參數(shù)對功率級的參數(shù)進行補償。舉個簡單例子就是,當(dāng)功率級在1KHz增益衰減了-10dB,反饋控制器就是在這個點提升10db就好了,此時環(huán)路整體增益在1KHz這點就是0db。所以設(shè)計補償器最關(guān)鍵的需要了解功率級從控制到輸出的參數(shù)函數(shù)。下圖是CCM BUCK的控制到輸出傳遞函數(shù):
從CCM BUCK的控制到輸出的傳遞函數(shù)中可以看到一個與輸出電壓有關(guān)系的變量Vin,這個參數(shù)對反饋設(shè)計的最惡劣分析有用。由VIN的作用下,功率級的增益在低輸入時低,在高壓時增益高。如果閉環(huán)控制的參數(shù)是固定的,那么最好考慮在VIN最高輸入電壓時的增益,因為電壓模式的BUCK的麻煩之處是功率級的LC濾波器的諧振頻率處的增益尖峰,所以當(dāng)VIN在最高處,所提供的基礎(chǔ)增益更高,那么LC濾波器的增益尖峰就更加惡劣了。所以,下面使用VIN為最大值處的DC增益做反饋設(shè)計。
PWM增益用于描述占空比為1時所對應(yīng)的PWM斜坡高度,可以當(dāng)作PWM發(fā)生器的精確度來理解。數(shù)字系統(tǒng)使用與模擬一樣的辦法,比如模擬控制IC中斜坡高度電壓為5V,那么三角波的增益為1/5=0.2。而在數(shù)字控制器中,使用up counter模式時,此處的增益就是1/tbprd。
有了上文的功率級傳遞函數(shù),PWM的增益,在結(jié)合拓撲的實際參數(shù)就可以開始環(huán)路設(shè)計了,下面是功率級的參數(shù)信息:
Vin :300 ~ 400V
Vo : 12V
Io = 160A
Np/Ns = 22/1/1
Lf = 1uH
Lr = 5uH
Cout = 1000uF
Resr = 5m ohm
原理圖可見:
穩(wěn)態(tài)工作波形:
有了功率功率級參數(shù)和控制到輸出的傳遞函數(shù),就可以在matlab里面開始環(huán)路設(shè)計了。第一步先求出控制到輸出的傳遞函數(shù),再然后使用matlab siso tool工具直接設(shè)計閉環(huán)控制器的參數(shù),即可簡單快速的完成設(shè)計。附錄中是詳細代碼,下文將一步一步的展示具體過程:
第一步是計算控制到輸出的傳遞函數(shù),下圖是控制到輸出電壓的傳遞函數(shù)Bode,在LC諧振頻率處存在很明顯的增益尖峰,因此可以把穿越頻率放在700~1000Hz處。對了你可能會問,為什么低頻增益這么低,是因為被Gpwm拉低的,后面在補償器里面可以補償起來。備注:控制到輸出的傳遞函數(shù)離散的方法看參加這篇文章:《理解數(shù)字控制系統(tǒng)的環(huán)路設(shè)計 - 入門級》。
傳遞函數(shù):
Gvd = 0.0007013 z^2 + 0.001605 z - 9.159e-05 z^(-2) * -------------------------------------- z^2 - 1.59 z + 0.7727 Sample time: 1.5e-05 secondsDiscrete-time transfer function.
bode圖:
第二步調(diào)用SISO工具開始環(huán)路設(shè)計。
使用PID調(diào)試工具得到所需的參數(shù),此組反饋參數(shù)下環(huán)路穿越頻率在727Hz,PM 85deg,增益余量在-9.4dB,頻率在4.2KHz,此時的時域和頻域都可以接受,所以選定此組參數(shù),可見下圖。
補償器的傳遞函數(shù)為:
此時matlab輸出的補償器輸傳遞函數(shù)在w域,可以使用C2D工具離散到Z域,就可以在Z域計算系統(tǒng)的開環(huán)增益和分析穩(wěn)定性。計算得到補償器的Z域傳遞函數(shù)為:
Gc_z_v =
8.427 z^2 - 10.16 z + 2.118
---------------------------
z^2 - 1.924 z + 0.9241
Sample time: 1.5e-05 seconds
Discrete-time transfer function.
第三步檢查開環(huán)增益的穩(wěn)定性:根據(jù)控制到輸出和補償器的傳遞函數(shù)就能得到環(huán)路增益Bode,可見下圖。此時系統(tǒng)是穩(wěn)定的,到此環(huán)路設(shè)計完成,如果參數(shù)不滿意,可以根據(jù)上訴過程繼續(xù)優(yōu)化。
備注:環(huán)路仿真部分,后面再單獨發(fā)來一篇。感謝觀看,謝謝。
致謝:感謝 時光如水 指正昨天文章中超前橋錯誤的問題,謝謝。
附錄 matlab 代碼:
% Phase shift full bridge dcdc
% Vin 300 - 400
% Vo 12V/160A
% By: Yangshuai
% 2020/03/06
clear all;
echo off
clc
% Vin = 300 ~ 400V VO = 12V Io = 160A
% Lf = 1uH Co = 1000uF esr = 5m ohm
% Np / Ns = 22 / 1 / 1
% Fsw = 66.6KHz
% Converter info
Vo_min = 300;
vo_max = 400;
vo = 12;
Io = 160;
RL = vo/Io;
G_vout = RL;
np = 22/1;
pwm_count = 1500; % PWM counter
gf_pwm = 1/pwm_count; % Gpwm
Ts = 15e-6; % controler Ts
Td = 1.5 * Ts; % controler Tdelay
% Power info
L = 1e-6; %buck Lf
C = 1000e-6; %buck Cout
Rc = 5e-3; %buck Cout esr
fo = 1/(2*pi*sqrt(L*C));
% Duty control to Vout TF:
num_Gps = gf_pwm * (vo_max/np) * [Rc*C 1];
denom_Gps = [L * C * (1 + Rc/RL) (L/RL + Rc*C) 1];
% Build Vloop Tf
Gps_dly = tf(num_Gps, denom_Gps, 'inputdelay' , Td); %s-domain plant with computation delay Td%
Gvd = c2d(Gps_dly, Ts, 'zoh') %Discrete plant with ZOH, Kd and Td%
% Duty control to Iout TF:
Gif = Gvd * (1/RL);
zpk(Gif);
%Plot Gpl bode
Gpl = 0;
GTLP = 1;
call_siso = 1;
if Gpl
x = bodeplot(Gvd, Gif);
setoptions(x,'FreqUnits','Hz','PhaseVisible','on')
grid on;
if call_siso
% Call control tool
controlSystemDesigner(Gvd)
end
end
if GTLP
% Voltage loop comp FC = 514HZ
num_c = 3.4186e5 * conv([0.00023 1], [1.3e-5 1]);
den_c = [0.00019 1 0];
Gc_w = tf(num_c, den_c)
Gc_z_v = c2d(Gc_w, Ts, 'tustin')
% Iloop COMP
Gc_z_i = Gc_z_v * (vo/Io)
% open loop bode
Tvloop = Gvd * Gc_z_v;
Tiloop = Gif * Gc_z_i;
z = bodeplot(Tvloop, Gvd, Gc_z_v);
setoptions(z,'FreqUnits','Hz','PhaseVisible','on');
grid on;
end