☰
Simulink电力系统调频仿真:一次调频与AGC建模要点
2026/10/2 4:28:18 网站建设 项目流程

做电力系统仿真的人,十有八九会被同一个问题绕晕:一次调频和二次调频到底谁管谁?尤其是当你要在Simulink里把风电、光伏、火电、储能,甚至电动汽车全部塞进同一个模型时,问题就变成了——风光火储一次调频该怎么搭,含风机、储能、电动汽车、水电、火电的AGC二次调频又该怎么搭。

这篇文章把我实际搭建这类系统级调频仿真模型时的思路、模块选型和踩坑经验整理出来。适合正在用Simulink做电力系统频率稳定性研究、新能源参与调频策略设计,或者准备做风光火储联合调频课题的读者。我尽量少讲教科书理论,多讲模型里怎么呈现逻辑,参数怎么设,结果怎么验证。模型层次我会选"频率响应级"而不是电磁暂态级,原因是调频和AGC本身就属于秒到分钟时间尺度的问题,用简化传递函数模型既高效又能抓住核心矛盾。

1. 一次调频和AGC不是一回事:先把这个模型的技术边界摸清

1.1 两种调频各自管什么

电网频率是供需平衡的"温度计"。发电机总出力大于总负荷,频率上升;小于总负荷,频率下降。这个平衡被打破之后,不同时间尺度上有不同的调节手段,而一次调频和AGC是其中最容易混淆的两个概念。

一次调频是"就地自治"的控制。每台并网机组根据本地测得的频率偏差,按照自身的调差系数自动调整有功出力。它的特点是响应快(秒级)、不需要通信、属于有差调节。也就是说,一次调频动作之后,频率并不会回到额定值50Hz,而是稳定在某个偏差上。这个偏差有多大,取决于负荷扰动量和系统的等效调差系数。

AGC则是"区域集中"的控制。由调度或区域控制器统一计算区域控制偏差ACE,再把调节指令下发给参与调节的机组。它的特点是响应慢一些(分钟级)、依赖通信链路、属于无差调节,最终目的就是把频率偏差拉回零,同时把区域间联络线功率恢复到计划值。

我用一句话记忆:一次调频是"刹一脚",让频率别掉得太惨;AGC是"重新回到正轨",把偏差彻底清零。两者在时间尺度上是接力关系,不是替代关系。

1.2 为什么要把风光火储和电动汽车放在一起看

传统水火电机组有旋转惯性和调速器,天然能响应频率变化。但火电的锅炉汽轮机惯性大,爬坡慢;水电虽然调节快,却受水锤效应约束,不能无限制地快速改变出力。当新能源波动导致系统净负荷剧烈变化时,单靠水火很难兼顾速度和幅度。

风电的特殊性在于它通过变流器并网,转子动能和电网频率是解耦的。频率跌了,风机本身"感受不到",必须人为加虚拟惯量或下垂控制才肯出力。光伏在最大功率跟踪(MPPT)状态下只能下调不能上调,想参与调频就得提前限功率运行,也就是主动预留备用。储能则完全不同,响应可以达到百毫秒级别,很适合作短时冲击支撑,但能量容量有限,不能长时间扛。

电动汽车可以看成负荷侧的柔性资源。聚合起来之后,既能通过有序充电向下调节(少充电),也能通过V2G反向放电向上调节。它的响应速度比储能慢,主要受通信延迟和用户行为约束。把这一堆资源放进同一个模型,本质上是在模拟"旋转惯量+快速功率源+慢速大容量电源+可调控负荷"的分工配合,所以仿真模型必须把各自的时间常数、限幅和约束条件正确表达出来,否则结论会严重偏离实际。

1.3 模型层次选型:别一上来就堆详细模型

