☰
Simulink风光火储调频建模实战:一次调频与AGC仿真全解析
2026/9/29 10:59:52 网站建设 项目流程

Simulink里搭建风光火储调频模型这件事,我在实际项目里反反复复折腾了大半年。最开始只是跑一个单机带负荷的简单频率动态,后来逐步把风电、光伏、火电、储能、水电和电动汽车全部塞进同一个一次调频和二次调频AGC框架里,踩过的坑比想象中多,但也慢慢摸索出一套比较顺手的建模和调试路径。这篇就把我的完整思路、关键模型细节和排错经验整理出来,适合正在做电力系统频率控制仿真、毕业论文涉及AGC算法验证、或者对风电光伏并网调频机制想系统搞明白的同行参考。

1. 建模前必须想明白的几件事

动手拖Simulink模块之前,先把调频逻辑本身搞通透。很多新手上来就搭一堆风机、储能、汽轮机模型,结果仿真跑起来波形完全看不懂,问题往往出在不知道自己在模拟哪个环节。我建议先花一天时间把下面几个概念拆清楚。

1.1 一次调频和二次调频到底在调什么

一次调频是发电机调速器对频率偏差的自动响应,属于秒级动作。系统频率下降时,汽轮机调速器感受到转速偏差,自动开大进气阀门,增加机械功率输出;水轮机则开大导叶开度。这个过程中没有人工干预,完全是调速器的静特性在起作用。一次调频的结果是系统稳定在某个低于或高于额定频率的状态,因为它是有差调节,频率偏差无法完全消除,稳态频差取决于系统的调差系数和功率缺额。

二次调频则完全不同。它的任务是消除频率偏差,把频率恢复到额定值附近。在电网里这通常由AGC系统完成,方式是根据区域控制偏差ACE(Area Control Error)计算功率调整指令,下发给电厂机组,改变它们的出力设定值。二次调频的时间尺度从十几秒到几分钟,属于慢过程,但最终效果是无差调节,频率可以拉回50Hz。

这两个动作在Simulink里的建模层次完全不一样。一次调频建模的核心是调速器和发电机的闭环,二次调频建模的核心是AGC控制器和机组出力基准值指令的调整。我最初犯的错误就是在同一个模型里用同一个信号既做一次又做二次,结果两个控制器互相打架,浪费了很多调试时间。

1.2 为什么风光火储必须放一起建模

现在的新能源并网比例越来越高,传统火力机组被大量替代,系统惯量和调频能力都在下降。光伏和风电本身不提供惯量,风机甚至为了最大功率追踪始终工作在MPPT点,完全没有备用容量。这种情况下,光靠火电扛一次调频已经不现实,储能和电动汽车开始作为快速调频资源进入系统。

这就是风光火储联合模型的价值:它模拟的是一个具有多种调频资源互补特性的混动电力系统。风机可以通过转子动能提供短时惯量支持,储能可以在秒级时间内快速释放功率,电动汽车聚合体则可以作为可调控负荷参与AGC。把这些资源放在同一个Simulink模型里,才能比较公平地评估"谁在什么时段承担了多少调频责任"。

我个人的体会是:做这类仿真不要追求把所有设备和控制器都建到最精细的电磁暂态级别,那会让仿真慢到无法接受。做频率稳定问题研究,重点是保留调速器、AGC和新能源有功控制外特性的动态,不需要考虑开关器件和电压突变。

1.3 模型复杂度的取舍原则

Simulink里搭建风光火储模型,复杂度控制是个技术活。同样的一个火电机组,你可以用完整九阶发电机模型加详细励磁系统,也可以用"一个等效惯性环节加调速器"的简化模型。关键在于你的研究目标是什么。

如果是验证AGC算法在多种电源之间的功率分配逻辑,那发电机完全可以用一阶惯性环节替代,重点放在AGC信号分配器和机组响应延迟上。如果是研究频率最低点或者ROCOF(频率变化率),那至少需要用二阶发电机摆动方程模型,保留惯量和阻尼系数。我是这样选的:所有电源单元统一用等值的"物理惯性+调速响应"模型,储能和EV用更精确的快响应模型,风机光伏用功率外特性曲线加控制策略来描述。

注意:模型不是越详细越好。风光火储联合系统属于多时间尺度耦合系统,一次调频用秒级动态,AGC用分钟级动态,如果模型里混入了微秒级的电力电子开关动态,仿真步长会被拖到微秒级,跑一个完整的AGC响应可能要好几个小时。我后来统一把仿真步长设置为固定步长0.01秒,既覆盖了储能几百毫秒的响应特性,又不至于让火电锅炉动态等慢过程无法体现。

