1. MMC拓扑结构与SIMULINK建模优势
模块化多电平变换器(Modular Multilevel Converter, MMC)作为高压直流输电(HVDC)领域的革命性拓扑,其核心价值在于通过子模块(Sub-Module, SM)的级联组合实现高压大功率电能变换。每个子模块通常由IGBT半桥或全桥电路构成,搭配直流电容作为能量缓冲单元。与传统两电平或三电平变换器相比,MMC具有以下显著特征:
- 输出电压谐波含量极低:通过多电平叠加,无需大体积滤波器即可满足电网谐波标准
- 模块化可扩展设计:子模块数量可根据电压等级灵活增减,维护时只需隔离故障模块
- 低开关损耗:采用最近电平逼近调制(NLM)时,单个器件开关频率仅为等效输出频率的1/N(N为电平数)
在SIMULINK环境中构建MMC模型具有独特优势。其可视化建模界面允许我们通过拖拽基本电气元件(如IGBT、电容、电阻)快速搭建子模块,再利用Simscape Power Systems库中的三相变压器、电网模型等组件完成系统级连接。更重要的是,SIMULINK支持:
- 多速率仿真:对控制环路(μs级)和功率电路(ms级)设置不同步长
- 实时参数调优:在仿真运行中动态调整PI控制器参数
- 波形自动分析:通过Powergui工具直接计算THD、频谱等关键指标
实际建模中发现:当子模块数量超过20个时,建议启用SIMULINK的加速器模式(Accelerator)或快速加速器模式(Rapid Accelerator),否则仿真速度会显著下降。这是因为每个子模块都包含非线性开关器件,导致计算复杂度呈指数增长。
2. 子模块建模与电容电压平衡控制
2.1 半桥子模块的详细实现
在SIMULINK中构建半桥子模块时,需特别注意以下关键参数设置:
matlab复制% IGBT参数示例(使用Simulink自带的理想开关模型)
Ron = 1e-3; % 导通电阻(Ω)
Lon = 0; % 导通电感(H)
Vf = 0.8; % 正向压降(V)
Tf = 1e-6; % 关断时间(s)
Td = 2e-6; % 延迟时间(s)
电容参数选择需考虑纹波电压要求:
code复制C = (N×I_arm)/(2×ΔV_c×f_carrier)
其中:
N - 每臂子模块数
I_arm - 桥臂电流(A)
ΔV_c - 允许的电容电压波动(V)
f_carrier - 载波频率(Hz)
2.2 电压平衡控制策略
电容电压失衡是MMC运行的主要挑战。我们采用分层控制架构:
- 全局能量控制:通过调整上下桥臂的投入模块数差值,维持总储能稳定
code复制ΔN = K_p×(E_ref - E_avg) + K_i×∫(E_ref - E_avg)dt - 局部排序控制:每个控制周期(通常50μs)执行:
- 测量所有子模块电容电压
- 根据桥臂电流方向决定投入/切出优先级
- 电流>0时:优先投入低压模块,切出高压模块
- 电流<0时:反向操作
在SIMULINK中实现时,建议使用MATLAB Function模块编写排序算法,而非直接用S-Function,因为:
- 更友好的调试界面(可设置断点观察排序过程)
- 支持直接调用sort()等内置函数
- 自动生成代码时可保留更高可读性
3. 调制策略与环流抑制
3.1 最近电平逼近调制(NLM)实现
NLM特别适合MMC这类电平数多的场景,其SIMULINK实现步骤:
- 计算参考电压V_ref在[-N, +N]范围内的归一化值
- 四舍五入得到最接近的整数电平数n
- 从当前可用的子模块中选择n个投入运行
关键代码如下:
matlab复制function n = NLM(V_ref, V_cap, N)
% V_ref: 归一化后的参考电压
% V_cap: 各子模块电容电压数组
% N: 每臂子模块总数
n_float = round(V_ref * N); % 浮点数电平
n = min(max(n_float, 0), N); % 限幅在[0, N]区间
% 根据电容电压排序结果选择具体子模块
[~, idx] = sort(V_cap);
if V_ref >= 0
selected = idx(1:n); % 投入电容电压最低的n个
else
selected = idx(end-n+1:end); % 投入电容电压最高的n个
end
end
3.2 二倍频环流抑制
MMC运行时固有的二倍频环流(频率为2倍基频)会增大器件应力。抑制方法包括:
-
控制注入法:在桥臂电压参考值中加入:
code复制V_cir = -K×(i_diff - i_diff_avg)其中i_diff为环流分量,通过带通滤波器提取
-
参数设计要点:
- 桥臂电感L_arm通常取0.1~0.2 pu(基值Z_base=V_base^2/S_base)
- 控制增益K需满足:K < 2ωL_arm(ω为基频角频率)
- SIMULINK中可用Three-Phase Harmonic Filter模块实现分量提取
实测数据对比:
| 控制方式 | 环流峰值(A) | 电容电压波动(V) |
|---|---|---|
| 无抑制 | 120 | ±15% |
| 注入法 | 30 | ±8% |
4. 完整系统仿真与故障分析
4.1 典型仿真参数配置
搭建31电平MMC的推荐参数:
matlab复制% 主电路参数
Vdc = 20e3; % 直流母线电压(V)
N = 30; % 每臂子模块数
C_sm = 5e-3; % 子模块电容(F)
L_arm = 5e-3; % 桥臂电感(H)
% 控制系统参数
f_sw = 2e3; % 载波频率(Hz)
Kp_energy = 0.5; % 能量控制比例系数
Ki_energy = 10; % 能量控制积分系数
4.2 常见故障仿真方法
-
子模块短路:
- 在目标子模块的IGBT驱动信号中加入5μs的直通脉冲
- 观察直流侧电流和相邻模块电压变化
- 保护策略验证:在检测到过流后2ms内触发旁路开关
-
电网不对称跌落:
- 使用Three-Phase Fault模块设置单相80%电压跌落
- 重点监测负序电流分量和电容电压不平衡度
-
仿真加速技巧:
- 对控制部分使用定步长离散求解器(如ode3)
- 对功率电路使用变步长求解器(如ode23tb)
- 启用"代数环"警告检查(Configuration Parameters > Diagnostics)
5. 进阶建模技巧与性能优化
5.1 并行计算加速
对于大规模MMC模型(如>50个子模块),可采用:
- 模型分区:将各相桥臂封装为独立原子子系统(Atomic Subsystem)
- 启用多核:在Simulation > Model Configuration Parameters > Solver中设置:
code复制Solver Type: Fixed-step Solver: ode3 (Bogacki-Shampine) Enable parallel simulation: checked Number of threads: auto
5.2 代码生成与HIL测试
通过Embedded Coder可将控制算法生成C代码:
- 将电压平衡控制、调制算法等封装为MATLAB Function
- 配置Code Generation目标为"ert.tlc"(Embedded Real-Time)
- 关键接口配置:
matlab复制% 在Model Explorer中设置IO口 Port1.DataType = 'uint16'; % 子模块状态 Port2.DataType = 'single'; % 电容电压
实测性能对比:
| 实现方式 | 执行时间(μs) |
|---|---|
| 解释型S函数 | 45 |
| 生成代码 | 3.2 |
5.3 实际工程中的经验参数
根据多个HVDC项目数据统计,推荐:
- 电容电压纹波系数:<10%额定值
- 桥臂电流THD:<3%(无额外滤波时)
- 控制周期:≤100μs(对应10kHz采样)
- 子模块冗余度:通常设计为10%~15%
在模型验证阶段,务必检查:
- 稳态时各电容电压标准差应<1%平均值
- 动态负载阶跃下直流电压超调量<5%
- 故障清除后恢复时间<100ms