我搭过两类模型。第一类是"频率响应级"模型,系统用摇摆方程描述,机组用调速器加原动机的传递函数模型。这种层次适合研究秒到分钟级别的频率动态,也就是一次调频策略、AGC参数整定、新能源参与调频效果这类问题。第二类是"电磁暂态级"模型,比如Simulink里的详细风机模型、光伏阵列模型、同步发电机模型。这种模型真实细致,但仿真慢、参数多,通常只适合做单机并网或小系统分析。

做系统级AGC研究时,我的建议是先建立频率响应级模型。等控制逻辑跑通、结论合理之后,再针对某个关键设备细化。直接一上来堆详细模型,等待你的往往不是成果,而是大量调参时间和莫名其妙的数值发散。下面的所有内容,都是基于这个模型层次展开的。

2. 一次调频的Simulink骨架:惯性响应是地基,调速器是手脚

2.1 摇摆方程是整个模型的地基

在频率响应级模型里,系统频率不是某个模块直接给出来的,而是由有功功率平衡和系统转动惯量共同决定的。描述这个过程的经典方程就是摇摆方程:

2H * (dΔf/dt) = ΔP_m - ΔP_L - D * Δf

这里H是系统等效惯性时间常数,单位秒,反映所有旋转设备储存动能的能力;D是负荷阻尼系数,表示频率变化1%时负荷功率自动变化多少;ΔP_m是发电机组总的机械出力变化量,ΔP_L是负荷扰动,Δf是频率偏差。

在Simulink里搭这个方程非常直接:先用Sum模块算出ΔP_m减去ΔP_L再减去D*Δf,然后乘以1/(2H),经过Integrator积分就得到Δf。为了数值稳定,我习惯用Δf作为状态变量而不是直接积分出50Hz的大数,这样积分器初值设0即可,输出侧再加一个常数50就是实际频率。

这个环节最容易犯的错是初值问题。如果仿真开始已经是稳态,但积分器初值不是稳态值,模型一启动就会出现一段虚假的频率波动,容易被误判为系统动态。正确的做法是让模型先空载运行一段,或者提前把初值算好给定。

2.2 火电和水电调速器模型怎么搭

有了频率计算的骨架,下一步就是把各机组的一次调频通道接进去。火电的一般链路是:频率偏差Δf经过调差系数1/R形成功率指令,再经过调速器一阶惯性(时间常数T_G)和蒸汽容积惯性(时间常数T_CH),最后变成汽轮机输出的机械功率变化量。

在Simulink里,调速器的传递函数通常用Transfer Fcn或者Gain加Integrator来实现。火电蒸汽容积部分用一阶惯性就能得到比较平滑的响应,T_CH一般取0.2到0.3秒。需要注意的是,机械功率输出要限幅,同时要加Rate Limiter模拟爬坡率约束。火电参与一次调频时的爬坡速度远没有储能快,如果忽略这个速率限制,模型会表现得过于乐观。

水电和火电不一样。水轮机的水锤效应会让导叶开度变化和输出功率变化之间存在反向的暂时特性,简化模型里常用(1 - T_Ws)/(1 + 0.5T_W*s)这个传递函数来近似。T_W是水锤时间常数,通常0.5到2秒。初学可以不深究水锤的物理推导,但一定要记得这个环节和火电的蒸汽容积是两回事,时间常数和动态方向都不同。水电的调速器参数中,调差系数R可以设小一点,比如0.03到0.04,比火电更陡一些,让水电在一次调频中多承担一部分快速分量。

2.3 用负荷阶跃验证模型响应

第一次搭建时,不要急着加新能源和储能,先把传统水火系统跑通。我用一个Step模块直接加负荷增量,比如系统容量1000MVA时加50MW,标幺值就是0.05p.u.,观察频率动态曲线。

正常情况会看到两个阶段:起初频率以较快斜率下跌,这是惯性阶段,机械出力还没来得及响应;接着调速器开始动作,频率逐渐趋于一个稳态偏差。这个稳态偏差用理论公式可以直接验算:

Δf_ss = -ΔP / (D + Σ(1/R_i))