2. 风光火储各单元建模的核心细节

这一节是实际操作中最耗时的地方。每个电源模型都有自己独特的调频响应特性,不能想当然地用同一个模板套。

2.1 风机的两种调频建模思路

风机参与调频目前主流有两种方式:转子动能控制和桨距角备用减载。

转子动能控制的风机,本质上是把一部分转子旋转动能临时释放出来支撑频率。在Simulink里我把风机的有功输出模型做成:

P_wind = P_mppt + K_iner * (f_nom - f_sys) * df_dt_sign

这里的K_iner是虚拟惯量系数,通常取风机自身转动惯量的1~2倍。实现的时候我用了Scope里的导数模块和增益模块直接搭在MPPT功率基准上。注意频率变化率的计算一定要先滤波,因为Simulink里的Derivative模块对数值噪声极其敏感,不加滤波的话控制信号全是毛刺。

桨距角减载方案则是让风机故意偏离MPPT运行,保留10%~20%的功率备用,然后通过桨距角控制器响应频率偏差。这种方法响应速度比转子动能慢,但能提供持续的一次调频能力。在Simulink里我用Lookup Table定义不同风速下MPPT功率和减载功率的比值,然后用频率偏差信号叠加到桨距角参考值上。

我强烈建议在风电场等值模型中把两种策略都做出来,用阶跃扰动测试时可以明显看到转子动能控制持续时间短但爆发力强,桨距角控制响应慢但能维持更久。

2.2 光伏加储能的组合模型

光伏本身不具备真正的调频能力,它没有旋转惯量,也不能随意减少出力来上调(除非减载)。实际工程中光伏参与调频几乎都是和储能搭配使用。在Simulink里我把光伏逆变器有功控制简化成一个有功指令跟随环节:

P_PV = sat(P_ref, 0, P_max_available)

P_ref来自MPPT计算,正常情况下光伏输出就是可用功率的跟踪。做一次调频研究时,我通常假设光伏运行在减载模式或者由储能代替它响应频率。

储能部分我单独建模,用一阶惯性环节模拟电池和逆变器的响应特性:

储能响应模型: ΔP_storage = ΔP_command * (1 / (1 + T_bat*s))

T_bat我取0.1~0.3秒,这比传统火电机组的数秒响应快一个数量级。储能的最大优势是可以在几秒钟内从满充转到满放,所以我在模型里加了明确的Rate Limiter和Saturation,防止功率变化率超出实际设备范围,否则仿真结果会过分乐观。

储能调频控制器我做的是典型的双环结构:频率偏差外环生成功率参考,SOC管理充当限幅约束。

2.3 火电和水电机组建模有讲究

火电机组的一次调频动态要比储能慢得多。在Simulink里我用的是经典调速器-汽轮机-发电机模型。调速器用带死区的PI环节,汽轮机部分用"高中压缸+再热器"模型:

汽轮机传递函数: G(s) = (1 + F_HP * T_RH*s) / (1 + T_RH*s)

其中F_HP是高压缸功率占比约30%,T_RH是再热时间常数约8~10秒。这个再热时间常数特别重要,它决定了火电机组一次调频的爬坡速度。我在模型里对比了一下,忽略再热过程的话,一次调频响应快了一半以上,但这不符合实际机组行为,会严重高估火电的调频能力。实际做AGC研究时,可以把锅炉动态也纳入,锅炉惯性时间常数在60~300秒,这会影响二次调频中火电的持续出力能力。

水电机组则完全不同。水轮机没有再热过程,导叶几乎可以直接控制机械功率,响应快得多。但水锤效应是它的典型特征——导叶快速动作时,水压力波动会引起机械功率短暂反向变化,就是所谓的"先下降后上升"现象。在Simulink里用如下传递函数模拟水轮机:

水轮机传递函数: G_hydro = (1 - T_w*s) / (1 + 0.5*T_w*s)

T_w是水流时间常数,通常取1~3秒。这个模型如果不加,水电调频仿真波形会太平滑,完全体现不出水轮机的实际动态特性。我调试时最常看到的现象就是水轮机刚开始响应时功率先掉一下,然后猛地上升,很多初学者以为这是模型错了,其实是水锤效应在起作用。

2.4 电动汽车聚合的建模思路

