模块化多电平变流器MMC的VSG控制:基于MATLAB-Simulink仿真模型的调频调压性能探究

模块化多电平变流器/MMC/的VSG控制/虚拟同步发电机控制/MATLAB--Simulink仿真模型 5电平三相MMC,采用VSG控制。 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量。 设置频率波动和电压波动的扰动,可以验证VSG控制的调频调压效果

最近在搞MMC的VSG控制仿真,发现这玩意儿调起来真是酸爽。今天咱们就拿5电平三相MMC开刀,用MATLAB-Simulink搭个能抗频率电压波动的VSG系统。先说重点:这套系统直流侧直接怼了个理想电源当能量池,交流侧接的可编程三相源能随便改参数造故障,方便咱们验证VSG的调节能力。

先看主电路结构(图1)。MMC每个桥臂4个子模块,上下桥臂各两个,电容电压均衡策略直接用的最近电平逼近。重点是这个VSG控制模块------它得模拟同步发电机的机械特性。核心代码部分长这样:

matlab 复制代码
function [E_ref, theta] = VSG_Controller(P_set, Q_set, V_meas, f_meas)
    persistent J D Kp_V Kq_f;
    if isempty(J)
        J = 0.2;      % 虚拟转动惯量
        D = 5;        % 阻尼系数
        Kp_V = 0.05;  % 电压调节系数
        Kq_f = 0.8;   % 频率调节系数 
    end
    
    % 有功-频率下垂
    delta_f = (P_set - P_meas)/Kq_f;
    omega = 2*pi*(50 + delta_f) - D*(omega - 2*pi*f_meas)/J;
    
    % 无功-电压下垂
    E_ref = V_set + (Q_set - Q_meas)*Kp_V;
    
    theta = cumsum(omega)*Ts;  % 相位积分
end

这段代码实现了VSG的核心算法,J和D这两个参数直接决定系统惯性。J值调太小的话系统响应快但容易震荡,D值太大虽然稳定却会导致调节速度变慢,建议先按同步发电机典型参数试,再微调。

仿真里设置了两个狠活儿:1秒时给交流源突然加5Hz频率扰动,1.5秒时甩20%电压跌落。看波形的时候重点盯住PCC点的电压和频率曲线(图2)。没VSG的时候系统直接崩了,有VSG的情况下频率在0.3秒内拉回50Hz,电压恢复时间大概0.5秒------这说明转动惯量参数起作用了。

子模块电容电压均衡是个容易翻车的地方。这里用了排序法均压,代码里有个骚操作:把子模块投切状态和电容电压打包成结构体,用冒泡排序搞定。虽然算法简单,但实测在5电平下完全够用:

matlab 复制代码
function [SM_States] = Balance_SM(SM_Voltages, I_arm)
    [~, index] = sort([SM_Voltages], 'descend');
    if I_arm > 0
        SM_States = index(1:ceil(numel(index)/2)); % 上桥臂投入
    else
        SM_States = index(end-floor(numel(index)/2)+1:end); % 下桥臂投入
    end
end

这个排序逻辑妙在同时考虑了电流方向和电压均衡。实际跑起来电容电压波动控制在±3%以内,比那些花里胡哨的预测算法也不差。

最后说个坑:Simulink的变步长求解器在MMC仿真里容易炸。建议固定步长50us,用ode3算法。仿真跑完后别急着关,用Workspace里的数据画个三维相图(图3),能直观看到VSG在功率振荡时的阻尼效果------那些螺旋收敛的轨迹线就是阻尼系数D在发力。

这套模型文件我扔GitHub了,需要调试的兄弟注意两点:1. 别动步长;2. 改VSG参数时记得J和D要配对调。下次咱们聊聊怎么把这个VSG控制移植到FPGA上跑实时仿真。

相关推荐
achi01020 天前
Ubuntu 24.04 一站式 Flask 生产部署:pyenv + PyCharm + Gunicorn + Nginx + systemd
pycharm·flask·systemd·gunicorn·pyenv·ubuntu 24.04·生产部署
linuxxx11021 天前
Centos环境中Django项目中gunicorn的配置和使用
django·centos·gunicorn
QQ2769988523 天前
手搓FPGA万用串口模块指南
gunicorn
SkylerHu1 个月前
tornado+gunicorn部署设置max_body_size
python·tornado·gunicorn
Mr.小海1 个月前
gunicorn和docker冲突吗
docker·容器·gunicorn
edward11102 个月前
Python编程入门从基础语法到实践应用
gunicorn
安岁的笔记本3 个月前
Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
django·flask·gunicorn
Ice__Cai3 个月前
深入掌握 Flask 配置管理:从基础到高级实战
python·flask·gunicorn
S01d13r4 个月前
gunicorn + flask 处理高并发请求
python·flask·gunicorn