当前位置: 首页 > news >正文

基于 MATLABSimulink的 MMC 闭环仿真模型

模块化多电平换流器(MMC)在运行时,由于各相单元子模块参数微小差异及开关动作不一致,会产生由二次侧频率(通常为二倍频)为主的内部环流。若不加抑制,会导致器件应力剧增、功率损耗加大及电容电压失衡。

基于 MATLAB/Simulink 的 MMC 闭环仿真模型,重点实现环流抑制(Circulating Current Suppression, CCS)


一、 系统核心架构与数学模型

1.1 闭环控制整体框图

为了实现无环流运行,通常采用经典的三环控制架构

  1. 功率/直流电压外环:根据功率指令或直流电压指令,生成内环电流参考。
  2. 交流电流内环:采用 \(dq\) 坐标系下的 PI 控制 + 前馈解耦,生成各相的调制波。
  3. 环流抑制环(CCS):提取各相内部环流的二倍频分量,通过准PR(Quasi-PR)控制器生成修正量,叠加到调制波中以抵消环流。

1.2 桥臂电流与环流定义

对于 \(j\) 相(\(j=a, b, c\)),桥臂电流 \(i_{pj}, i_{nj}\),输出电流 \(i_{sj}\),内部环流 \(i_{diff\_j}\) 定义为:

\[i_{diff\_j} = \frac{i_{pj} + i_{nj}}{2} = i_{circ\_dc} + i_{circ\_2\omega} \]

其中,\(i_{circ\_2\omega}\) 即为需要抑制的二倍频交流分量。


2.1 主程序与参数初始化 (main_mmc_sim.m)

该脚本用于定义系统参数并启动仿真。

%% MMC闭环无环流抑制仿真 - 主程序
clear; clc; close all;% ==================== 系统参数 ====================
params.Vdc = 20e3;            % 直流侧电压 20kV
params.Vac_peak = params.Vdc / 2; % 交流侧峰值电压 (理想情况下)
params.f_ac = 50;              % 交流频率 50Hz
params.N_sub = 20;             % 每桥臂子模块数 (例如20个,形成21电平)
params.C_sub = 10e-3;        % 子模块电容 10mF
params.L_arm = 20e-3;         % 桥臂电感 20mH
params.R_arm = 0.1;           % 桥臂等效电阻
params.f_sw = 2000;           % 开关频率 2kHz
params.Ts = 1/params.f_sw;    % 仿真步长% ==================== 控制器参数 ====================
% 外环:直流电压控制 (或功率控制)
params.Kp_vdc = 5;
params.Ki_vdc = 100;% 内环:电流解耦控制
params.Kp_idq = 2;
params.Ki_idq = 100;% 环流抑制控制器 (准PR控制)
params.Kp_pr = 5;            % 比例增益
params.Kr_pr = 200;          % 谐振增益
params.wc = 2*pi*5;         % 截止频率 (通常取电网频率的 5-10Hz)
params.w0 = 2*pi*100;        % 谐振频率 (二倍频 100Hz)% ==================== 运行仿真 ====================
fprintf('正在启动 MMC 闭环仿真...\n');
sim('mmc_closed_loop_simulink.slx'); % 运行Simulink模型% 仿真结束后,会自动在工作区生成变量供分析
analyze_results();

在 Simulink 中,可以使用 MATLAB Function 模块直接编写核心控制算法。以下代码实现了包含环流抑制的完整控制逻辑:

