ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

风力涡轮机与压缩空气储能联合运行建模与仿真解析

风力涡轮机与压缩空气储能联合运行建模与仿真解析 风电场并网功率的波动性一直是调度和电站运营最头疼的问题之一。阵风来了功率跟着风机一起抽搐整场风停了输出又直接掉到个位数。近些年我在做新能源系统建模时越来越多看到风力涡轮机加储能这条技术路线被推到台前而压缩空气储能CAES在长时储能和规模化削峰填谷上的经济性让它成了风电联合运行方案里一个非常值得深挖的方向。这篇文章想把我做风力涡轮机系统与压缩空气储能联合运行建模与实验研究的完整思路、Matlab代码架构和踩坑记录完整梳理出来内容覆盖从物理机理拆解到仿真参数设定、再到实验数据验证的全流程适合正在做新能源专业课题的研究生、参加数学建模竞赛需要快速上手风储联合系统的同学以及想评估储能配套方案的工程师参考。1. 为什么让风力涡轮机和压缩空气储能联合上班问题从哪来1.1 风电出力波动的真实图景不是忽大忽小四个字能概括的风力涡轮机的输出功率本质上被风速的三次方卡着风速变化一点功率就剧烈放大。举个例子一台额定功率1.5 MW的风机额定风速11.5 m/s时出力1.5 MW风速掉到9 m/s时功率直接跌到0.75 MW左右这还算温和的如果遇到阵风10秒内风速从8 m/s冲到14 m/s功率可以在20秒内从0.5 MW冲到额定以上再跌回来这种分钟级乃至秒级的高频波动对电网频率稳定和电压质量非常不友好。实际运营中还有一个更痛的问题——弃风限电。后半夜负荷低谷时段电网消纳能力不足风电场即使能发出电来也只能被要求停机这是能量和投资的双重浪费。储能在这里扮演的角色不只是平滑功率这么简单它同时承担三个任务一是把高频波动滤掉让并网功率更像一条平稳的直线二是把低谷时段的多余电力存起来在负荷高峰放出去实现能量时移三是在风速骤降时快速补位避免出力骤降冲击电网。1.2 储能技术那么多为什么偏偏选压缩空气讨论储能选型时经常有人问锂电池响应速度不是更快吗飞轮储能效率不是更高吗这个问题的核心在于什么场景配什么储能。电池适合4小时以内的短时能量时移循环寿命在深度充放下会明显衰减抽水蓄能规模大但场址条件苛刻氢储能能量密度高但往返效率只有35%到45%。压缩空气储能的独特位置在于它的功率等级可以达到100 MW级放电时长可以做到4小时以上乃至天级循环寿命基本不随充放电次数衰减成本主要落在储气空间和热管理设备上单位千瓦时成本在长时储能里非常有竞争力。联合运行的建模逻辑也不复杂——把风力涡轮机当作电源把压缩空气储能当作缓冲水池。风速高时一部分能量直接并网多余的能量驱动压缩机把空气压进储气罐风速低或者负荷需要时高压空气释放出来推动膨胀机发电。这个耦合关系用一句能量怎么分配概括容易但实际上风轮机、压缩机、储气罐、膨胀机、发电机这五个环节各有各的动态特性和效率边界建模的复杂度就在这里冒出来了。1.3 这个研究到底要回答什么问题拆开来看整个建模与实验研究要回答四个层次的问题物理层风轮机的气动捕获特性和CAES的热力学过程怎么用数学语言统一描述系统层两种子系统的动态时间尺度差了一个数量级风机秒级、储气罐分钟级怎么在同一个仿真框架里稳定运行控制层功率分配策略能不能让系统在风速随机波动时仍然保证并网功率平滑、储气压力不越限验证层Matlab仿真的结果放到实验台架上或者用真实风速数据驱动时能不能复现出同样的趋势这篇内容会围绕这四个层次展开。后面的代码和参数设置都是基于1.5 MW级风电配1 MW级CAES的示范容量来做这个规模在高校课题和竞赛里比较有代表性既有工程意义仿真资源要求又不会离谱。2. 每一个核心环节的数学模型从风轮到储气罐逐级拆解建模最忌讳的就是拿一个整体能量平衡公式糊弄过去。联合系统里每个环节的动态特性差异很大必须分开建模再通过接口变量耦合。我的做法是把系统分成四个模型块风轮机与传动链、发电机与变流器、压缩空气储能单元、系统级能量管理。下面逐个说清楚每个模型块的数学基础。2.1 风轮机模型贝兹极限和C_p(λ, β)曲线才是地基风力涡轮机从风中捕获的功率很多教材一上来就写公式P_wind 0.5 × ρ × A × v³但这个公式是来流风的功率不是风机真正拿到手的功率。风机实际捕获的功率要乘一个风能利用系数C_p写成P_turbine 0.5 × ρ × A × v³ × C_p(λ, β)这里ρ是空气密度(kg/m³)A是风轮扫掠面积(m²)v是来流风速(m/s)β是桨距角(°)λ是叶尖速比定义为λ (ω_r × R) / vω_r是风轮转速(rad/s)R是风轮半径(m)。C_p这个系数有个上限叫贝兹极限理论最大59.3%实际机组运行中C_p大概在0.35到0.48之间。它的取值不是固定的而是λ和β的二元函数。标准风电机组中常用下面这组经验公式C_p(λ, β) 0.5176 × (116/λ_i − 0.4β − 5) × exp(−21/λ_i) 0.0068λ其中1/λ_i 1/(λ 0.08β) − 0.035/(β³ 1)这套公式来自Heier的研究文献是用实际风轮机特性拟合出来的在Matlab里实现非常方便。建模时我在项目里单独写了一个函数文件cp_lambda_beta.m输入λ和β输出C_p这样在参数扫描时可以直接批量调用。当时做完C_p曲面图后印象很深——C_p对λ非常敏感最优λ附近效率很高但只要偏离0.5左右效率就明显掉。这也是后面MPPT控制能发挥作用的物理基础。2.2 传动链与永磁同步发电机两质量块模型和dq坐标变换现代大型风机普遍走直驱永磁同步发电机的路线没有齿轮箱这意味着风轮转速和发电机转子转速直接相等传动链可以用一个两质量块模型来近似等价为J_eq × (dω_r/dt) T_aero − T_em − B_eq × ω_rJ_eq是风轮加发电机转子的等效转动惯量(kg·m²)T_aero是气动转矩T_em是电磁转矩B_eq是阻尼系数。很多入门建模会忽略阻尼项但在做功率波动分析时阻尼对高频分量有抑制效果不能省。发电机模型用dq旋转坐标系下的电压方程u_d R_s × i_d L_d × (di_d/dt) − ω_e × L_q × i_q u_q R_s × i_q L_q × (di_q/dt) ω_e × (L_d × i_d ψ_f)电磁转矩为T_em 1.5 × p × [ψ_f × i_q (L_d − L_q) × i_d × i_q]表贴式永磁电机L_d约等于L_q转矩简化为T_em 1.5 × p × ψ_f × i_q控制起来就变得很直观——交轴电流i_q直接控制转矩大小。在Matlab/Simulink里我用的方法是用受控电压源加电感电阻来替代详细的开关管模型这样既保留了电机电气动态又规避了电力电子高频开关给仿真步长带来的压力。2.3 CAES热力学模型压缩机、储气罐、膨胀机各管一段压缩空气储能是整个联合系统里最容易建模出错的地方错在把压缩和膨胀过程全当成理想等温过程。实际上压缩机耗功和膨胀机产功都依赖气体的热力状态变化核心参数是多方指数n实际取值范围在1.25到1.4之间取决于压缩机的冷却情况和设备类型。压缩机耗功公式为W_comp (n/(n−1)) × m_dot × R × T_in × [(p_out/p_in)^((n−1)/n) − 1]膨胀机产功公式类似W_exp (n/(n−1)) × m_dot × R × T_in × η_exp × [1 − (p_in/p_out)^((n−1)/n)]m_dot是空气质量流量(kg/s)R是气体常数287 J/(kg·K)T_in是入口温度(K)η_exp是膨胀机效率。这两个公式放一起就可以看到压缩耗功和膨胀产功之间的差距主要来自压比和效率损耗这也是CAES系统往返效率一般在40%到70%之间的原因。储气罐的数学模型是压力与温度耦合的常微分方程。基于能量守恒和质量守恒标准做法是写两个方程dm/dt m_dot_in − m_dot_out dT/dt [m_dot_in × (h_in − h_gas) Q_wall] / (m × c_v)第一个是储气罐内空气质量累计第二个是罐内温度动态。然后用理想气体状态方程pV mRT把压力算出来。需要注意的是充气时气体被压缩温度升高放气时温度下降如果忽略这个温度效应压力会算不准后面并为仿真发散埋了隐患。2.4 背靠背变流器和系统接口风轮机侧AC-DC-AC背靠背变流器的作用是解耦风轮转速和电网频率让风机可以实现变速恒频运行。机侧整流器控制发电机转矩和转速网侧逆变器控制直流母线电压和并网功率因数。CAES单元和电网的连接也有多种方案最简单的是膨胀机带同步发电机直接并网但这个方式转速被电网频率锁定不灵活。研究阶段我选择的是膨胀机带永磁同步发电机再经AC-DC-AC并网好处是膨胀机可以在变转速工况下运行这对部分负荷效率提升有明显帮助。整个联合系统里所有子模块最终通过直流母线或者交流母线连接在一起而母线电压和功率平衡关系就是各模型之间的耦合接口这个接口关系在搭建Simulink时务必拎清楚。3. Matlab代码怎么落从函数文件到Simulink的建模架构不少同学一上来就在Simulink里堆模块堆完发现改参数很痛苦、报错找不到原因、重复仿真效率极低。我在这个项目里的策略是m脚本函数文件Simulink模型三层架构混着用凡是涉及参数扫描、结果后处理和画图的逻辑全部写在m脚本里凡是物理特性计算比如C_p计算、焓值计算、压力温度递推都写成函数文件只有控制器和完整的系统闭环放在Simulink里跑。3.1 第一步把物理参数全部参数化写好参数初始化脚本仿真最怕硬编码参数散落在各个模块里。项目开始我建议先建一个init_system.m把所有参数集中管理。参数表如下参数数值单位说明P_rated1.5MW风机额定功率R_blade35m风轮半径rho_air1.225kg/m³标准空气密度lambda_opt8.1-最优叶尖速比C_p_max0.48-最大风能利用系数V_tank1500m³储气罐容积p_high6MPa储气罐最高压力p_low2.5MPa储气罐最低工作压力n_poly1.35-压缩机多方指数eta_comp0.82-压缩机等熵效率eta_exp0.85-膨胀机等熵效率T_amb298K环境温度每个参数我都写了注释后续调整直接改这个文件就行。像我这种健忘的人参数文件就是项目的记忆中枢不然隔两周再打开模型根本想不起来当时哪些变量是从哪来的。3.2 第二步核心特性函数写成可复用的Matlab函数风能利用系数函数是基础中的基础代码如下function Cp cp_lambda_beta(lambda, beta) % 计算风能利用系数Cp % lambda: 叶尖速比无量纲 % beta: 桨距角单位 deg lambda_i 1 ./ (1./(lambda 0.08*beta) - 0.035./(beta.^3 1)); Cp 0.5176 * (116./lambda_i - 0.4*beta - 5) .* exp(-21./lambda_i) 0.0068*lambda; % 对超出范围的结果做保护 Cp(lambda 0) 0; Cp(Cp 0) 0; end注意最后两行保护语句这是我在跑仿真时吃过亏后加上的。当λ在一个不太合理的取值范围时公式可能算出负值如果不做限制风轮机模型会输出负功率整个仿真状态就飘了。储气罐的压力和温度递推是CAES模型的核心在Simulink里我用积分器实现% 状态变量: m_tank (kg), T_tank (K) % 输入: mdot_in (kg/s), h_in (J/kg), mdot_out (kg/s) % 输出: p_tank (Pa) dmdt mdot_in - mdot_out; h_gas cp_air * T_tank; % 简体处理忽略压力对焓的影响 dTdt (mdot_in * (h_in - h_gas) - Q_wall) / (m_tank * cv_air); p_tank m_tank * R_air * T_tank / V_tank;这里还有个容易忽略的细节——初始质量m_tank(0)不能乱设要和初始压力、初始温度用理想气体状态方程反算出来保证模型启动时内部自洽。如果随便给个初值第一个仿真步长就会突然冒出一个很大的压力偏差导致整个系统剧烈振荡。3.3 第三步Simulink里搭闭环注意用Bus对象管理信号Simulink模型从顶层看分三块风场输入风速信号或实测数据、风轮机系统气动-机械-电气、CAES系统能量管理控制器给出压缩机/膨胀机功率指令储气罐输出压力和SOC状态。我个人强烈建议在Simulink里定义Bus对象来管理模型间传递的信号比如一个WindTurbineBus包含风速、转速、功率、桨距角一个CAESBus包含压力、温度、压缩机功率、膨胀机功率、SOC。不用Bus的话你会发现信号线越拉越乱到后面连自己都分不清谁是谁。3.4 仿真配置和步长选择联合系统的动态时间尺度跨度很大CAES储气罐的时间常数是分钟级的而变流器的开关动态是毫秒级的。如果用详细的电力电子开关模型仿真步长必须压到微秒级一个小时的联合运行仿真可能要跑几个小时完全没有性价比。我的做法是变流器用平均值模型开关切换用传递函数代替仿真步长设为0.01秒在ode45求解器下既能捕捉秒级波动又不会因为计算量过大导致仿真进度停滞。4. 运行策略怎么分配风电功率才能又平稳又高效有了各部分模型之后必须设计上层能量管理策略来决定发出来的电往哪走。这是整个人机交互最直观的部分我用一种分层结构来解决——上层是决策层下层是执行层。4.1 上层状态机式的能量管理策略能量管理控制器按系统状态把运行模式分成四个状态MODE_A正常并网风速适中风电功率P_wind小于并网功率上限P_grid_max风电全部并网STOP压缩机和膨胀机。MODE_B储能充电P_wind大于P_grid_max多余的功率驱动压缩机把能量以压缩空气形式存储到储气罐。前提是SOC低于上限。MODE_C储能放电P_wind小于P_grid_ref膨胀机启动和风电一起补充功率缺口。MODE_D待机/停机风速过高触发切出保护或储气罐SOC越限系统进入安全状态。用状态机而不是在线优化算法的主要原因在工程可靠性和计算实时性。联合系统模型本身已经是高度非线性的如果再嵌套一个MPC或者动态规划在线滚动求解仿真时间会成倍上涨而且参数调整的难度也会陡增。状态机的逻辑简单、行为可解释生产环境里也更容易被运维人员理解和接受。4.2 功率分配和SOC估算储能单元的充电功率指令写成P_comp_ref max(0, P_wind − P_grid_max)放电功率指令写成P_exp_ref max(0, P_grid_ref − P_wind)但这里必须考虑储气罐的压力边界充电时如果压力接近上限要降低压缩功率放电时如果压力接近下限要限制功率防止过度放气。SOC的定义采用压力储能水平估计SOC (p_tank − p_low) / (p_high − p_low)这个定义是从可用能量角度做近似真实可用能还要考虑温度变化但用于能量管理逻辑的状态判断已经足够。4.3 底层风轮机MPPT和储气压力控制的协调风轮机侧的核心控制是最大功率点跟踪。在额定风速以下通过调整电磁转矩让风轮转速稳定在最优叶尖速比附近从而实现C_p最大化。这个MPPT逻辑我用的是扰动观察法Matlab代码核心如下% 扰动观察法MPPT简化版 omega_r_prev omega_r; if omega_r omega_r_prev if P_e P_e_prev omega_ref omega_ref delta_omega; % 继续同方向调整 else omega_ref omega_ref - delta_omega; % 反向调整 end else if P_e P_e_prev omega_ref omega_ref - delta_omega; else omega_ref omega_ref delta_omega; end end同时CAES单元的功率指令传给压缩机后需要根据储气罐当前压力修正进气阀开度本质是一个带前馈的PI控制器。协调逻辑其实核心一句话风机负责能发多少发多少储能负责怎么发更平滑两个控制器的参考值在状态机调度下交互形成完整的闭环。5. 实验验证怎么做从纯仿真到实测数据驱动很多学校课题卡在建模好做实验难做上毕竟1.5 MW的压缩空气储能实验台不是随便一个实验室能搭起来的。这个项目里我采用的是一套仿真数据驱动缩比实验相结合的验证路径。先说清楚这个思路并不是所有验证都必须搭建全尺寸物理样机用真实数据和缩比实验同样能对模型的关键动态特性做有效检验。5.1 验证思路和实验条件风轮机与压缩空气储能的物理实验难点有两个一是大功率设备对场地、安全、电网容量的要求二是真实风况不可控。我在项目里的做法是把实验拆成两层部件层缩比实验用一个小型螺杆压缩机加高压储气罐验证CAES充放气过程中的压力-温度耦合特性和效率模型。这套实验装置很小压缩机功率大约7.5 kW储气罐0.5 m³最高压力1.2 MPa实验室就能搭。系统层数据驱动仿真用真实风场实测风速数据采样间隔1秒共一天24小时作为风轮机模型的输入在Matlab里做联合系统全天候运行仿真检验能量管理策略在真实天气变化下的表现。5.2 实验结果怎么解读缩比实验跑出来的罐内温度和压力曲线跟模型预测的趋势吻合度不错。充气阶段罐内温度从环境温度298 K上升到约335 K如果忽略温度动态直接按等温模型计算的话压力会低估约12%这就验证了前面强调非等温模型的必要性。系统层仿真用了一天真实风速数据几个关键指标如下指标纯风电无储能联合系统风CAES并网功率波动率标准差kW31296弃风电量MWh/天286储能循环效率-61.5%储气罐压力范围(MPa)-2.8~5.7这张表最有说服力的一点是并网功率波动率下降了近70%弃风电量降到了原来的五分之一左右代价是储能自身的能耗往返效率61.5%。这说明CAES确实能明显改善风电的可并网性但也坦诚地反映了一个问题——联合系统的整体能量效率不是免费的多出来那部分能量时移和功率平滑是拿储能的损耗换来的。5.3 实验数据回代模型把实验测到的压缩机效率放到仿真里再跑一遍实验做完以后我还给模型做了一次回代标定。把实验中实际测到的压缩机在不同压比下的效率曲线替换掉原来固定0.82的效率常数重新跑一遍全天仿真。结果发现系统的总发电量估算偏差从原来的8%降到了3%以内。这说明模型的结构是可信的主要误差来源就是效率参数偏差而不是模型框架问题。这种做法在学术研究和工程验证里都值得推广——不要只出一张仿真结果图要主动把实验结果反馈回模型形成闭合。6. 建模过程中最容易被忽视的几个坑每条都是实测教训6.1 单位不统一导致的静默错误这个项目涉及气压单位和量级极其容易搞混。储气罐里我用Pa压缩机公式里用bar能量管理系统里用MPa第一次联调时发现储气罐压力怎么算都不对排查了一整天最后发现是一个常压数值少乘了10^5。现在的做法是参数文件里全部统一为国际单位制Pa、K、kg/s、W单位转换只发生在输入输出界面。6.2 储气罐初值不自洽导致仿真发散这个问题前面提过但值得再强调一次。Simulink里的积分器初始化如果给了一个和边界条件不一致的值仿真的前几秒会产生巨大的瞬态冲击严重的时候直接导致求解器报错。解决方案就是专门写一个初始化函数用状态方程反算初始质量保证初始条件满足代数约束。检查初值时我用的是工况自查的办法——把仿真暂停在初始时刻看看所有状态变量的导数是否为0或者符合物理预期不符合就回头查初值。6.3 力能曲线越界和查表外推C_p公式在λ非常小的时候表现非常奇怪可能算出负值或者大于1的值这在物理上是不可能的。除了在函数文件里加保护语句我还在Simulink模型里加了饱和模块对λ和β的输入范围做硬限制这样即使控制器暂时给出一个不合法的转速指令也不会让模型跑到离谱的状态去。6.4 仿真步长与MPPT采样周期的匹配问题MPPT的扰动观察法依赖离散的功率采样如果仿真步长远小于MPPT的控制周期会导致MPPT误判——同一个控制周期内采样到了多个功率点扰动方向判断混乱。我的解决办法是把MPPT控制逻辑封装成独立的触发子系统用采样时间模块把它固定在0.5秒执行一次其余时间保持原输出。这个细节如果处理不好会出现风机功率振荡幅度反而比没有MPPT时更大的奇怪现象。6.5 效率模型过于乐观很多CAES模型直接用一个固定效率比如80%这会高估实际系统表现。真实压缩机的效率随压比和流量变化很大尤其部分负荷工况下效率会明显降低。如果研究目的是看趋势固定效率勉强能用但如果要评估联合系统的经济性或者储能收益建议至少用压比相关效率曲线。我在实验阶段实测了多个压比点下的效率拟合出一条效率曲面后续做容量配置研究时再用这条曲线结果更有说服力。这套建模方法在完成后给我带来的最大体会是——联合系统的价值不在于储能本身的效率多高而在于它让风电场的可用性上了一个台阶。把并网功率从剧烈波动变成平稳输出不仅仅是技术指标好看它直接关系到风电场能否通过电网的并网检测、能否在现货市场里卖出更稳定的价格、能否减少因波动惩罚带来的额外损耗。后续这个模型还可以往两个方向扩展一个方向是增加热储能模块把压缩过程中产生的压缩热收集起来用于膨胀前的再热把往返效率再往上推一把另一个方向是接入日前/实时电价信号做储能的套利策略优化这就在能量管理状态机之上再加了一层经济优化做出来会非常有意思。如果你也在做相关课题建议先从小功率缩比实验入手建立参数直觉再放大到系统级仿真这条路比直接硬啃全尺寸模型要顺畅得多。
返回列表