如果只有火电和水电,R_eq大约是0.04到0.03的组合,加上D大约0.015,ΔP=0.05p.u.,算出来的稳态频率偏差大约0.1Hz量级。模型跑完后对比这个理论值,如果差得远,基本可以判断是增益单位换算错了,而不是模型有问题。这一步验证通过了,再往模型里加风机、储能和AGC,排查起来会轻松很多。

3. 风光储参与一次调频的建模细节:风机用变桨还是虚拟惯量

3.1 风机的虚拟惯量和下垂控制

风机的特殊之处在于,双馈或直驱风机通过变流器并网,转子转速和电网频率完全解耦。从电网角度看,风机就是一个电流源,频率跌落时它不会有天然的惯性响应。想让风机参与一次调频,必须附加控制。

目前工程和研究里最常用的两条控制通道:一条是虚拟惯量控制,把频率变化率dΔf/dt乘以一个系数K_v叠加到功率参考值上;另一条是下垂控制,把频率偏差Δf乘以K_p叠加到功率参考值上。前者在频率快速变化瞬间提供冲击功率,后者在频率持续偏低时提供持续的功率支持。

在Simulink里实现起来很清晰:从频率偏差信号引出两路,一路经过Derivative得到频率变化率,再接一阶低通滤波,目的是抑制微分环节放大的噪声;另一路直接经过Gain。两路相加后作为风机的功率附加指令,加在风机的基准功率参考值上。

这里我要特别提醒一个坑:Derivative模块如果直接接在阶跃性质的信号后面,仿真时很容易出现尖峰,而且步长越细化尖峰越大。我的做法是在微分环节后面加一个时间常数0.01到0.05秒的一阶惯性做平滑。另一个问题是功率限幅,风机变流器过载能力有限,虚拟惯量叠加出来的功率不能超过并网变流器短时过载极限,一般附加功率限制在额定功率的10%到20%之间。

3.2 储能:一次调频里最快的那只手

储能模型在频率响应级仿真里不需要太复杂。电池经过变流器并网,对外响应可以简化成一阶惯性加功率限幅,时间常数取0.05到0.2秒已经足够。控制器逻辑和风机下垂类似:频率偏差越过死区后,储能功率参考值等于-K_ess乘以Δf。K_ess可以设得比水火机组更陡,也就是等效调差系数更小,让储能首先承担冲击分量。

在Simulink里,储能出力从功率平衡节点送进摇摆方程。除了功率限幅,另一个关键约束是SOC。电池容量是有限的,我通常在储能模块里用Integrator累计充放电能量,SOC = SOC0 + ∫P_bess/E_bess dt,然后用Saturation和逻辑判断让SOC在0.1到0.9之间工作。SOC接近下限时,放电功率要线性减小到0;接近上限时,充电功率要线性减小。这个细节做不做,直接影响储能能否长期参与调频的结论。

还有一个容易被忽略的问题:储能如果在一次调频里一直满出力,会掩盖其他资源的不足。只看频率恢复效果,储能响应0.1秒和1秒差别可能不大;但如果你在仿真储能容量配置,就必须把SOC约束做细,否则仿出来的容量需求偏小,实际工程根本扛不住。

3.3 光伏的位置:要不要进一次调频

光伏在MPPT状态下没有上调备用,只有功率限制方向上的调节能力。所以我在模型里通常把光伏放成"固定出力加光照波动",不参与一次调频,但作为一个扰动源存在。光照突然变化会导致光伏输出跳变,相当于系统里平白多了一个负荷扰动,这会考验其他资源的调频能力。

如果非要让光伏参与一次调频,就要引入减载运行的概念。正常MPPT模式下最高可发功率是P_mppt,减载运行把出力限制在90%P_mppt,预留10%的备用容量,频率跌落时把这部分备用释放出来。Simulink实现就是一个限幅器加下垂控制:光伏出力参考值等于0.9P_mppt再叠加频率偏差的下垂修正项。