function [V_ref_upper, V_ref_lower] = mmc_control_algorithm(...i_a, i_b, i_c, i_up_a, i_lo_a, ... % 测量信号:交流电流,A相上下桥臂电流vdc_measured, Pref, Qref, params)
% MMC 闭环控制算法 (含环流抑制)% 将参数结构体转为局部变量
Ts = params.Ts;
Vdc = params.Vdc;
N = params.N_sub;
Kp_vdc = params.Kp_vdc;
Ki_vdc = params.Ki_vdc;
Kp_idq = params.Kp_idq;
Ki_idq = params.Ki_idq;
Kp_pr = params.Kp_pr;
Kr_pr = params.Kr_pr;
wc = params.wc;
w0 = params.w0;persistent integral_vdc integral_id integral_iq ...integral_pr pr_last1 pr_last2...% 初始化积分器
if isempty(integral_vdc)integral_vdc = 0; integral_id = 0; integral_iq = 0;integral_pr = 0; pr_last1 = 0; pr_last2 = 0;
end% ==========================================
% 1. 坐标变换 (3s/2r)
% ==========================================
theta = atan2(-i_b + sqrt(3)*i_c/2, 3*i_a/2 - i_b/2); % 简化的锁相环 (PLL)
cos_theta = cos(theta); sin_theta = sin(theta);% Clarke变换
i_alpha = i_a;
i_beta = (i_b - i_c) / sqrt(3);% Park变换
i_d =  i_alpha * cos_theta + i_beta * sin_theta;
i_q = -i_alpha * sin_theta + i_beta * cos_theta;% ==========================================
% 2. 外环控制:直流电压/功率 (此处以直流电压为例)
% ==========================================
vdc_error = Vdc - vdc_measured;
integral_vdc = integral_vdc + vdc_error * Ts;% 限幅防止积分饱和
integral_vdc = max(min(integral_vdc, 10), -10);% 外环输出作为内环电流参考
i_d_ref = Pref / (1.5 * Vdc); % 若用功率控制 Pref
% i_d_ref = Kp_vdc * vdc_error + Ki_vdc * integral_vdc; 
i_q_ref = 0; % 设定无功功率为0 (根据实际需求修改)% ==========================================
% 3. 内环控制:电流解耦 (dq轴)
% ==========================================
error_d = i_d_ref - i_d;
error_q = i_q_ref - i_q;integral_id = integral_id + error_d * Ts;
integral_iq = integral_iq + error_q * Ts;% 前馈解耦电压
v_d_feedforward = -params.w0 * params.L_arm * i_q;
v_q_feedforward =  params.w0 * params.L_arm * i_d;% 内环PI输出
v_d_ref_raw = Kp_idq * error_d + Ki_idq * integral_id + v_d_feedforward;
v_q_ref_raw = Kp_idq * error_q + Ki_idq * integral_iq + v_q_feedforward;% 反Park变换得到Alpha-Beta坐标系指令
v_alpha_ref =  v_d_ref_raw * cos_theta - v_q_ref_raw * sin_theta;
v_beta_ref =   v_d_ref_raw * sin_theta + v_q_ref_raw * cos_theta;% ==========================================
% 4. 【关键】环流抑制控制 (CCS) - 准PR控制
% ==========================================
% 计算A相环流 (通常只需提取上下桥臂电流的平均值)
i_circ_a = (i_up_a + i_lo_a) / 2;% 提取二倍频分量 (准PR控制器)
% 离散域准PR传递函数: y(k) = b0*u(k) + b1*u(k-1) + b2*u(k-2) + a1*y(k-1) + a2*y(k-2)
% 此处简略为:使用谐振控制器对两倍频误差进行积分修正
% 实际应用中建议用二阶广义积分器(SOGI)提取特定频率再送入PI/PRerror_circ = 0 - i_circ_a; % 目标是将环流抑制为0% 准PR控制器差分方程实现
% 离散化参数 (示例,实际需根据Ts, wc, w0计算系数)
b0 = Kr_pr + Kp_pr*wc; b1 = -2*Kr_pr; b2 = Kr_pr - Kp_pr*wc;
a1 = -2*exp(-wc*Ts)*cos(w0*Ts); a2 = exp(-2*wc*Ts);% 更新历史状态
pr_out = b0*error_circ + b1*pr_last1 + b2*pr_last2 + a1*pr_last1 + a2*pr_last2;
pr_last2 = pr_last1; pr_last1 = error_circ;% ==========================================
% 5. 调制波合成与输出
% ==========================================
% 将内环调制波加上环流抑制修正量
% 注意:环流抑制的修正量通常需要分别加到上下桥臂的调制波上,且极性相反
delta_v = pr_out; % 生成最终的桥臂电压参考 (以A相为例,其他相同理)
% 实际Simulink中通常分别对ABC三相进行计算
V_ref_upper = 0.5 * Vdc + v_alpha_ref + delta_v;
V_ref_lower = 0.5 * Vdc - v_alpha_ref - delta_v;end

