1. 混合型MMC多电平整流侧仿真实战解析
上周实验室的示波器上终于跳出了完美的波形,这意味着历时三周的混合型MMC多电平整流侧仿真攻坚战告一段落。作为电力电子领域的"缝合怪",这个系统集成了电压电流双闭环控制、环流抑制、子模块电容电压均压以及载波移相调制等关键技术,任何一个环节的失误都会导致整个系统崩溃。本文将详细拆解仿真过程中的技术要点和血泪教训,特别适合正在研究模块化多电平换流器(MMC)的工程师参考。
2. 系统架构与核心控制策略
2.1 主电路拓扑设计
本次仿真采用三相混合型MMC拓扑结构,每相由上下两个桥臂组成,每个桥臂包含63个子模块(21个全桥+42个半桥)。这种混合配置既保留了全桥模块的直流故障穿越能力,又兼顾了半桥模块的效率和成本优势。关键参数如下表所示:
| 参数名称 | 数值 | 说明 |
|---|---|---|
| 直流母线电压 | ±10kV | 双极结构 |
| 子模块电容 | 8mF | 450V额定电压 |
| 桥臂电感 | 5mH | 限制环流和di/dt |
| 开关频率 | 2kHz | 载波移相调制下的等效频率 |
注意:子模块电容容值不宜过小,否则会导致电压波动过大。根据经验,电容储能应至少能维持3个工频周期的能量交换。
2.2 双闭环控制架构
电压外环和电流内环构成了系统的控制骨架。外环负责维持直流母线电压稳定,内环则快速跟踪电流指令。两者配合的关键在于时间常数的匹配:
matlab复制function [id_ref, iq_ref] = outer_voltage_loop(vdc_actual, vdc_ref)
persistent integral_term;
if isempty(integral_term)
integral_term = 0;
end
error = vdc_ref - vdc_actual;
integral_term = integral_term + 0.001*error; // 积分系数别乱动!
id_ref = 0.5*error + integral_term; // 外环输出作为内环的d轴给定
iq_ref = 0; // q轴在整流模式先置零
end
调试心得:
- 电流环带宽至少应为电压环的3倍以上,实测最佳比例在3.5-4倍之间
- 积分系数初始值建议设为0.001,然后以20%步长微调
- 动态负载测试时,可临时增大比例系数提升响应速度
3. 环流抑制技术实现
3.1 环流检测算法
相间环流是MMC系统的特有现象,主要包含二倍频分量。我们采用移动平均滤波结合陷波器的方案提取环流成分:
python复制def circulating_current_detect(arm_current):
window_size = int(3 * fs / f0)
ma_filter = np.convolve(arm_current, np.ones(window_size)/window_size, mode='same')
# 50Hz陷波器设计
b, a = signal.iirnotch(2*f0, 30, fs) # 特别注意是二倍频!
filtered_current = signal.filtfilt(b, a, arm_current - ma_filter)
return filtered_current
3.2 相位补偿技巧
陷波器会引入相位延迟,必须进行补偿。通过仿真对比发现,采用零相位滤波(filtfilt)可有效解决此问题。其他关键参数选择原则:
- 移动平均窗口取3个基波周期长度
- 陷波器品质因数Q控制在20-30之间
- 算法执行周期应与PWM周期同步
血泪教训:未补偿的相位延迟曾导致抑制信号与环流错位90°,造成电容电压剧烈波动(峰值达到额定值的130%)
4. 电容电压均衡策略
4.1 排序法实现
对于63个子模块的系统,采用快速排序算法结合占空比补偿:
c复制int compare_voltage(const void* a, const void* b) {
return (*(Submodule*)a).v_cap > (*(Submodule*)b).v_cap ? 1 : -1;
}
void balance_control(Submodule sm[], int size) {
qsort(sm, size, sizeof(Submodule), compare_voltage);
// 前10%的模块减少投入时间
for(int i=0; i<size/10; i++){
sm[i].duty_cycle *= 0.95;
}
// 后10%的模块增加投入时间
for(int i=size-1; i>size*0.9; i--){
sm[i].duty_cycle *= 1.05;
}
}
4.2 优化建议
- 对于子模块数>200的系统,建议改用分组排序策略
- 调整系数不宜过大(控制在±5%以内),避免引入新的不平衡
- 排序周期可设为PWM周期的2-3倍,减轻计算负担
实测效果:电容电压偏差从初始的±15%降至±3%以内,各模块热分布明显改善。
5. 载波移相调制实现
5.1 相位生成算法
采用FPGA常用的相位累加器方案,实现17个桥臂的载波移相:
verilog复制always @(posedge clk) begin
phase_acc <= phase_acc + 7'd21; // 21=360/17≈21.17 取整
if(phase_acc >= 360) phase_acc <= phase_acc - 360;
carr_wave = (phase_acc < 180) ? phase_acc : phase_acc-360;
end
5.2 量化误差分析
7位相位累加器引入的量化误差对系统影响如下表所示:
| 子模块数量 | THD增加量 | 电压不平衡度变化 |
|---|---|---|
| 10 | +0.8% | +1.2% |
| 30 | +0.3% | +0.5% |
| 50 | +0.1% | +0.2% |
结论:当子模块数超过30时,量化误差影响可忽略不计。
6. 调试问题全记录
6.1 典型故障现象及对策
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 直流电压持续振荡 | 电流环响应过慢 | 增大电流环比例系数 |
| 电容电压发散 | 均压算法执行周期过长 | 缩短排序周期至PWM周期级别 |
| 桥臂电流畸变严重 | 环流抑制信号相位错误 | 检查滤波器延迟补偿 |
| 子模块IGBT过热 | 开关频率设置过高 | 优化死区时间和散热设计 |
6.2 参数整定经验
- 先调电流环再调电压环
- 环流抑制器最后投入
- 测试时逐步增加负载阶跃幅度
- 保存每个稳定状态的参数快照
最终实现的性能指标:
- 直流电压纹波:<1.5%
- 交流电流THD:2.3%
- 电容电压不平衡度:±2.8%
- 动态响应时间(50%负载阶跃):<20ms
这个项目让我深刻体会到,MMC系统就像精密钟表,每个齿轮都必须严丝合缝。建议后来者准备足够的咖啡和耐心,从理论计算到参数整定,每一步都要反复验证。当看到所有波形完美同步的那一刻,你会觉得一切付出都值得。
