共计 1806 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
电力电子初学者在建立 Buck-Boost 电路数学模型时,常会遇到几个典型困难:

- 非线性特性 :开关器件导致电路拓扑周期性变化,传统时域分析法难以直接应用
- 模式切换 :CCM(连续导通模式)与 DCM(断续导通模式)需分别处理
- 变量耦合 :电感电流与电容电压相互影响,手工推导易遗漏交叉项
- 实现障碍 :推导结果如何转化为可编程的矩阵形式
技术方法选择
与传统平均模型相比,状态空间法具有明显优势:
- 统一框架 :CCM/DCM 模式可通过同一组矩阵描述
- 扩展性强 :便于添加非线性项(如寄生电阻)
- 控制友好 :直接得到标准形式 $\dot{x}=Ax+Bu$,适合现代控制理论应用
核心推导流程
电路拓扑与参数
circuit LR
Vin[Vin] --> S[Switch]
S --> L[L]
L --> D[Diode]
D --> C[C]
C --> R[R]
D --| 反向 | S
关键参数:
– 电感 $L$,电容 $C$
– 负载电阻 $R$
– 开关周期 $T_s$,占空比 $D$
CCM 模式微分方程
开关 ON 阶段 ($0 < t < DT_s$):
$$
\begin{cases}
L\frac{di_L}{dt} = V_{in} \
C\frac{dv_C}{dt} = -\frac{v_C}{R}
\end{cases}
$$
开关 OFF 阶段 ($DT_s < t < T_s$):
$$
\begin{cases}
L\frac{di_L}{dt} = -v_C \
C\frac{dv_C}{dt} = i_L – \frac{v_C}{R}
\end{cases}
$$
状态变量选择
标准选择原则:
1. 电感电流 $i_L$(存储磁场能量)
2. 电容电压 $v_C$(存储电场能量)
状态向量定义为 $x = [i_L, v_C]^T$
平均化与线性化
对开关周期取平均:
$$
\begin{aligned}
L\frac{d\langle i_L \rangle}{dt} &= D V_{in} – (1-D)\langle v_C \rangle \
C\frac{d\langle v_C \rangle}{dt} &= (1-D)\langle i_L \rangle – \frac{\langle v_C \rangle}{R}
\end{aligned}
$$
在平衡点 $(I_L, V_C)$ 附近小信号线性化:
$$
\begin{cases}
\hat{i}_L = i_L – I_L \
\hat{v}_C = v_C – V_C \
\hat{d} = d – D
\end{cases}
$$
MATLAB 实现代码
% Buck-Boost 状态空间模型符号推导
syms L C R Vin D s il vc d_hat
% 稳态工作点
IL = Vin*D/(R*(1-D)^2);
VC = -Vin*D/(1-D);
% 小信号方程
A = [0 -(1-D)/L; (1-D)/C -1/(R*C)];
B = [Vin/L + VC/L; -IL/C];
C_mat = [0 1]; % 输出为电容电压
D_mat = 0;
% 状态空间模型
sys = ss(A, B, C_mat, D_mat);
模型验证方法
- Simulink 搭建 :
- 使用 SimPowerSystem 库搭建实际电路
- 注入阶跃占空比扰动
- 解析解对比 :
[y,t,x] = lsim(sys, d_hat, t); plot(t, y, 'r--', simout.Time, simout.Data, 'b-') - 误差指标 :
- 稳态误差应 <2%
- 动态响应趋势一致
常见问题与解决
- 寄生参数影响 :
- 在状态方程中添加电感 ESR $r_L$ 和电容 ESR $r_C$
-
修正后的 A 矩阵:
$$
A = \begin{bmatrix}
-\frac{r_L(1-D)+r_C D(1-D)+R D^2}{L R} & -\frac{1-D}{L} \
\frac{1-D}{C} & -\frac{1}{R C}
\end{bmatrix}
$$ -
模式边界判断 :
- 临界电感公式:
$$
L_{crit} = \frac{R(1-D)^2 T_s}{2}
$$ -
实际电感需大于 $L_{crit}$ 才能保证 CCM
-
数值稳定性 :
- 使用 ODE23tb 求解器处理刚性问题
- 避免过大的时间步长(建议 <$T_s/100$)
控制器设计延伸
将状态空间模型用于 PID 设计:
- 可控性检验 :
ctrb_rank = rank(ctrb(A,B)); - 极点配置 :
desired_poles = [-1e4, -2e4]; K = place(A, B, desired_poles); - 状态反馈 :
$$
u = -Kx + k_r V_{ref}
$$
通过本文的建模流程,读者可系统掌握从物理电路到控制模型的完整转换方法,为后续的闭环设计奠定基础。
