两级式单相光伏并网仿真(注意版本matlab 2021a) 前级采用DC-DC变换电路,通过MPPT控制DC-DC电路的pwm波来实现最大功率跟踪,mppt采用扰动观察法,后级采用桥式逆变,用spwm波调制。 采用双闭环控制,实现直流母线电压的稳定和单位功率因数。 并网效果良好,thd满足并网要求,附带仿真说明文件
系统结构简单来说分两层:前级DC-DC负责光伏板最大功率点跟踪(MPPT),后级H桥逆变器做并网。核心在于既要让光伏板输出最大功率,又要保证并网电流跟电网电压同频同相。
前级扰动观察法实操
MPPT部分用扰动观察法(P&O)最简单粗暴。在Simulink里搭了个MATLAB Function模块,核心代码就二十来行:
function DutyCycle = P_O(Voltage, Current, prev_Voltage, prev_Power, StepSize) Power = Voltage * Current; if (Power - prev_Power) ~= 0 if (Power > prev_Power) if (Voltage > prev_Voltage) DutyCycle = DutyCycle + StepSize; else DutyCycle = DutyCycle - StepSize; end else if (Voltage > prev_Voltage) DutyCycle = DutyCycle - StepSize; else DutyCycle = DutyCycle + StepSize; end end end % 限制占空比在0.2-0.8防止炸管 DutyCycle = min(max(DutyCycle,0.2),0.8);这里有个坑:扰动步长StepSize别超过0.005,不然会在最大功率点附近疯狂抽搐。实测步长0.003时跟踪效率能达到98.7%,Boost电路开关频率设20kHz刚刚好。
后级SPWM调制骚操作
逆变部分用双极性调制比单极性THD更低。重点在载波和调制波的处理:
% 生成SPWM的核心参数 CarrierFreq = 10e3; % 载波频率 ModulationIndex = 0.9; % 别超过1 [~, SineWave] = PLL_GridSync(gridVoltage); % 锁相环获取相位 ModulatingWave = ModulationIndex * SineWave;这里PLL锁相环必须用离散型实现,采样时间设成和仿真步长一致(我用的1e-6)。双闭环控制的外环电压环带宽设10Hz,内环电流环带宽设500Hz,参数整定可以参考:
Kp_V = 0.5; Ki_V = 10; % 电压环PI Kp_I = 5; Ki_I = 1000; % 电流环PI注意电流环积分系数要猛,因为并网电抗一般在5mH左右,小了跟不上电网电压变化。
仿真效果验证
跑完仿真看波形,直流母线电压纹波控制在3%以内(比如600V母线纹波18V),并网电流THD用FFT工具测出来2.3%。关键在SPWM的载波比要够高,我设的载波比(载波频率/基波频率)达到200:1,这样高频谐波基本都在20kHz以上,轻松过滤波电感。
有个骚操作:在负载突变时,可以给电压环加个前馈补偿。具体在母线电压PI控制器输出叠加光伏侧电流的10%,代码就一行:
VoltageLoopOutput = PI_Output + 0.1*PV_Current;这么干能让母线电压波动减少40%,亲测有效。
最后提醒:Matlab 2021a的Powergui别用默认设置,把仿真类型改成离散模式,步长1e-6秒,否则会出灵异波形。模型跑完后记得用谐波分析工具看各次谐波分布,重点关注3、5、7次谐波是否超标。