1. MMC整流器实战项目概述
最近完成了一个基于Matlab的MMC(模块化多电平换流器)整流器仿真项目,这个18子模块的系统在直流侧需要稳定输出25.2kV电压,交流侧连接6.6kV电网。与教科书案例不同,实际工程中遇到的动态响应、环流抑制和电容电压均衡等问题要复杂得多。本文将详细解析从控制策略到算法实现的全过程,特别是一些在常规文献中很少提及的工程细节。
这个项目最核心的挑战在于:如何在保证直流电压稳定的同时,实现良好的环流抑制和电容电压均衡。我们采用了双闭环控制结合最近电平逼近调制(NLM)的方案,其中包含几个关键创新点:前馈解耦的动态补偿、基于希尔伯特变换的环流提取,以及桥臂电流方向自适应的冒泡排序算法。实测结果显示,网侧电流THD控制在1.47%以下,环流幅值从200A降至20A,电容电压波动控制在±1.8%以内。
2. 系统参数与核心架构设计
2.1 基础参数配置
本系统采用三相MMC拓扑结构,每个桥臂由18个子模块串联组成。关键参数配置如下:
| 参数名称 | 数值 | 单位 | 备注 |
|---|---|---|---|
| 直流侧电压 | 25.2 | kV | 额定工作点 |
| 交流侧电压 | 6.6 | kV | 线电压有效值 |
| 子模块电容 | 10 | mF | 单个子模块电容值 |
| 桥臂电感 | 15 | mH | 包含平波电抗 |
| 开关频率 | 2 | kHz | IGBT实际开关频率 |
| 系统额定功率 | 3.2 | MW | 有功功率输出 |
提示:子模块数量的选择需要考虑电压等级和冗余设计,18个子模块可以提供约11%的冗余度,确保单个子模块故障时系统仍能正常运行。
2.2 控制架构设计
系统采用分层控制架构,自上而下分为:
- 系统级控制:负责直流电压稳定和功率调节
- 环流抑制控制:专门处理桥臂间二倍频环流
- 调制与均压控制:实现最近电平调制和电容电压均衡
这种架构的优势在于各控制环路解耦明确,便于参数整定和性能优化。在实际调试中发现,将环流抑制独立出来处理,可以避免与主功率控制的相互干扰。
3. 双闭环控制实现细节
3.1 外环电压控制设计
外环采用经典PI控制器,其输出作为内环电流的d轴参考值。核心代码实现如下:
matlab复制% 外环电压PI控制器
Kp_outer = 0.8; % 比例系数
Ki_outer = 50; % 积分系数
error = Vdc_ref - Vdc_actual;
Id_ref = Kp_outer * error + Ki_outer * integral(error);
参数整定经验:
- 比例系数Kp过大会导致直流电压超调
- 积分系数Ki过大会引起低频振荡
- 最佳参数需要通过时域响应曲线反复调整
实测表明,当电网电压突降10%时,该控制策略能在80ms内将直流电压恢复至稳态,动态性能满足工程要求。
3.2 内环电流前馈解耦
内环采用PI+前馈解耦控制,关键实现点:
matlab复制% 前馈补偿项计算
ff_term = L * (ws * Iq_ref - (Vd/Vdc));
% 解耦项计算
decoupling = [0 -ws*L; ws*L 0] * [Id; Iq];
% 最终电压指令
Vd_cmd = Kp_inner*(Id_ref-Id) + Ki_inner*integral(Id_ref-Id) + ff_term - decoupling(1);
Vq_cmd = Kp_inner*(Iq_ref-Iq) + Ki_inner*integral(Iq_ref-Iq) - decoupling(2);
注意:dq轴耦合项的符号处理至关重要。调试时曾因符号错误导致解耦失效,系统响应出现严重振荡。正确的符号约定应确保解耦项能准确抵消耦合效应。
4. 环流抑制策略实现
4.1 二倍频环流提取算法
采用希尔伯特变换结合频移的方法提取环流二倍频分量:
matlab复制% 环流信号构造
i_circ = i_upper + i_lower;
% 解析信号生成
i_analytic = hilbert(i_circ);
% 二倍频下变频
i_2f = i_analytic .* exp(-1j*2*pi*100*t);
% 低通滤波后得到二倍频幅值
i_2f_amp = abs(lowpass(filter(i_2f), 10));
这种方法相比传统的带通滤波法,具有相位保持好、延迟小的优点。实测表明,它能将环流提取的延迟控制在1ms以内。
4.2 环流抑制PI控制
针对提取的二倍频环流设计专用PI控制器:
matlab复制% 环流PI控制器
Kp_circ = 0.5;
Ki_circ = 20;
circ_error = 0 - i_2f_amp; % 目标环流为0
circ_comp = Kp_circ * circ_error + Ki_circ * integral(circ_error);
% 生成补偿电压
v_circ_comp = circ_comp * sin(2*pi*100*t + angle(i_2f));
该补偿电压将叠加到调制波上,形成闭环控制。从实验结果看,桥臂电流THD从9.57%降至1.93%,效果显著。
5. 调制与均压控制
5.1 最近电平逼近调制(NLM)
NLM算法核心是根据参考电压确定需要投入的子模块数量:
matlab复制function n = NLM(u_cap, U_ref)
delta = abs(u_cap - U_ref);
[~, index] = sort(delta);
n = index(1:ceil(length(index)*U_ref/mean(u_cap)));
end
实际工程中需要考虑:
- 避免在电流峰值时刻切换子模块
- 设置合理的死区时间防止直通
- 加入冗余子模块的轮换策略
5.2 桥臂电流方向自适应的冒泡排序
电容电压均衡采用改进的冒泡排序算法:
matlab复制% 排序方向由桥臂电流方向决定
if i_arm > 0 % 正向电流
% 升序排序,投入低压模块
[cap_volt, idx] = sort(cap_volt, 'ascend');
else % 反向电流
% 降序排序,切除高压模块
[cap_volt, idx] = sort(cap_volt, 'descend');
end
% 更新子模块状态
SM_status = idx(1:N_required);
虽然冒泡排序时间复杂度为O(n²),但对于18个子模块的系统,在Matlab中执行时间完全可以接受(约0.05ms)。如果子模块数量超过50,建议考虑更高效的排序算法。
6. 实测结果与分析
6.1 稳态性能指标
| 指标名称 | 数值 | 标准要求 |
|---|---|---|
| 直流电压纹波 | <0.5% | <1% |
| 网侧电流THD | 1.47% | <2% |
| 有功功率波动 | ±0.8% | <2% |
| 电容电压不均衡度 | ±1.8% | <5% |
6.2 动态响应测试
在突加1MW负载时:
- 直流电压跌落约1.2kV
- 恢复时间120ms
- 无超调振荡
在电网电压骤降10%时:
- 直流电压波动2.4kV
- 恢复时间200ms
- 期间功率传输不间断
7. 工程经验与问题排查
7.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 直流电压振荡 | 外环PI参数过激 | 减小Kp,增加Ti |
| 环流抑制效果差 | 二倍频提取相位偏差 | 校准希尔伯特变换延迟 |
| 电容电压不均衡 | 排序算法执行周期过长 | 优化代码或减少子模块数量 |
| 网侧电流畸变 | 调制波畸变 | 检查PWM生成逻辑和死区设置 |
7.2 关键调试心得
-
参数整定顺序:必须先调内环再调外环。内环响应速度应比外环快5-10倍。
-
采样同步问题:所有控制算法的执行必须严格同步于PWM周期,否则会引入额外相移。
-
数值积分处理:离散积分需采用梯形法或双线性变换,避免欧拉法的精度损失。
-
实时性权衡:在Matlab仿真中可以接受较高的计算复杂度,但移植到实际控制器时需优化算法。
这套方案最值得称道的地方在于:用经典的冒泡排序算法配合精心设计的控制策略��在MMC这种复杂系统中实现了媲美高级算法的性能表现。当然,如果子模块数量继续增加,排序算法的优化将成为一个不容忽视的问题。在实际工程中,可以考虑引入分组排序或基于FPGA的并行排序方案来提升实时性。