标题里虽然写了"风光火储",但并不是所有新能源都必须真参与调频。风光火储系统的现实分工是:风光提供波动扰动,储能在快速环节兜底,火电做慢速大容量支撑。把每个资源放在它擅长的位置上,比让所有人一股脑都调频要合理得多。

3.4 电动汽车第一次调频该不该上:我建议放到AGC层

电动汽车严格来说是柔性负荷,不是发电机。聚合体响应受通信延迟、用户意愿、充电桩状态和SOC分布影响,响应速度比储能慢不少。因此在一次调频这块,我一般不会把EV作为主力,最多加一个非常保守的V1G模型——频率降低时暂停该聚合体的充电功率。

这种"动态减充电"模型在Simulink里实现起来很简单:频率低于死区下限时,把EV充电功率参考值从正常值向下调节,但最小只能到0,不能反向放电。真正的双向V2G需要考虑到车主的用车需求、电池健康和充电桩双向功率能力,这些约束放在AGC层研究更合适。所以我的整体结构是:一次调频层以水火加风机储能为主,电动汽车放到AGC层参与二次调频,这样模型层次清楚,参数也不至于乱。

4. 二次调频AGC的Simulink模型:从ACE计算到水火储电出力分配

4.1 AGC控制器的核心输入:区域控制偏差ACE

AGC的输入是区域控制偏差ACE,定义式是ACE = ΔP_tie + BΔf。其中ΔP_tie是联络线功率偏差,B是区域频率偏差系数。单区域模型里没有联络线功率变化,ACE直接等于BΔf。B的单位一般写成MW/0.1Hz,取值大小反映该区域对频率偏差的容忍度。

在Simulink中,从摇摆方程得到的Δf乘以系数B就得到ACE,进入AGC控制器。AGC控制器至少是PI结构:P项响应当前偏差,I项负责把偏差积分清零。这里的积分器必须有抗饱和处理,因为AGC的调节功率受机组调节范围和调节速率约束,一旦输出饱和而积分继续累积,退出饱和时会出现一个很大的过冲。

我实际使用中比较省事的做法是用Simulink的PID Controller模块,把积分器设置为带back-calculation抗饱和。如果你自己用Integrator搭PI,千万不要忘了反馈限幅的钳位逻辑。AGC这一层如果不做抗饱和,仿真跑到大扰动时会出现频率过冲,而且很难查出根因。

4.2 水火电机组的AGC分配:速率是硬约束

AGC计算出的总调节功率要分配到各台机组。分配方式可以直接决定仿真结果是否可信。常见的简化思路有三种:

一是按调节容量比例分配,每台机组分担的份额与其可调范围成正比。二是按优先级分配,储能先动,水电次之,火电最后补。三是按等速率分配,让所有机组在相近时间内完成自己的调节任务。

从工程角度,水电响应快但容量有限,火电容量大但速度慢,储能快但能量有限。所以分配逻辑的核心是"快资源先顶住,慢资源后补上"。我在Simulink里用MATLAB Function模块写这个分配逻辑,清晰且好改。下面是一个简化示例,思路是储能承担快速分量,水电次之,火电承担剩余慢速部分,电动汽车最后做边界微调:

function [P_bess_ref, P_hydro_ref, P_th_ref, P_ev_ref] = agc_allocator(ACE, SOC_bess, SOC_ev) % 简化AGC分配示例,ACE单位MW,正值表示需要增加出力 P_bess_lim = 20; % 储能功率上限MW P_hydro_lim = 50; % 水电调节上限MW P_th_lim = 100; % 火电调节上限MW P_ev_lim = 10; % 电动汽车聚合上限MW % 1) 储能承担30%快速分量,并受SOC约束 P_bess_ref = 0.30 * ACE; P_bess_ref = max(-P_bess_lim, min(P_bess_lim, P_bess_ref)); if SOC_bess > 0.9, P_bess_ref = min(P_bess_ref, 0); end if SOC_bess < 0.1, P_bess_ref = max(P_bess_ref, 0); end % 2) 水电承担剩余部分的50% P_hydro_ref = 0.5 * (ACE - P_bess_ref); P_hydro_ref = max(-P_hydro_lim, min(P_hydro_lim, P_hydro_ref)); % 3) 火电承担剩余部分,速率在外部用Rate Limiter再限制 P_th_ref = 0.5 * (ACE - P_bess_ref - P_hydro_ref); P_th_ref = max(-P_th_lim, min(P_th_lim, P_th_ref)); % 4) 电动汽车做余量补充 P_ev_ref = ACE - P_bess_ref - P_hydro_ref - P_th_ref; P_ev_ref = max(-P_ev_lim, min(P_ev_lim, P_ev_ref)); end