2.3 仿真结果分析函数 (analyze_results.m)

仿真运行后,调用此函数绘制波形验证环流抑制效果。

%% 结果分析与绘图
function analyze_results()% 假设仿真模型输出了以下变量到工作区:% t, i_up_a, i_lo_a, i_circ_a, vdcfigure('Position', [100, 100, 1200, 800], 'Color', 'w');% 子图1:上下桥臂电流subplot(3, 2, 1);plot(t, i_up_a, 'b', 'LineWidth', 1.2); hold on;plot(t, i_lo_a, 'r--', 'LineWidth', 1.2);legend('上桥臂电流 i_{pa}', '下桥臂电流 i_{na}');xlabel('时间 (s)'); ylabel('电流 (A)');title('MMC A相桥臂电流');grid on;% 子图2:内部环流 (关键验证)subplot(3, 2, 2);plot(t, i_circ_a, 'k', 'LineWidth', 1.5);yline(0, 'r--', 'LineWidth', 1);xlabel('时间 (s)'); ylabel('环流 i_{diff} (A)');title('A相内部环流 (应接近0且无二倍频纹波)');grid on;% 子图3:直流电压subplot(3, 2, 3);plot(t, vdc, 'm', 'LineWidth', 1.5);yline(20e3, 'k--');xlabel('时间 (s)'); ylabel('电压 (V)');title('直流侧电压 V_{dc}');grid on;% 子图4:FFT分析环流频谱subplot(3, 2, 4);L = length(i_circ_a);Fs = 1/(t(2)-t(1));Y = fft(i_circ_a - mean(i_circ_a));P2 = abs(Y/L);P1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);f = Fs*(0:(L/2))/L;plot(f, P1, 'b', 'LineWidth', 1.5);xlabel('频率 (Hz)'); ylabel('幅值');title('环流频谱分析 (观察100Hz分量是否被抑制)');xlim([0, 200]); grid on;% 子图5:总谐波失真(THD)计算subplot(3, 2, 5);fund_idx = find(f >= 50, 1);harmonic_idx = find(f > 50 & f <= 250);thd = sqrt(sum(P1(harmonic_idx).^2)) / P1(fund_idx) * 100;bar([P1(fund_idx), sqrt(sum(P1(harmonic_idx).^2))]);set(gca, 'XTickLabel', {'基波', '谐波'});ylabel('电流幅值 (A)');title(sprintf('桥臂电流 THD = %.2f%%', thd));grid on;% 子图6:控制指令跟踪subplot(3, 2, 6);area(t, abs(i_up_a) + abs(i_lo_a));xlabel('时间 (s)'); ylabel('绝对值之和');title('系统动态响应过程');grid on;sgtitle('MMC闭环无环流仿真结果分析');
end

参考代码 MMC变流器仿真 www.youwenfan.com/contentcnu/55084.html

