1. MMC控制策略仿真概述
模块化多电平变换器(MMC)作为高压直流输电(HVDC)领域的核心设备,其控制策略的选择直接影响系统性能。本次仿真实验构建了交流7kV输入、直流20kV输出的整流系统,重点对比三种内环控制策略:传统PI控制、无源控制和滑模控制。所有方案均采用相同的外环PI电压控制架构,确保输出电压稳定在20kV。
典型MMC拓扑结构中,每个桥臂由多个子模块(SM)串联组成。本仿真采用单桥臂20个子模块配置,每个子模块额定电压1kV。这种模块化设计带来了诸多优势:输出电压波形质量高、器件电压应力低、容错能力强。但同时也引入了子模块电容电压均衡、环流抑制等关键技术挑战。
提示:MMC仿真需特别注意时间步长设置,建议取开关周期的1/100~1/50以获得准确结果
2. 系统建模与参数设计
2.1 主电路参数计算
交流侧线电压7kV对应相电压峰值:
$$ V_{ac} = \frac{7000}{\sqrt{3}} \times \sqrt{2} \approx 5715V $$
直流侧目标电压20kV,考虑2kV设计裕度,子模块数N计算:
$$ N = \frac{V_{dc}}{V_{sm}} = \frac{20000}{1000} = 20 $$
桥臂电感取值需平衡环流抑制与动态响应:
$$ L_{arm} = \frac{V_{dc}}{6f_{sw}\Delta i} $$
取开关频率fsw=2kHz,电流纹波Δi=10%A额定,计算得Larm≈15mH
2.2 控制结构框图
系统采用分层控制架构:
- 外环:电压PI控制器
- 采样直流电压Vdc
- 输出内环电流参考值Iref
- 内环:三种控制策略并行实现
- PI控制:传统双闭环结构
- 无源控制:基于能量成型理论
- 滑模控制:变结构控制
3. 核心算法实现
3.1 最近电平逼近调制(NLM)
NLM算法实现步骤:
- 计算所需投入子模块数:
$$ n_{on} = round(\frac{v_{ref}}{V_{sm}}) $$ - 快速排序电容电压:
python复制def capacitor_voltage_sort(sm_list): return sorted(sm_list, key=lambda x: x.voltage) - 选择电压最低的non个子模块投入
3.2 二倍频环流抑制
环流数学模型:
$$ i_{circ} = \frac{i_{u}+i_{l}}{2} - \frac{i_{dc}}{3} $$
抑制策略:
- 提取二倍频分量:
c++复制double h2 = arm_current * sin(2*2*PI*f0*t); - PR控制器补偿:
$$ G_{PR}(s) = K_p + \frac{2K_rω_c s}{s^2+2ω_c s + ω_0^2} $$
4. 控制策略对比分析
4.1 PI控制实现
离散化PI算法:
c++复制void PI_Update(PI_Controller* pi) {
float error = pi->ref - pi->feedback;
pi->integral += error * pi->Ts;
pi->output = pi->Kp * error + pi->Ki * pi->integral;
}
参数整定步骤:
- 先用Ziegler-Nichols法初步整定
- 根据阶跃响应调整:
- 超调大:减小Kp或增大Ti
- 响应慢:增大Kp
4.2 无源控制器设计
基于能量成型理论:
- 定义能量函数:
$$ H = \frac{1}{2}Li^2 + \frac{1}{2}Cv^2 $$ - 设计阻尼注入:
$$ u = -R_a i + v $$ - 稳定性证明:
$$ \dot{H} = -R_a i^2 ≤ 0 $$
4.3 滑模控制实现
滑动面设计:
$$ s = k_1(x_1-x_{1ref}) + k_2(x_2-x_{2ref}) $$
切换控制律:
c++复制double SM_Control(double s) {
if(s > 0) return U_max;
else return -U_max;
}
5. 仿真结果分析
5.1 动态性能对比
启动过程指标:
| 控制策略 | 调节时间(ms) | 超调量(%) |
|---|---|---|
| PI | 120 | 8.2 |
| 无源 | 95 | 4.5 |
| 滑模 | 60 | 1.8 |
5.2 稳态性能对比
输出电压纹波:
- PI控制:±1.2%
- 无源控制:±0.8%
- 滑模控制:±0.5%
6. 工程实践要点
-
实际调试建议:
- 先开环验证PWM生成
- 逐步启用电压均衡、环流抑制
- 最后投入闭环控制
-
常见问题处理:
- 电容电压不均衡:检查排序算法周期
- 振荡现象:适当降低控制带宽
- 过流保护:设置合理的限幅值
-
代码优化技巧:
c++复制// 使用查表法加速三角函数计算 const float sin_table[360]; float fast_sin(float degree) { int idx = ((int)degree) % 360; return sin_table[idx]; }
在完成这个MMC仿真项目后,我深刻体会到电力电子系统仿真的几个关键点:首先,数学模型准确性决定仿真可信度;其次,控制参数需要多次迭代优化;最后,实时性处理是工程实现的难点。建议初学者先从简单的两电平逆变器开始,逐步过渡到复杂的MMC系统仿真。