写这段代码是为了说明分配思路,实际使用时你还需要在Simulink层分别对火电和水电加Rate Limiter,模拟爬坡率。AGC总指令到达机组后,也要经过机组本身的一次调频动态链路,不能假设分配多少就立刻出多少。

4.3 AGC指令和一次调频指令怎么叠加

这里有个新手经常搞混的点:AGC指令和一次调频指令不是两条独立通道,而是叠加在同一个功率指令输入端。机组最终输入的功率指令等于初始基点功率加上一次调频附加量再加上AGC附加量。从控制逻辑上说,一次调频在本地快速动作,AGC在远方慢速调整,二者共同作用于同一台机组的出力设定点。

但在Simulink建模时要注意别把信号接错。AGC的量是"功率增量",一次调频的量也是"功率增量",两者相加后再去驱动调速器模型。如果接成AGC先去修正频率,再由频率驱动一次调频,就相当于把AGC的作用绕了一圈又叠加了一次,系统会出现正反馈式的振荡。

另外一个细节是,AGC动作后频率恢复,一次调频的出力增量会自然回落。这是正常现象,并不是模型bug。最终稳态时,AGC输出的功率增量应该等于负荷扰动总量,一次调频出力增量回到近似零,频率偏差回到零。

4.4 储能和电动汽车在AGC中的接入位置

储能接进AGC时,响应速度可以由一阶惯性模块模拟,时间常数可以设得比水电快一个数量级,但必须叠加SOC积分和功率限幅。我在前面提到过SOC影响可调范围,这一约束在AGC层同样不能省略。

电动汽车接入AGC需要建立聚合模型而不是单车模型。一辆车3到7kW,在区域级AGC里几乎没影响,必须聚合到几百辆甚至上千辆。聚合模型里要设置可调度车辆数、单桩最大功率、当前聚合SOC、通信延迟等参数。Simulink里的EV链路一般是:AGC分配指令先进一阶惯性,再进Transport Delay模拟通信和聚合商的执行时延,最后经过上下限输出到功率平衡节点。

EV还有一层更现实约束:不能把所有充电负荷都当作可调度资源。参与调频的车辆比例一般只有20%到30%,并且要优先保证车辆按计划充满。这些参数放进模型后你会发现,EV在AGC里的调节空间并没有想象中那么大。

5. AGC层里风机、储能和电动汽车的特殊约束:别让模型骗了你

5.1 风机在AGC里的出力增量从哪来

风机在MPPT状态下没有上调空间,想参与AGC就必须提前减载运行。比如把功率指令限制在可用功率的90%,预留10%备用,AGC指令升高时把这部分备用释放出来。但在实际风速下,可用功率本身一直在变,所以风机能不能响应AGC指令,取决于"指令值是否超过当前可用功率"。

我在模型里把风速做成随机波动序列,P_avl由风速曲线换算得到,风机实际出力等于min(AGC指令, P_avl)加上一次调频附加量。这样做之后,AGC指令超过可用功率时,你会清楚看到风机实际出力跟不上,频率恢复变慢。如果不加这个约束,模型会得出"风储联合完美跟踪AGC"的过于乐观结论,这在实际中是做不到的。