把电动汽车放进来做调频资源,不能逐辆车建模型,那样系统规模太大了。我采用聚合电动车模型:用一个可变功率池来表示一组可调控的电动汽车,充电桩的功率上下限根据剩余可调容量实时计算。

EV_power_pool = EV_soc * max_discharge - (1 - EV_soc) * max_charge

EV的充放电功率响应速度可以设置为0.5~2秒,介于储能和火电之间。EV参与AGC时,我给它一个聚合功率指令,同时用SOC状态限制可响应范围。比如在放电模式下SOC低于20%时,EV就不再响应调频指令,避免电池过放。

EV聚合模型的关键参数是可用容量,我把它做成时变参数。因为白天大家用车多,可响应容量少;晚上集中充电,可响应容量大。在Simulink里用Signal Builder定义一个24小时的可用容量曲线,连接在EV聚合模型的限幅端,就能模拟这个特性。

3. 一次调频仿真:下垂控制实现细节

一次调频的核心控制就是下垂控制,在Simulink里面实现并不复杂,但细节决定成败。

3.1 频率偏差信号怎么取

频率偏差信号是全局量,在Simulink中我一般把它当作一个单频信号直接广播给所有调频单元。如果是做单机等值模型,频率可以通过发电机摆动方程实时算出来:

2H * df/dt = ΔPm - ΔPe - D * Δf

如果是做多机模型,我会用去一条母线测量频率并用PLL锁定,然后广播给AGC和一次调频控制器。为了省去PLL的动态负担,我直接假设系统是单母线等值模型,各机组共享一个系统频率。这在研究调频策略时完全够用。

3.2 下垂系数、死区和限幅的设置

下垂系数R反映机组对频率变化的敏感程度。实际电网中火电机组的调差系数通常在4%~5%,水电机组3%~4%。R越小,机组响应越强,但过度小会导致机组间负荷分配不均甚至不稳定。在Simulink里我把下垂环节做成:

ΔP_droop = (f_nom - f_sys) / R

然后经过死区和限幅输出给调速器参考值。死区是必须加的。电网要求频率偏差超过±0.033Hz(即±0.066%,按50Hz计算)时一次调频才启动,否则机组频繁动作,磨损设备。这个死区在Simulink里用Dead Zone模块实现,但要注意:不加死区时模型永远不会进入"平静"状态,系统频率会一直在那里抖动,因为微小的数值噪声也会被放大成调频动作。

限幅则是必须对称设置,我通常设为±10%的机组额定功率。如果没有限幅,一次调频响应功率可能超过设备物理极限,仿真结果是严重失真的。而AGC部分不应受一次调频短时限幅影响,它的限幅可以放宽到±20%左右,因为AGC调整的是稳态出力基线,不是瞬态功率。

3.3 储能虚拟惯量和虚拟下垂怎么配合

储能是最灵活的调频单元,它既能提供快速的虚拟惯量响应,又能提供持续的下垂功率。我把储能控制器做成两通道并联:

  • 惯量通道:响应df/dt(频率变化率),输出瞬时冲击功率,模拟同步机惯量效果
  • 下垂通道:响应Δf,输出持续增量功率,模拟调速器效果

惯量通道的增益要特别小心。如果增益过大,储能会在频率跌落瞬间猛烈放电,虽然能把频率最低点抬高,但电池电流可能超过保护值,而且容易引发新的频率振荡。我调试时发现一个规律:惯量通道增益通常取储能额定功率的5~10倍除以额定频率偏差,下垂通道增益取额定功率除以最大允许频差。两个通道的输出通过限幅合成,总输出不得超出储能当前的可用功率。

储能参与调频的优势在这里体现得很明显:火电从频率偏差到机械功率变化要经历调速器和汽轮机再热环节,能撑住一次调频冲击的时间大约在10~20秒开始衰减,储能则可以持续快速支撑,直到AGC接力完成。我在仿真里做过一个场景,火电加储能联合一次调频的系统频率最低点比纯火电系统抬高了0.15Hz左右,效果非常直观。

4. 二次调频AGC实现与参数整定

一次调频做完了,二次调频才是这个系统的"大脑"。

4.1 AGC控制结构和ACE计算

AGC的控制目标不仅仅是把频率拉回额定值,还要控制联络线交换功率。在互联电网中,单个控制区域的目标是让ACE归零。ACE计算式是:

ACE = ΔP_tie + β * Δf

