风光储并网发电系统仿真模型 共直流母线式风光储:风力发电+光伏发电+储能+三相逆变并网 ①光伏Boost:采用电导增量法来实现光伏板最大功率跟踪 ②风机:拓扑采用三相整流电路,控制采用MPPT控制 ③蓄电池储能:采用双向Buck_Boost电路,电压电流双闭环控制策略,电压环稳定直流母线电压800V ④并网逆变器:三相桥式逆变器,采用PQ控制恒功率并网 仿真结果如演示所示 并网电压电流THD均小于5%,波形效果完美 ~~2018b版本
光伏Boost这块最怕的就是MPPT跟抽风似的乱抖,直接上电导增量法。核心代码就这几行:
function duty = IncCond(Vpv, Ipv, Vstep) persistent dPdv dV_prev dI_prev; if isempty(dPdv) dPdv = 0; dV_prev=0; dI_prev=0; end dV = Vpv - dV_prev; dI = Ipv - dI_prev; dP = Vpv*Ipv - dV_prev*dI_prev; dPdv = (dP/dV) + 0.2*(dP/dV - dPdv); % 惯性环节防抖 duty = sign(dPdv)*Vstep; dV_prev = Vpv; dI_prev = Ipv; end这里有个骚操作——在传统电导增量法里掺了点惯性环节,实测能干掉80%的功率振荡。注意dV和dI得用当前值与历史值差分,别傻乎乎用相邻采样值直接减。
风机那边用的三相整流+MPPT,重点在PWM生成部分。看这个风速突变时的控制逻辑:
if abs(wind_speed - last_speed) > 2 % 风速突变超过2m/s duty = interp1(lut_wind, duty_table, wind_speed, 'pchip'); %查表加速收敛 reset(PID_controller); % 重置PID防积分饱和 else duty = PID_controller.step(P_ref - P_actual); % 正常PI调节 end这手查表法配合PID重置,比纯PI响应速度快了至少0.3秒。记得风速突变阈值别设太小,否则容易误触发。
蓄电池的双向Buck-Boost才是真·影帝,电压环给电流环打辅助。看这个双环切换逻辑:
if abs(Vdc - 800) > 15 % 电压偏差过大 current_ref = kp_v*(800 - Vdc) + ki_v*integral_error; % 电压环主导 else current_ref = current_setpoint; % 电流环接管 end重点在过渡区的平滑处理,这里用了动态限幅:
current_ref = min(max(current_ref, -100), 100); % 硬核限幅 duty = current_ref / battery_current * 0.8; // 前馈补偿注意前馈系数要跟电池内阻匹配,不然分分钟给你表演电流过冲。
并网逆变器的PQ控制最骚的是这个解耦环节:
% dq轴解耦 v_d = (P_ref*i_d + Q_ref*i_q)/(i_d^2 + i_q^2) - w*L*i_q; v_q = (Q_ref*i_d - P_ref*i_q)/(i_d^2 + i_q^2) + w*L*i_d;实测发现分子分母都加个0.001的小数能防除零错误。锁相环用了双二阶广义积分器,参数整定直接暴力遍历:
for k = 1:0.2:5 set_param('DSOGI_FLL/K','Gain',num2str(k)); sim('model'); if max(phase_error) < 0.1 break; end end这种土味调参法虽然不优雅但管用,频率适应范围能从45Hz到55Hz不带抖的。
最后THD指标给力不是偶然,重点在死区补偿搞了个动态补偿量:
deadtime_comp = sign(I_abc).*abs(I_abc)*0.5e-6*1/Ts;把死区效应等效成电压损失来补偿,比固定补偿量方案THD直接降了1.2%。波形完美这事吧,其实是用仿真步长换的——2us的步长跑得显卡冒烟,建议用变步长+Solver切换能省一半时间。