风机的另一个约束是变桨系统速度。变桨执行机构有机械惯量,功率上调速度会受限制。简化模型里用一个Rate Limiter就能近似,极限速率可以查风机厂家资料,一般直驱风机在MPPT附近增减载的速率远低于火电,但也不是无限快。

5.2 电动汽车聚合模型的SOC分布问题

在AGC模型里,EV最麻烦的不是功率动态,而是SOC分布。一个聚合体里有不同初始电量的车,有的车快满了,有的车快空了。V2G放电时,SOC低的车不能继续放电;有序充电时,SOC高的车也不能继续充电。

仿真中比较实用的做法是:用两个状态量分别统计聚合体的可充电容量和可放容量。可放电量用初始可放电量减去累积放电量,可充电量用初始可充空间减去累积充电量。这两个状态量作为限幅条件接入EV输出环节。我最早做这个模型时偷懒没加SOC分布约束,结果仿真里EV持续放电数小时,频率还能稳定在额定值附近,这显然不符合现实。加完约束之后,EV的调节能力会随着时间推移衰减,反而更接近实际情况。

5.3 储能SOC约束对AGC控制的影响

储能电池的可用功率不是常数。SOC在高位和低位时,同样的功率指令可能根本无法执行。简单模型可以只加上下限,但想更贴近实际,我建议用一维Lookup Table描述可用功率随SOC变化的曲线:SOC在0.1到0.2区间放电能力线性下降到0,SOC在0.8到0.9区间充电能力线性下降到0,中间区间保持额定功率。

这个曲线在Simulink里实现很简单,用Lookup Table模块输入SOC,输出功率限制系数,再乘上额定功率作为该时刻的限幅值。AGC的储能通道经过这个动态限幅后,控制器的积分器也要做对应的抗饱和处理,否则储能满功率指令被限幅吞掉,积分器还在累积,系统响应会拖得很长。

我在这里要特别强调一点:储能SOC和EV可调度容量这两个约束,直接影响AGC仿真结论的可信度。如果你只是在做方法演示,可以不加;如果文章或课题结论涉及"储能需要配置多少容量""EV能提供多少调节能力",这两个约束必须进模型。

5.4 关于风光火储加EV联合AGC的一个现实提醒

仿真跑起来是一回事,工程落地是另一回事。真实AGC系统还要考虑机组组合、经济调度、联络线计划、AGC指令周期(通常4到8秒)等大量上层逻辑。Simulink里这套模型适合评估"各资源的调节能力够不够、参数配合是否合理",不适合复刻完整的调度系统。

我在模型里会把各资源的AGC增量信号分别送到To Workspace,便于仿真结束后画图看谁承担了多少调节量。这个习惯帮我发现过很多问题,比如某次仿真里水电机组一直顶着上限,火电几乎没有参与,最后查下来是AGC分配系数里水电权重设得太大。把每个资源的出力轨迹导出来看,就非常直观。

6. 参数整定、仿真步长和常见坑:我实测过的那些问题

6.1 一套可用的典型参数

下面这组参数是我在1000MVA基准系统里常用的初始值,适合研究性质仿真。使用你的实际机组数据时,需要按铭牌参数替换:

参数数值说明
系统额定容量 S_B1000 MVA标幺计算基准
惯性常数 H4 s系统等效转动惯量
负荷阻尼系数 D0.015 p.u.频率变化1%对应负荷变化0.015 p.u.
火电调差系数 R_th0.04下垂增益1/R=25
水电调差系数 R_hydro0.03比火电更陡
风机虚拟惯量增益0.5~1.5 s等效惯性时间常数
风机下垂增益0.05(折算后)限制附加功率不超过10%P_n
储能响应时间常数0.1 s一阶惯性
储能功率限幅±20 MW按PCS容量设定
电动汽车聚合功率限幅±10 MW参与率取30%
AGC控制器PI参数Kp=0.2, Ki=0.1需按系统闭环整定