三、 关键技术点与调试建议

  1. 环流抑制策略选型

    • 准PR控制 (Quasi-PR):对特定频率(如100Hz)交流量能实现零稳态误差跟踪,抗电网频率波动能力强,是目前最常用的方案。
    • PI控制 + 二倍频提取:先用SOGI(二阶广义积分器)或陷波器提取100Hz分量,再用PI控制。原理简单,但动态响应稍慢。
    • 虚拟阻抗法:通过在控制环路中引入虚拟阻抗,增大对环流高频分量的阻尼,常与PR控制配合使用以抑制高次谐波。
  2. 仿真建模技巧

    • 详细模型 vs 平均值模型:本文采用的是控制算法层面的数学模型。在 Simulink 中搭建主电路时,建议使用 MMC Detailed Model(包含实际子模块电容和开关器件)来验证电容电压平衡排序算法(Nearest Level Modulation, NLM)的效果;若仅关注外特性,可使用平均值模型提高仿真速度。
    • 解耦控制:在内环电流控制中,务必加入 \(-\omega L i_q\)\(\omega L i_d\) 的解耦项,否则会导致 \(dq\) 轴电流耦合,引起振荡。
  3. 常见故障排查

    • 环流无法抑制/发散:检查准PR控制器的离散化系数是否正确推导;检查环流修正量 \(\Delta v\) 叠加到上下桥臂时的正负号是否正确(必须是相反的)。
    • 直流电压振荡:检查外环PI控制器的积分限幅是否合理;检查功率参考值与实际物理系统的匹配度。
http://www.jsqmd.com/news/702779/

相关文章:

  • 避坑指南:Ansys Icepak仿真结果异常(高温、不收敛、数据丢失)的5个常见原因与解决方法
  • Pytest插件生态深度游:5个提升你测试效率的神器(含pytest-xdist, pytest-html配置)
  • 5步构建稳定黑苹果系统:2025终极硬件兼容指南
  • Mem Reduct终极指南:3分钟掌握Windows内存优化神器
  • 2026年盘点杭州地质模型靠谱供应商,十大厂家全梳理 - myqiye
  • .NET SOLID、高内聚低耦合、分层
  • 2026年杭州高性价比地质标本工厂排名,教育地质标本厂靠谱吗? - 工业品网
  • 2026 国内一线实力派品牌定位公司、营销咨询公司排名榜分析 - 设计调研者
  • IEEE论文接收后,收到proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)
  • 题解:洛谷 B2075 幂的末尾
  • 机器学习中的梯度:概念、计算与优化实践
  • 如何快速掌握Java网络文件访问:jcifs-ng完整指南
  • 探寻2026年杭州地质标本专业供应商,哪家口碑佳 - 工业品牌热点
  • Kubernetes简介 - 邓维
  • 2026一体化预制泵站十大口碑厂家权威榜单:一体化泵站/玻璃钢一体化泵站/一体化污水提升泵站源头实力厂家精选 - 泵站报价15613348888
  • 高性能星空渲染 DirectX 最佳实践:从程序化生成到稳定显示的2026优化指南
  • INAV飞控系统:从新手到专家的5个关键突破点
  • UE4资源引用全解析:从FSoftObjectPath到TSoftClassPtr,别再傻傻分不清了
  • 别再蒙圈了!手把手教你用CANoe和示波器实测CAN/CAN FD波特率(附波形图)
  • GitHub 热门项目 | 2026年04月26日
  • CefFlashBrowser:如何在2024年重温经典Flash游戏的终极解决方案
  • 2026年杭州地区地质模型厂推荐,专业地质模型大型厂家全解析 - mypinpai
  • 2026最新驱动更新后霍格沃茨之遗DX12崩溃怎么办?排查教程
  • AI写作限流的原因技术分析,附公众号小红书限流恢复实战,7天重回流量池的具体操作
  • Windows 11重装系统后,我踩遍了PostgreSQL 11.22的安装坑(附完整避坑指南)
  • 从单体到群体:Swarm开源项目构建分布式LLM智能体协同系统
  • python操作excel
  • Onekey:3步快速获取Steam游戏清单的自动化工具指南
  • 2026年甘肃陇南青海地区配电柜制造企业推荐,防水照明配电柜费用多少 - 工业设备
  • 青龙面板依赖管理终极解决方案:智能自动化部署效率提升3倍