其中β是频率偏差系数,单位是MW/0.1Hz,包含区域内机组的调频特性和负荷频率特性。在Simulink里我用Sum模块直接把联络线功率偏差和频率偏差乘以系数后相加,得到ACE信号。对于单区域孤立系统,ΔP_tie就是0,ACE直接等于β乘以Δf。

AGC控制器我用的是比例积分PI控制。比例保证当前偏差的快速响应,积分用来彻底消除稳态偏差。控制器输出是发电机组的功率调整指令ΔP_AGC。这里有个细节:AGC指令下发的周期不是连续的,实际调度系统是每隔几秒更新一次。在Simulink里我特意加了一个采样保持模块Sample and Hold,把AGC指令的更新周期设为2秒,模拟实际调度行为。这样比连续PI控制更接近工程实际。

4.2 PI参数整定的实操经验

AGC的PI参数整定我踩了好几次坑,一开始套用常规经验公式,结果仿真中AGC指令振荡得非常厉害。后来我总结出的规律是:AGC的积分时间常数应该与系统调频动态时间尺度匹配,通常在20~60秒之间,比例增益不宜过大,否则会把一次调频的短时波动耦合进二次调频指令。

我尝试过一组有效参数:

  • Kp = 0.05~0.15(对应每单位ACE的功率指令增量)
  • Ki = 0.005~0.02(每秒消除的ACE百分比)

整定顺序建议先断开一次调频,只让AGC作用于系统,用阶跃ACE测试观察频率恢复轨迹。如果频率恢复过程振荡,减小Kp;如果恢复太慢,增大Ki。一次调频接入后再微调,确保频率最低点之后AGC能平稳接管。

注意:AGC指令下发给每个机组前必须通过负荷分配因子分配。不同电源的一次调频特性不同,二次调频的分配比例也应该不同。储能和EV适合承担短周期的波动力,火电适合承担长周期的基线调整。我在Simulink里用Gain模块为每个机组设置不同的分配系数,并且让分配系数可在线修改,这样可以对比不同分配策略对调频效果的影响。

4.3 一次调频和二次调频的协调关系

一次调频和二次调频不能互相干扰。一次调频关注的是瞬态频率响应,它依靠各机组的调速器自主行动;二次调频关注的是稳态频率恢复,它通过AGC发出统一指令。在Simulink模型里,我特意把两个控制环路的参考点分开:一次调频修改的是调速器机械功率参考值,AGC修改的是机组功率指令设定值。两者叠加后作用于发电机的模型。

一个很容易出现的错误是把AGC的功率调整指令乘以一次调频同样使用的调差系数,导致两个控制器作用方向相反。正确的做法是AGC的调整量应该逐渐"取代"一次调频的调整量,而不是叠加在一起。实现上我用了比较巧妙的办法:把频率偏差信号同时导入一次调频和AGC,AGC输出的是机组有功指令修正值,在机组模型里设置一个"AGC调整期"标志位,标志位为1时一次调频通道的输出不算入总机械功率改变,只有AGC通道起作用。这样模拟的就是"一次调频先撑住,二次调频接力复位"的实际工况。

5. 联调中的常见问题和排查技巧

风光火储模型搭起来之后,仿真调试才是真正的考验。我整理了几个高频问题,全部是实际仿真中遇到过的。

5.1 代数环问题

Simulink里搭风机控制器和AGC反馈环节时,很容易出现速度反馈和输出直接耦合的情况,系统会报代数环错误。代数环的本质是模型中存在一个瞬时反馈回路,Simulink在数值解算时无法直接求解,只能迭代逼近,不仅拖慢仿真速度,还容易导致结果振荡。

我的排查经验是:先看Simulink的诊断信息,它会黄色警告"Block diagram contains algebraic loop"。然后用Simulink的代数环追踪器定位到具体模块。常见的解决办法是在反馈路径中插入一个小延迟模块(Memory),或者把Derivative模块换成带有低通滤波的近似微分。注意不要用Transport Delay模块,它会引入过大的相位滞后,调频仿真结果会失真。

5.2 参数不匹配导致系统振荡

有一次我把储能虚拟惯量的增益调大了两倍,仿真结果中系统频率出现持续振荡,振幅越来越大,完全符合失稳特征。排查思路是先缩小测试范围:把AGC断开、只保留一次调频;再把储能通道关掉、只用火电。这样逐步隔离,最终锁定是储能惯量通道增益过大的问题。

这类问题在真实系统中同样存在:储能响应速度极快,如果控制增益不当,会激发系统中其他机组的调速器与之互动,形成振荡。我的调试建议是:所有快响应单元(储能、EV)的增益必须从理论计算值的30%起步,逐步增加。仿真中没有稳态误差焦虑的话,优先保证阻尼特性。

5.3 仿真步长与慢动态的权衡

风光火储联合系统的动态时间跨度极大:储能响应是毫秒到秒级,火电再热和锅炉过程是几十秒,AGC是分钟级。Simulink里如果采用变步长求解器,系统会频繁调整步长,导致仿真后期越来越慢;如果采用固定步长,又可能无法捕捉储能的快速动态。

我最终采用固定步长0.01秒,搭配ode4(四阶龙格-库塔)求解器。用这个步长做600秒时长的仿真大约需要至少几百秒的计算时间,尚可接受。如果你觉得速度太慢,可以尝试一个技巧:把储能模块的响应时间常数人为放宽到0.3~0.5秒,不影响稳态频率结果,但可以大幅减少求解器压力。

5.4 常见问题速查表

现象可能原因排查方向
频率振荡发散快响应单元增益过大检查储能/EV的惯量和下垂增益
一次调频后频率无回升死区设置过大或调速器未接入检查Dead Zone参数和调速器增益
AGC指令来回摆动PI参数不合理减小比例增益、增大积分时间常数
仿真初期频率瞬间崩溃负荷阶跃设置与发电机出力不匹配确认初始功率平衡,逐步施加扰动
风机功率响应完全不起作用MPPT模块直接覆盖了调频输出确认调频修正量是叠加在功率参考点上
水轮机功率先跌后涨异常水锤效应,正常现象不需要修复,反而要保留

6. 实操建议和参数参考表

最后分享一些我调试完这套模型后沉淀下来的实操建议,可以直接作为你搭模型的起点参考。

6.1 推荐的建模顺序

不要从零开始一次性把所有电源都建好再加控制,那样出问题根本定位不到。我的顺序是:

  1. 先搭单机等值模型:一个火电机组带负荷,确认频率动态和一次调频闭环正常。这一阶段能够验证基本的摆动方程、调速器死区和限幅逻辑。

  2. 再加储能单元:接入虚拟惯量和下垂控制,对比加储能前后的频率最低点变化,确认储能控制逻辑正常。

  3. 加入风机和光伏简化模型:接入新能源的功率输出和基本控制策略,做新能源渗透率变化的测试,观察系统惯量变化的趋势。

  4. 加入AGC:在已有模型上搭建ACE计算和PI控制器,确认二次调频能把频率拉回50Hz。

  5. 最后加入水电和电动汽车聚合模型:做完整的风光火储EV联合调频测试,验证负荷分配策略。

6.2 一套可用的参数参考表

下面是我测试过的一套基础参数,你可以用它作为初值,再根据你的系统容量进行折算:

参数数值说明
系统额定频率50Hz中国电网标准
火电额定容量600MW等值机组
水电额定容量100MW快速调频电源
风电额定容量200MW等值风场
光伏额定容量80MW等值光伏站
储能额定功率50MW2小时容量
EV聚合容量30MW可调功率范围
火电调差系数4%一次调频静特性
水电调差系数3.5%一次调频静特性
储能调差系数2%更灵敏的响应
一次调频死区±0.033Hz启动门槛
再热时间常数T_RH10s火电汽轮机动态
水流时间常数T_w2s水轮机动态
储能响应时间常数0.2s一阶惯性环节
风机转子虚拟惯量3s折合到系统容量
AGC控制周期2s指令刷新周期
AGC比例增益0.1PI参数之一
AGC积分增益0.01PI参数之一

这些参数不是拍脑袋得来的,全部来自我实测过的单机等值模型,其中火电和水电的调差系数、再热时间常数对应典型火电厂运行数据,储能和EV参数参考了调频市场中对快速响应资源的性能要求。如果你直接用这套参数跑出来发现频率动态太快或者太慢,优先检查你的系统总容量是否跟我这个示例一致,如果容量不同,调差系数和惯性常数都需要按容量折算。

我在实际使用中还有一个小习惯:仿真前做一个固定的测试脚本,分三组扰动来校验模型。第一组是5%负荷阶跃,看一次调频和频率最低点;第二组是10%新能源出力骤降,看频率变化率是否在合理范围;第三组是AGC指令阶跃,看二次调频是否能够在120秒内恢复频率。三组测试都通过,我才认为模型是可用的。这个习惯帮我避免了很多低级错误,也推荐给你试试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询