在电力电子仿真领域,模块化多电平换流器(MMC)因其模块化结构、高输出电压质量和低开关损耗等优势,已成为高压直流输电(HVDC)系统的核心器件。Simulink自带的MMC案例默认采用载波移相调制(CPS-SPWM)策略,但在实际工程中,最近电平逼近调制(NLC)因其更低的开关频率和更高的效率,在大容量场合更具优势。
最近电平逼近调制的核心思想是根据当前时刻的调制波瞬时值,选择最接近的可用输出电平。与CPS-SPWM相比,NLC具有以下特点:
我在改造Simulink自带模型时发现,原系统的子模块电容电压平衡逻辑与NLC完全不兼容。这是因为CPS-SPWM采用循环投切策略,而NLC需要根据电压偏差动态调整投切顺序。这迫使我对模型进行了深度重构,包括调制波生成、电平计算和电容平衡三个核心环节。
Simulink自带的MMC案例采用标准的正弦脉宽调制(SPWM)架构,包含:
这些模块在NLC策略下完全失效,必须彻底移除。我新建了以下功能单元:
电平计算是NLC的核心算法,其数学表达式为:
[ n = round\left(\frac{u_{ref}}{V_{step}}\right) ]
其中,( V_{step} = \frac{V_{cap_sum}}{N} ),N为桥臂子模块总数。
在Simulink中实现的MATLAB Function代码如下:
matlab复制function n = NLC_Calc(u_ref, V_cap_sum)
% 输入参数:
% u_ref - 当前时刻的调制波电压值
% V_cap_sum - 桥臂所有子模块电容电压总和
% 输出参数:
% n - 需要投入的子模块数量(可正可负)
N = 40; % 单桥臂子模块总数
V_step = V_cap_sum / N; % 计算单模块电压步长
n = round(u_ref / V_step); % 四舍五入取整
n = max(min(n, N/2), -N/2); % 限制在±N/2范围内
end
注意:Simulink的MATLAB Function模块不支持persistent变量存储状态,因此无法在函数内部实现变化率限制。必须在函数外接Rate Limiter模块,将电平变化率限制在每周期最多±2个电平,避免调制波突变时产生不连续跳变。
初始实现时观察到的波形问题:
通过以下措施显著改善波形质量:
优化前后THD对比:
| 条件 | THD(%) | 仿真时间(s) |
|---|---|---|
| 固定步长50μs | 7.2 | 42 |
| 变步长ode23t | 5.8 | 136 |
Simulink自带模型采用简单的循环投切策略,其特点是:
这种策略在NLC下会导致:
我设计的新型排序算法包含以下关键改进:
电压偏差加权计算:
[ w_i = |v_{c_i} - V_{target}| \times (1 + k \times direction) ]
其中direction反映电流方向(充电为+1,放电为-1)
动态排序机制:
具体实现代码如下:
matlab复制function [gate] = CapacitorBalance(capVoltages, direction)
% 输入参数:
% capVoltages - 各子模块电容电压数组
% direction - 电流方向(1充电,-1放电)
% 输出参数:
% gate - 子模块投切命令(1投入,0切除)
targetVoltage = 5000; % 目标电压值(V)
k = 0.1; % 方向权重系数
% 计算带权重的电压偏差
weights = abs(capVoltages - targetVoltage) .* (1 + k*direction);
% 按权重降序排序
[~, index] = sort(weights, 'descend');
% 生成投切命令(前20个投入)
gate = zeros(size(capVoltages));
gate(index(1:20)) = 1;
end
通过大量仿真实验确定的优化参数:
| 参数 | 初始值 | 优化值 | 影响分析 |
|---|---|---|---|
| 排序周期 | 50μs | 20μs | 电压波动从±8%降至±3% |
| 权重系数k | 0.05 | 0.1 | 动态响应速度提升40% |
| 目标电压 | 5050V | 5000V | 稳态误差减小2% |
算法执行周期对系统性能的影响:
不同仿真算法的对比测试结果:
| 算法类型 | 步长 | THD(%) | 仿真时间 | 适用场景 |
|---|---|---|---|---|
| ode45 | 变步长 | 6.1 | 98s | 快速验证 |
| ode23t | 变步长 | 5.8 | 136s | 精确分析 |
| Fixed-step | 20μs | 6.3 | 75s | 实时仿真 |
| Fixed-step | 50μs | 7.2 | 42s | 初步调试 |
选择建议:
NLC调制固有的谐波分布特点:
实测谐波频谱数据:
| 谐波次数 | 幅值(V) | 占比(%) |
|---|---|---|
| 13 | 85.7 | 1.71 |
| 39 | 126.3 | 2.53 |
| 41 | 118.6 | 2.37 |
抑制措施:
基于仿真经验的工程实施要点:
硬件设计:
控制参数:
系统保护:
单相模型可扩展至三相系统的要点:
关键修改部分:
结合NLC与PWM优势的混合方案:
实现方法:
matlab复制function [n_final] = HybridModulation(u_ref, V_cap_sum)
m = abs(u_ref)/(V_cap_sum/2); % 计算调制比
if m > 0.8
n_final = NLC_Calc(u_ref, V_cap_sum); % 纯NLC
elseif m < 0.3
n_final = PWM_Calc(u_ref); % 纯PWM
else
n_NLC = NLC_Calc(u_ref, V_cap_sum);
n_PWM = PWM_Calc(u_ref);
n_final = round(0.5*(n_NLC+n_PWM)); % 混合输出
end
end
将Simulink模型部署至实时仿真器的要点:
模型离散化设置:
代码生成优化:
实时性能监测: