在高压直流输电领域,模块化多电平换流器(MMC)因其模块化设计、低谐波含量和高可靠性等优势,已成为柔性直流输电系统的核心设备。本次项目采用22个子模块构成的MMC拓扑,实现11kV直流电压到6.6kV交流电压的高效转换,输出功率稳定在2-3MW范围。整套控制系统融合了PI调节、滑模变结构、PIR谐振补偿等先进控制策略,最终实现网侧电流THD<3%的优质并网性能。
项目采用典型的半桥子模块结构,每个桥臂由22个子模块串联组成。根据直流侧电压11kV的要求,每个子模块的电容电压额定值设计为:
[ V_{cap} = \frac{U_{dc}}{N} = \frac{11000}{22} = 500V ]
交流侧线电压6.6kV对应的相电压峰值为:
[ V_{ph} = \frac{6600}{\sqrt{3}} \times \sqrt{2} \approx 5389V ]
子模块电容容值选择需满足能量缓冲需求,本方案采用:
[ C = \frac{2E}{NV_{cap}^2} = \frac{2 \times 5000}{22 \times 500^2} \approx 1.8mF ]
其中E为单个桥臂存储能量,按5kJ设计。
关键提示:电容电压纹波系数需控制在±10%以内,否则会导致最近电平调制(NLM)产生额外谐波。实际调试中发现,当纹波超过15%时,网侧电流THD会急剧上升至5%以上。
系统采用如图1所示的双闭环控制结构:
code复制[功率外环PI] → [电流内环滑模] → [前馈解耦] → [PIR环流抑制] → [NLM调制]
外环PI控制器参数通过劳斯判据整定:
[ K_p = \frac{L}{2T_s} = \frac{5mH}{2 \times 100\mu s} = 25 ]
[ K_i = \frac{R}{2T_s} = \frac{0.1\Omega}{2 \times 100\mu s} = 500 ]
内环滑模面设计为:
[ s = k_1(i_d^* - i_d) + k_2(i_q^* - i_q) ]
切换增益η采用自适应调整策略:
[ η = 10|s| + 0.5 ]
滑模控制的离散化实现代码如下,包含抗饱和处理:
c复制typedef struct {
float K; // 滑模面增益
float eta; // 切换增益
float lambda; // 指数趋近律系数
float u_max; // 输出限幅
} SMC_Controller;
float update_SMC(SMC_Controller *c, float error, float derror) {
float s = c->K * error + derror; // 滑模面
float u_eq = -c->lambda * s; // 等效控制
float u_sw = -c->eta * sign(s); // 切换控制
// 抗饱和处理
float u_total = u_eq + u_sw;
if(fabs(u_total) > c->u_max) {
u_total = (u_total > 0) ? c->u_max : -c->u_max;
}
return u_total;
}
实测表明,当η>15时系统开始出现明显抖振,导致IGBT开关损耗增加约23%。最终优化参数为:
针对二倍频环流的PIR控制器离散化实现:
python复制class PIR_Controller:
def __init__(self, Kp, Ki, Kr, omega, Ts):
self.Kp = Kp # 比例系数
self.Ki = Ki # 积分系数
self.Kr = Kr # 谐振系数
self.omega = omega # 谐振频率(2ω0)
self.Ts = Ts # 采样周期
self.integrator = 0
self.resonator = [0, 0] # 谐振状态变量
def update(self, error):
# 比例项
p_out = self.Kp * error
# 积分项
self.integrator += self.Ki * error * self.Ts
# 谐振项(二阶广义积分器)
wT = self.omega * self.Ts
self.resonator[0] += wT * (error - self.resonator[1])
self.resonator[1] += wT * self.resonator[0]
r_out = self.Kr * self.resonator[0]
return p_out + self.integrator + r_out
参数整定要点:
NLM算法实现流程:
mermaid复制graph TD
A[计算目标电压Vref] --> B[计算需要投入的子模块数n]
B --> C{电流方向判断}
C -->|正向| D[升序排序电容电压]
C -->|负向| E[降序排序电容电压]
D --> F[选择前n个模块投入]
E --> F
关键代码实现:
python复制def NLM_modulation(v_ref, cap_voltages, current_direction):
n = round(v_ref / (max(cap_voltages)+1e-6)) # 防止除零
n = np.clip(n, 0, len(cap_voltages)) # 限幅
# 根据电流方向确定排序方式
if current_direction > 0:
sorted_indices = np.argsort(cap_voltages) # 升序
else:
sorted_indices = np.argsort(-cap_voltages) # 降序
# 生成PWM信号
pwm = np.zeros_like(cap_voltages)
pwm[sorted_indices[:n]] = 1
return pwm
采用改进的快速排序算法实现均压:
c复制void balanceModules(Module *modules, int count, float armCurrent) {
// 排序方向选择
int ascending = (armCurrent > 0) ? 1 : 0;
// 快速排序实现
quickSort(modules, 0, count-1, ascending);
// 更新投入状态
for(int i=0; i<count; i++) {
modules[i].active = (i < g_targetNum) ? 1 : 0;
}
}
// 快速排序核心
void quickSort(Module arr[], int low, int high, int ascending) {
if(low < high) {
int pi = partition(arr, low, high, ascending);
quickSort(arr, low, pi-1, ascending);
quickSort(arr, pi+1, high, ascending);
}
}
实测数据对比:
| 指标 | 均衡前 | 均衡后 |
|---|---|---|
| 电容电压偏差 | ±12% | ±3.5% |
| 排序耗时(μs) | 58 | 22 |
| THD影响 | +1.2% | +0.3% |
在2MW功率输出下的测试数据:
波形对比如图所示:


问题1:滑模控制引发高频振荡
matlab复制% 原切换控制
u_sw = eta * sign(s);
% 改进后
phi = 0.1; // 边界层厚度
u_sw = eta * sat(s/phi);
问题2:PIR控制效果不佳
c复制// 在线更新谐振频率
void updateResonanceFreq(PIR_Controller *c, float actualFreq) {
c->omega = 2 * 2 * PI * actualFreq; // 2倍频
}
问题3:电容电压均衡失效
python复制def predictCurrentDirection(i_prev, di_dt):
return 1 if (i_prev + di_dt*Ts) > 0 else -1
在实际调试中发现几个关键经验:
参数整定顺序:必须先整定PI外环,再调滑模内环,最后加入PIR控制。逆序调试会导致系统失稳。
采样同步处理:PWM中断服务中必须包含:
c复制void PWM_ISR() {
ADC_StartConversion(); // 启动采样
while(!ADC_Ready()); // 等待转换完成
control_update(); // 执行控制算法
update_PWM(); // 更新占空比
}
死区补偿技巧:在NLM调制后添加:
python复制def addDeadtime(pwm, deadtime_ns):
turn_off_first = (pwm_diff > 0) # 根据电流极性判断
if turn_off_first:
return pwm - deadtime_ns/1e9 * PWM_freq
else:
return pwm + deadtime_ns/1e9 * PWM_freq
散热设计要点: