光伏虚拟同步发电机并网simulink仿真模型 光伏采用最大功率点跟踪,拓扑为Boost电路 右侧逆变器为VSG控制策略 2018b以上的版本
光伏并网系统玩得多了,今天咱们整点有意思的——在Simulink里搭个带虚拟同步机功能的光伏发电系统。直接上硬货,模型结构分为三块:左边光伏阵列接Boost电路做MPPT,中间直流母线电容,右边VSG逆变器并网。重点聊聊怎么让光伏发电具备同步发电机特性这个骚操作。
先看光伏侧实现。MPPT部分直接上增量电导法,在Boost电路里用了个骚操作:用MATLAB Function模块写了个实时计算占空比的算法。这里有个细节容易翻车——采样周期必须和电路仿真步长同步,建议直接套用这个代码结构:
function DutyCycle = IncCond(Vpv, Ipv, Vref_prev, D_prev) deltaD = 0.001; if (Ipv*(Vpv - Vref_prev) + Vpv*(Ipv - (Vpv*D_prev/(1-D_prev))/50 )) > 0 D_new = D_prev + deltaD; else D_new = D_prev - deltaD; end DutyCycle = min(max(D_new,0.05),0.95); //防饱和处理重点说下第5行的边界处理,实测发现当占空比跑到0.95以上时电感电流会爆表,这个限制比教科书上常规的0.9上限更稳妥。Boost电路参数建议:电感选2mH(别问为什么,试错出来的玄学值),输出电容用2200μF能有效平抑电压纹波。
转到重头戏VSG控制部分,核心是模拟同步机的转动惯量和阻尼特性。这里有个坑——常规的VSG模型直接怼上光伏系统容易振荡,得在功率环前加个动态限幅器。具体实现时用到了Simulink的Transfer Function模块模拟转子运动方程:
J*s + D //对应1/(J*s + D)传递函数参数设置建议:惯量系数J取0.8-1.2kg·m²之间,阻尼系数D建议从0.5开始调。有个骚操作是在电压环里加了个变参数PI控制器,当电网电压跌落超过10%时自动增大积分时间,代码里这么写:
if Vgrid < 0.9*311 Ki = 0.5; else Ki = 0.2; end仿真设置要特别注意:必须选ode23tb求解器,步长设50μs。实测用ode45会在VSG切载时出现数值振荡,这个坑我帮你们踩过了。并网瞬间建议先用理想电压源预同步,等VSG输出电压相位对齐后再切到真实电网模型。
调试时如果发现MPPT和VSG互相抢功率,八成是直流母线电容容量不够。有个直观的判断标准——母线电压波动超过5%就得加电容。最后提一嘴模型版本问题,2018b之后的版本记得关闭Simulink的Data Store Memory自动优化功能,否则某些全局变量会抽风。
跑起来之后看这个名场面:当电网频率从50Hz突变到49.5Hz时,VSG控制的光伏逆变器会像真发电机一样主动增加出力,这时候去看虚拟转子转速曲线,会有明显的惯性响应过程,比传统PQ控制带感多了。下次可以试试在台风天气的电网扰动场景里跑这个模型,绝对刺激。