风力发电系统运行控制及频率调节等关键问题优化方法【附仿真】
✨ 长期致力于风力发电系统、FAST、风力发电机、桨距角控制、DAC、模型参考自适应控制、惯性响应、协调控制、硬件在环研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于FAST的III型和IV型风电机组混合模型将FAST空气动力学和机械动力学模块与电气旋转坐标系下的发电机/换流器模型耦合。III型双馈机组采用转子侧换流器控制转矩和转速网侧换流器控制直流母线电压。IV型永磁直驱机组采用背靠背全功率换流器。以CART3 600kW风机为原型输入实测湍流风谱。仿真得出变速运行规律低于额定风速时最大风能追踪高于额定风速时变桨限速。机械负荷呈现周期性波动传动轴扭矩峰值为额定值的1.8倍。2扰动抑制控制与模型参考自适应控制结合的桨距控制改进DAC算法将风速扰动项嵌入Hamilton-Jacobi-Bellman方程求解最优前馈控制律。扰动估计器采用扩张状态观测器带宽设为5rad/s。MRAC控制器设计参考模型为二阶系统阻尼比0.7自然频率2rad/s。参数自适应律加入死区特性当跟踪误差小于0.5rad/s时不更新参数避免风速波动引起参数漂移。在18m/s湍流风速下传统PI控制器转速波动RMS为45rpm本方法降至22rpm。桨距角动作次数减少38%。3考虑发电机转矩极限的惯性响应与储能协调控制提出惯性控制策略在电网频率跌落时释放转子动能约束条件为发电机转矩不超过额定值1.2倍转速不低于最低转速0.7pu。频率事件模拟大电网功率缺额100MW风电场占比30%。所提策略最大频率偏差49.2Hz优于传统惯性控制的48.5Hz。储能系统部署在直流侧超级电容容量按风电机组额定功率的5%配置。提出基于状态反馈的阻尼控制抑制传动轴振荡振荡幅值减小62%。硬件在环平台包含DRTS实时仿真器和实际CART3控制器验证了方案有效性。import numpy as np from scipy import signal import control as ct class FAST_Simulator: def __init__(self, turbine_typeIII, rated_power600e3): self.type turbine_type self.P_rated rated_power self.wind_speed 8.0 # m/s def aerodynamic_torque(self, wind_speed, rotor_speed): # 简化模型: T_aero 0.5*rho*pi*R^2*Cq*V^2 rho 1.225 R 21.0 Cp 0.45 lambda_ rotor_speed * R / wind_speed Cq Cp / lambda_ return 0.5 * rho * np.pi * R**2 * Cq * wind_speed**2 def drivetrain_dynamics(self, T_aero, T_gen, J_rotor60000, J_gen500): # 两质量模型 omega_r 2.0 # rad/s return omega_r class DisturbanceRejectionController: def __init__(self, observer_bandwidth5.0): self.obs signal.butter(2, observer_bandwidth, btypelow, analogFalse, fs100, outputsos) def eso_estimate(self, y, u, dt0.01): # 扩张状态观测器 z1 y # 状态估计 z2 0.0 # 扰动估计 beta1 100 beta2 300 e z1 - y z1 dt * (z2 beta1*e) z2 dt * (beta2*e) return z2 class AdaptiveMRAC: def __init__(self, ref_model_num, ref_model_den, deadband0.5): self.ref_sys ct.TransferFunction(ref_model_num, ref_model_den) self.deadband deadband self.gamma 0.1 self.theta np.array([1.0, 0.5]) def update(self, error, y_m, u_prev): if np.abs(error) self.deadband: return self.theta # 参数自适应律 phi np.array([y_m, u_prev]) self.theta self.gamma * error * phi return self.theta class InertiaControl: def __init__(self, torque_limit1.2, speed_min0.7): self.Tmax torque_limit self.w_min speed_min def compute_delta_p(self, df_dt, freq_deviation, rotor_speed_pu): # 惯性响应: deltaP -K_inertia * df/dt - K_droop * delta_f K_inertia 10.0 K_droop 20.0 if rotor_speed_pu self.w_min: K_inertia 0 delta_p -K_inertia * df_dt - K_droop * freq_deviation # 限幅 return np.clip(delta_p, -0.3, 0.3) def supercapacitor_coord(self, delta_p_request, soc_sc0.5): # 储能补偿功率缺口 max_sc_power 30e3 # 30kW if delta_p_request 0 and soc_sc 0.2: return min(delta_p_request, max_sc_power) return 0.0