VMC移相全桥反馈控制参数设计 第二节

前言:昨天更新了移相全桥的功率级仿真部分,有兴趣可以点过去看看。《移相全桥仿真建模与控制 第一节》

电压模式控制的移相全桥变换器,在闭环控制的角度上可以看成是BUCK类的衍生。毕竟不管移相全桥,硬开关全桥,双管正激,都是通过控制原边开关的占空比,再通过隔离变压器降压,变成输入为Vin/N的方波加到次级的BUCK电路上。所以下文将从隔离BUCK的角度来做闭环控制器的参数设计。

下图是电压模式控制的BUCK变换器的原理图,详细的展示了功率级,反馈采样网络,反馈控制器,PWM发生器,这些必备的组件。

下图是把实际电路简化为环路控制的视角:

环路可以分为:功率级Gvd(s),PWM发生器Fm,反馈和采样Gea(s),由三者相乘构成了整体的环路增益,我们分析稳定性就是用这个T(s)。简而言之环路设计:就是在选定的开环穿越频率Fc处,计算功率级和PWM这一级的传递函数Gpl(s)在该频率点处的的增益和相位移,然后再计算反馈控制器的参数对功率级的参数进行补偿。举个简单例子就是,当功率级在1KHz增益衰减了-10dB,反馈控制器就是在这个点提升10db就好了,此时环路整体增益在1KHz这点就是0db。所以设计补偿器最关键的需要了解功率级从控制到输出的参数函数。下图是CCM BUCK的控制到输出传递函数:

从CCM BUCK的控制到输出的传递函数中可以看到一个与输出电压有关系的变量Vin,这个参数对反馈设计的最恶劣分析有用。由VIN的作用下,功率级的增益在低输入时低,在高压时增益高。如果闭环控制的参数是固定的,那么最好考虑在VIN最高输入电压时的增益,因为电压模式的BUCK的麻烦之处是功率级的LC滤波器的谐振频率处的增益尖峰,所以当VIN在最高处,所提供的基础增益更高,那么LC滤波器的增益尖峰就更加恶劣了。所以,下面使用VIN为最大值处的DC增益做反馈设计。

PWM增益用于描述占空比为1时所对应的PWM斜坡高度,可以当作PWM发生器的精确度来理解。数字系统使用与模拟一样的办法,比如模拟控制IC中斜坡高度电压为5V,那么三角波的增益为1/5=0.2。而在数字控制器中,使用up counter模式时,此处的增益就是1/tbprd。

 

有了上文的功率级传递函数,PWM的增益,在结合拓扑的实际参数就可以开始环路设计了,下面是功率级的参数信息:

Vin :300 ~ 400V

Vo :  12V

Io = 160A

Np/Ns = 22/1/1

Lf = 1uH

Lr = 5uH

Cout = 1000uF

Resr = 5m ohm

原理图可见:

稳态工作波形:

有了功率功率级参数和控制到输出的传递函数,就可以在matlab里面开始环路设计了。第一步先求出控制到输出的传递函数,再然后使用matlab siso tool工具直接设计闭环控制器的参数,即可简单快速的完成设计。附录中是详细代码,下文将一步一步的展示具体过程:

第一步是计算控制到输出的传递函数,下图是控制到输出电压的传递函数Bode,在LC谐振频率处存在很明显的增益尖峰,因此可以把穿越频率放在700~1000Hz处。对了你可能会问,为什么低频增益这么低,是因为被Gpwm拉低的,后面在补偿器里面可以补偿起来。备注:控制到输出的传递函数离散的方法看参加这篇文章:《理解数字控制系统的环路设计 - 入门级》。

传递函数:

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图:

第二步调用SISO工具开始环路设计。

  使用PID调试工具得到所需的参数,此组反馈参数下环路穿越频率在727Hz,PM 85deg,增益余量在-9.4dB,频率在4.2KHz,此时的时域和频域都可以接受,所以选定此组参数,可见下图。

补偿器的传递函数为:

  此时matlab输出的补偿器输传递函数在w域,可以使用C2D工具离散到Z域,就可以在Z域计算系统的开环增益和分析稳定性。计算得到补偿器的Z域传递函数为:

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.

第三步检查开环增益的稳定性:根据控制到输出和补偿器的传递函数就能得到环路增益Bode,可见下图。此时系统是稳定的,到此环路设计完成,如果参数不满意,可以根据上诉过程继续优化。

备注:环路仿真部分,后面再单独发来一篇。感谢观看,谢谢。

致谢:感谢 时光如水 指正昨天文章中超前桥错误的问题,谢谢。

附录 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
声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 8
关注 597
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