这组参数不是万能药。换一个系统容量或者换一套电源结构,AGC的PI参数基本都要重新整定。整定方法不复杂:先给一个小阶跃扰动,观察频率恢复时间和超调量,Kp过大会导致振荡,Ki过大会导致恢复时间拉长甚至不稳定。

6.2 仿真步长与数值稳定性

频率响应级模型的时间常数跨度很大,储能0.1秒,火电几十秒,AGC积分上分钟级。如果采用固定步长,为了让最快环节稳定,步长要压缩得很小,仿真时间会变得很长。我建议用变步长求解器,比如ode15s这类适合刚性系统的算法。

加入Dead Zone、Saturation、Transport Delay之后,模型容易出现高频抖动或者代数环警告。Dead Zone造成的不连续会让变步长求解器在穿越死区边界时把步长压得极小,现象就是仿真速度突然变得特别慢。处理办法是给死区输出加一个很小的惯性时间常数,把不连续信号平滑掉。Transport Delay在变步长模式下会增加状态记忆,如果延迟时间设置不恰当,也可能导致求解器误差过大,需要留意仿真步长上限。

另外提一个和调频无关但Simulink常见的坑:如果你用Bus信号传输数据,在Bus Selector里看不到可选信号,十有八九是信号线没真正连到Bus Creator,或者Bus对象没有在模型中保存。这类小问题会浪费很多排查时间。

6.3 死区、限幅和积分饱和的坑

一次调频死区是必须加的。火电机组调速器死区一般取±0.033Hz,储能可以更小甚至不加,但为了防止频繁动作,我也会给储能留一个小死区,比如±0.02Hz。在Simulink里Dead Zone模块直接就能设置,但要注意它带来的数值不连续。

限幅和限速的顺序也容易出错。我的经验是:先限幅再限速,或者只用一个Rate Limiter负责速率、一个Saturation负责幅值,二者串联时顺序要有明确逻辑。如果先限速再大幅限幅,指令变化速度本身就被限制住了,限幅只是截断,看起来也能跑,但逻辑上并不严谨。

积分饱和是AGC模型里最隐蔽的问题。AGC控制器和机组内部如果有积分器,就都要考虑抗饱和。Simulink的PID Controller模块自带back-calculation,推荐直接用它。我自己搭的早期版本没做抗饱和,大扰动后频率出现一个莫名其妙的反向冲量,查了很久才定位到是AGC积分器在饱和退出时的累积输出。

6.4 怎么验证模型正确性

验证模型是否正确,比搭建本身更重要。我通常按下面几个步骤做:

第一步,关闭风机、储能和AGC,只保留水火机组和负荷阶跃,对比稳态频率偏差和理论公式计算结果,偏差在5%以内说明基础频率响应模型建对了。第二步,开启AGC,观察稳态时频率偏差是否趋于0,ACE是否归零,AGC总出力是否等于负荷扰动总量。第三步,加入储能和风机虚拟惯量,观察频率最低点(nadir)是否相比纯水火系统有明显改善,如果没改善,大概率是附加控制的增益或者时间常数设错了。第四步,把各资源出力存到工作区,检查每个时刻功率平衡方程是否成立,用摇摆方程逐点回代验证,这一步能抓到很多隐蔽问题。

这套验证流程我每次建模都会跑一遍,虽然费一点时间,但能省下后面分析阶段的大量返工。

做这类含多个电源的调频仿真,我最大的体会是:难点从来不是把Simulink模块拖出来连线,而是把每个资源的物理约束想清楚。风机备用来不及释放、储能SOC边界、EV通信延迟、水电水锤效应,任何一个被忽略,仿真结果都会在某个角落悄悄失真。如果你也是刚接触这个方向,我的建议是先跑通纯水火加AGC的模型,深刻理解一次调频和AGC之间的配合关系,再逐步把风机、储能、光伏和电动汽车叠加上去。每一步都验证一次,最后合到一起时,你的模型一定比一上来就堆五个资源要可靠得多。

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

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

立即咨询