10kW 虚拟同步发电机 VSG 预同步并网控制的 Matlab 仿真探索

10kW虚拟同步发电机VSG预同步并网控制matlab仿真 【1】从paper中复现的,有参考文献支持; 【2】控制策略:预同步启动程序+预同步锁相环PLL+VSG+电压电流双闭环; 【3】1s的时候开始并网,并网电流缓慢增加,没有过冲; 【4】10kHz开关频率,使用离散仿真,更模拟实际工况; 【5】具体波形如图所示。

最近在研究虚拟同步发电机(VSG)相关内容,今天来分享一下 10kW VSG 预同步并网控制的 Matlab 仿真实现。这次的仿真是从一篇 paper 中复现而来,有参考文献支持,所以大家不用担心可靠性啦😎。

控制策略剖析

整个控制策略可以说是多管齐下,包含了预同步启动程序、预同步锁相环(PLL)、VSG 以及电压电流双闭环。

预同步启动程序

它就像是运动员起跑前的热身准备,让系统在并网前能达到一个合适的初始状态,为后续的稳定并网奠定基础。在 Matlab 里,可能通过一些初始化参数的设置来实现,比如:

matlab 复制代码
% 预同步启动程序相关参数初始化
VSG_params.Pn = 10000; % 额定功率 10kW
VSG_params.Un = 380; % 额定电压 380V
VSG_params.f0 = 50; % 额定频率 50Hz
% 更多相关初始化参数设置,例如转动惯量、阻尼系数等
VSG_params.J = 0.1; 
VSG_params.D = 0.05; 

这里对 VSG 的一些关键参数进行了初始化,像额定功率、电压、频率,还有转动惯量和阻尼系数,这些参数对于后续 VSG 的特性模拟至关重要。

预同步锁相环(PLL)

PLL 的作用就好比是一个精准的时钟校准器,它能让 VSG 输出的电压频率和相位与电网保持同步。在代码实现上,可能会用到类似这样的经典锁相环结构:

matlab 复制代码
function [theta, omega] = PLL(Vabc, omega0)
    % 克拉克变换
    ValphaBeta = Clarke(Vabc);
    % 派克变换
    Vdq = Park(ValphaBeta, omega0);
    % 通过 PI 控制器调节相位
    kp = 0.1; ki = 0.01;
    e = -Vdq(2);
    theta_dot = omega0 + kp * e + ki * integral(e);
    theta = integral(theta_dot);
    omega = theta_dot;
end

这段代码首先通过克拉克变换和派克变换将三相电压转换到 dq 坐标系下,然后利用 PI 控制器对电压的 q 轴分量进行调节,进而得到相位和角频率。

VSG

VSG 是整个系统的核心,它模拟了同步发电机的运行特性。从代码上看,可能类似如下实现:

matlab 复制代码
function [Vabc] = VSG(P, Q, Vg, omega, VSG_params)
    % 计算电磁功率
    Pe = P + (VSG_params.D * (VSG_params.omega0 - omega));
    % 计算内电势
    E = sqrt((Vg(1) + Pe * VSG_params.R / Vg(1))^2 + (Pe * VSG_params.X / Vg(1))^2);
    % 计算内电势相位
    delta = atan((Pe * VSG_params.X / Vg(1)) / (Vg(1) + Pe * VSG_params.R / Vg(1)));
    % dq 坐标系下内电势
    Edq = [E * cos(delta); E * sin(delta)];
    % 逆派克变换
    EalphaBeta = InvPark(Edq, omega);
    % 逆克拉克变换得到三相电压
    Vabc = InvClarke(EalphaBeta);
end

这里根据输入的有功功率、无功功率等参数,计算出电磁功率、内电势及其相位,最后通过坐标变换得到三相输出电压。

电压电流双闭环

双闭环控制就像是给系统上了两层保险,电压环保证输出电压的稳定,电流环则对并网电流进行精确控制。在代码实现中,可能会像这样:

matlab 复制代码
% 电压环 PI 控制器参数
kp_v = 0.5; ki_v = 0.1;
% 电流环 PI 控制器参数
kp_i = 0.2; ki_i = 0.05;

% 电压环控制
error_v = Vref - Vabc;
V_control = kp_v * error_v + ki_v * integral(error_v);

% 电流环控制
error_i = Iref - Iabc;
I_control = kp_i * error_i + ki_i * integral(error_i);

这里分别设置了电压环和电流环的 PI 控制器参数,通过计算给定值与实际值的误差,并经过 PI 控制器调节,得到控制量。

并网过程及特性

在本次仿真中,1s 的时候开始并网。从结果来看,并网电流缓慢增加,没有过冲,这说明整个控制策略起到了很好的效果,就像一位老司机平稳地把车并入主路一样🚗。

仿真设置细节

此次仿真采用 10kHz 的开关频率,并且使用离散仿真,这样能更贴近实际工况。在 Matlab 里设置离散仿真步长可能类似这样:

matlab 复制代码
Ts = 1/10000; % 10kHz 开关频率对应的采样周期
sim('VSG_pre_synchronization并网仿真模型.slx', 'FixedStep', num2str(Ts));

通过设置合适的采样周期,让仿真更符合实际的硬件运行情况。

波形展示与分析

具体波形如图所示(这里虽然没办法直接展示图,但大家可以想象一下,并网电流的波形是平滑上升的,没有突兀的尖峰;电压波形也保持稳定,在并网前后都能维持在合理范围内)。这些波形直观地反映了整个系统在预同步并网控制下的良好性能。

总之,通过这次基于 Matlab 的 10kW VSG 预同步并网控制仿真,我们成功复现了 paper 中的内容,对 VSG 的控制策略和并网特性有了更深入的理解。希望这篇分享能给同样在研究相关领域的小伙伴们一些启发😄。

相关推荐
pu_taoc3 小时前
ffmpeg实战4-将PCM与YUV封装成MP4
c++·ffmpeg·pcm
XHW___0012 天前
音频调试时录制pcm数据
音视频·pcm
询问QQ:4877392785 天前
动态规划,实现躲避动态车辆,动态障碍物,连续静态障碍物,采用prescan matlab ca...
pcm
加油201913 天前
音视频处理(四):一文讲清楚VoIP语音通话SIP和RTP协议
音视频·pcm·voip·sip·rtp·g.711·语音通话
Android系统攻城狮17 天前
Android ALSA驱动进阶之获取周期帧数snd_pcm_lib_period_frames:用法实例(九十五)
android·pcm·android内核·音频进阶·周期帧数
Android系统攻城狮18 天前
Android内核进阶之获取当前PCM周期snd_pcm_lib_period_bytes:用法实例(九十三)
android·pcm·android内核·音频进阶·alsa音频
liwulin050618 天前
【ESP32-S3-CAM】 ESP32-S3-CAM+MAX98357播放pcm格式的wav文件(本地文件和网络文件)
pcm
Android系统攻城狮20 天前
Android内核进阶之周期更新PCM状态snd_pcm_period_elapsed:用法实例(九十二)
android·pcm·android内核·音频进阶
顾北川_野21 天前
播放PCM音频增益低+单独增强PCM解码的方案
音视频·pcm