2. 从一次调频到二次调频先搞清楚电网在慌什么先说个最基本的认知。电网频率不是恒定不变的50Hz它像一个摇晃的水杯随时会因为发用电不平衡而波动。负荷突然增加发电机转速下降频率往下掉大机组跳闸系统缺功率频率更是直线下跌。频率一旦偏离50Hz太多轻则影响设备寿命重则引发低频减载甚至系统崩溃。所以调频的本质就一句话让发电侧或者储能、负荷侧快速跟上用电侧的节奏把频率拉回安全区间。但这里有个关键区别调频不是一次就能完成的。电网把频率调节分成三道防线一次调频、二次调频AGC、三次调频经济调度。一次调频靠的是发电机组的调速器本能反应秒级到十秒级作用是“挡住”频率的快速跌落但它属于有差调节频率最终会稳定在一个偏离50Hz的数值回不到原点。二次调频靠AGC自动发电控制系统分钟级作用是“拉回”频率到50Hz同时把联络线交换功率控制到计划值。三次调频则是更慢的经济调度按经济性分配出力。我在做仿真的时候经常看到有人把一次调频和二次调频混在一个模型里调速器和AGC同时作用结果频率波形乱七八糟。其实这两者在时间尺度上是解耦的一次调频是快速动作二次调频是慢速修正。真正的工程建模思路是先单独验证一次调频的动态响应确认各机组的调差系数和惯性时间常数设置合理再叠加AGC的积分动作看频率能否在几分钟内恢复额定值。2.1 为什么风光要参与调频这跟传统火电有什么区别传统火电、水电是同步发电机转子本身有惯性天生具备一次调频能力。风机和光伏是电力电子接口转子跟电网没有直接耦合所以它们不是天然有调频能力的。这就是问题的根源随着风光渗透率提高系统的等效惯量下降同样的功率扰动频率变化率RoCoF更大一次调频的初始压力更重。那么风光怎么参与调频核心手段是“虚拟惯量”和“桨距角/功率备用”。风机可以通过变桨控制减少捕获的风能留出备用功率也可以通过转子动能释放/吸收来模拟惯量响应。光伏则通过直流母线电容的能量释放实现虚拟惯量或者通过降功率运行保留备用容量。在Simulink里做风光调频必须把这些控制逻辑建模进去否则风光只是个“负的负荷”谈不上调频。储能参与调频是另一个逻辑。储能的响应速度比火电快一个数量级毫秒级到百毫秒级而且可以双向调节既能充电也能放电。所以储能在一次调频中通常承担“快速冲击”的角色抑制频率变化率在二次调频中承担“精确跟踪”的角色响应AGC指令。火电和储能配合的逻辑是储能负责快和准火电负责持续和大容量。电动汽车参与调频则属于需求侧响应V2G模式下电动汽车可以作为分布式储能参与AGC但受充电行为和电池寿命约束在仿真中通常以聚合模型出现。3. 风光火储一次调频仿真模型的核心拆解这个标题的核心是“风光火储一次调频”那么在Simulink里一个完整的一次调频仿真模型至少要包含这几大块风光机组模型风机的空气动力学、传动链、变流器控制、虚拟惯量控制光伏的PV阵列模型、DC-DC变换器、虚拟惯量控制。火电机组模型锅炉、汽轮机、调速器、发电机。火电的一次调频特性主要由调速器死区、调差系数、汽轮机响应时间常数决定。储能系统模型电池模型、PCS变流器、功率分配策略。储能一次调频的关键参数是最大充放电功率、SOC限制、响应时间常数。负荷模型和电网等效模型负荷突变模拟、单机无穷大母线或简化的多机系统用于观察频率动态。一次调频协调控制器根据频率偏差和频率变化率分配各调频资源承担的功率。我做过一个典型配置2200MW火电、600MW风电、300MW光伏、200MW储能负荷从2600MW突变到2900MW增加300MW。如果只有火电调频频率最低点可能到49.2Hz恢复时间大约30秒加入储能后频率最低点能控制在49.6Hz以上恢复时间缩短到10秒以内。这就是风光火储协同一次调频的价值——减少频率偏差峰值加快频率恢复速度。3.1 风机参与一次调频的两种控制方式建模风机的调频控制最常用的有两种虚拟惯量控制和桨距角备用控制。虚拟惯量控制在Simulink里的实现方式是检测频率变化率df/dt乘以一个虚拟惯量增益系数叠加到有功功率参考值上。当频率跌落时风机转子减速释放动能支撑电网当频率升高时转子加速吸收功率。这个控制的响应速度很快但受风机当前转速和最大转速限制。关键参数是虚拟惯量时间常数通常取2~6秒和最大功率变化率限制。桨距角备用控制的逻辑是正常情况下风机以最大功率跟踪MPPT模式运行但保留一部分功率比如减载10%~20%当频率跌落时通过桨距角控制快速释放备用功率。这种方式的容量更大但响应速度比虚拟惯量慢因为桨距角的机械动作有时间延迟。在仿真中桨距角执行机构可以建模成一阶惯性环节时间常数大约0.5~2秒。提示在Simulink中做风机调频仿真建议把风机模型拆成“风速模型、气动模型、传动链模型、变流器控制模型、调频附加控制模型”五个子系统分开调试比全部揉在一起方便得多。尤其是变速变桨风机的控制逻辑一旦代码写乱了后期排查非常痛苦。3.2 火电一次调频模型的经典参数你怎么设火电机组的一次调频特性用传递函数可以表达得很清楚。核心是三个参数调差系数速度不等率、调速器时间常数、汽轮机时间常数再热系数。这些在Simulink里都有现成的模型块。调差系数是火电一次调频最核心的参数定义为转速变化与功率变化的比率通常取4%~5%。调差系数越小同样的频率偏差下机组出力变化越大调频能力越强但容易引起机组间功率震荡。调差系数越大稳定性好但调频能力弱。汽轮机的时间常数通常是几秒到十几秒这决定了火电一次调频的响应速度是“秒级”的不可能像储能那样毫秒级响应。在Simulink仿真中火电调速器可以建模成带死区的PI控制器下垂特性通过调差系数实现。我的建议是火电一次调频模型先用一阶惯性环节代替完整汽轮机模型验证整体调频策略的正确性再逐步细化到再热器、回热系统等。一上来就建全参数火电机组模型往往会把仿真步长拖得很慢而且参数不确定性问题一大堆。4. 二次调频AGC仿真风电、储能、电动汽车、水火电如何分工二次调频AGC的仿真建模逻辑上比一次调频更复杂因为它涉及的不再是单机响应而是自动发电控制策略层面。AGC的核心任务是计算区域控制偏差ACE然后按一定的分配策略把调节功率下发给各个调频资源。在互联电网中ACE的计算公式通常为ACE (实际联络线交换功率 - 计划交换功率) 频率偏差系数 × (实际频率 - 额定频率)。但在孤网或单区域模型中ACE就简化成频率偏差乘以频率偏差系数。AGC的典型控制周期是4到8秒属于慢速控制其本质是一个离散化的积分控制器。在Simulink里做AGC通常不直接用Simulink自带的PID控制器而是用离散积分器加分配矩阵来实现因为这个分配逻辑本身就是工程上需要灵活调整的部分。4.1 AGC的功率分配策略比例分配 vs 经济分配 vs 动态分配AGC的功率分配策略五花八门但我见过最常用的有三种第一种是比例分配。所有AGC机组按容量比例分担调节功率。这种策略最简单仿真中只需要一个矩阵乘法稳定性好适合做基础验证。缺点是没考虑机组的调节速率和经济性差异火电和储能被一样对待实际效果并不好。第二种是经济分配。在满足调节功率的前提下让调节成本最低的机组优先调节。这个就涉及到机组组合的优化问题了在Simulink里可以通过fmincon等优化工具箱实现但计算量大仿真速度慢。我在做工程仿真时一般不会在动态仿真中嵌在线优化而是用查表的方式预先计算好分配系数。第三种是动态分配。根据各机组的实时状态调节速率、爬坡能力、SOC、备用容量动态调整分配权重。比如频率偏差大时优先调用储能和快速机组频率偏差小时由火电承担慢速调节。这种策略最贴近实际但模型复杂度也最高需要增加状态监测模块和动态权重计算模块。我在仿真中最常用的是“分区动态分配”频率偏差绝对值大于某个阈值比如0.05Hz时储能和水电承担主要调节功率偏差小于阈值时火电和风电逐步接管。这其实就是工程上说的“快速资源应对扰动慢速资源恢复备用”也是储能参与AGC的核心价值所在。4.2 风电AGC的特点限功率运行与功率预测接口风电参与AGC跟水电火电最大的区别是水电火电有可控的燃料输入和原动机风电的“燃料”是风不可能无限制地增加出力。所以风电参与AGC的前提是风机必须运行在减载状态留出向上调节的空间。在Simulink仿真中风电AGC模型通常包含三层风电场功率预测层给定一个预测出力基准、AGC指令分配层根据ACE计算风电场需要增加或减少多少功率、风机控制层把功率指令转换成桨距角/转速参考值。这三层的数据流是AGC主站→风电场控制器→单机执行机构。这里有个细节风电响应AGC指令的过程中受风况变化影响很大实际出力会波动。所以在AGC仿真中你的风电场模型必须包含风速序列扰动不能假设风速恒定。否则AGC仿真永远只验证控制逻辑验证不了抗干扰能力。4.3 储能和电动汽车在AGC中的角色差异储能和电动汽车虽然都通过变流器并网但在AGC建模时不能简单混为一谈。储能的响应速度极快毫秒级约束是SOC上下限和最大充放电功率电动汽车单台功率很小需要聚合建模且受充电需求和用户行为影响可控性不如大储能。在AGC分层控制框架中储能通常承担“一级控制”角色接收AGC指令快速精确执行响应周期短电动汽车承担“二级控制”角色在储能无法满足全部调节需求时由电动汽车聚合商按可调度容量分配调节功率。我在仿真中给储能和电动汽车各加了一个“可调功率上限”模块根据SOC动态计算最大可调功率这比用固定限值更接近实际。注意电动汽车参与AGC要特别注意SOC的建模精度。如果只是把电动汽车当作一个固定功率的受控源仿真结果会偏乐观因为实际电动汽车能提供的调节功率取决于用户何时插枪、何时拔枪。建议用蒙特卡洛或统计分析建模聚合充电负荷的可用性曲线再把这个曲线作为AGC可用容量的输入。4.4 水火电在AGC中的不同响应特性水电和火电在AGC中的配合是经典问题。水电的响应速度快秒级到十秒级尤其是水轮机的导叶调节很快适合承担快速调节功率但水电受来水和水库调度约束不能频繁大范围调节。火电响应慢几十秒到分钟级但持久性强适合承担持续调节功率。所以“水火互补”在AGC里的说法是水电打前锋火电压舱石。在仿真中水电机组用“导叶开度—水轮机功率”的一阶惯性模型加PID调速器火电机组用“锅炉—汽轮机—调速器”的多阶模型。要注意水轮机的“水锤效应”——导叶快速关闭时水压上升功率会先短暂上升再下降。这个动态特性如果不建模AGC仿真的响应曲线会少一个真实的振荡环节。另外水火电AGC还有一个“调节速率匹配”的问题。火电的爬坡率通常限制在每分钟1.5%~3%额定出力水电可以到10%以上。当AGC指令需要快速增加大功率时如果只把指令下发给火电火电跟不上ACE会持续超限。所以AGC分配算法里必须区别各机组的爬坡率约束仿真时用“限速率模块”来模拟这个约束。5. 实操中Simulink建模的常见坑与调试技巧搞Simulink仿真的同行估计都有同感模型建出来了仿真跑起来结果不对——这大概占了80%的时间。下面这些坑和技巧都是我实际调模型过程中踩过和验证过的直接拿出来分享。5.1 风电场聚合模型和详细模型的选择建风电调频模型时最大的坑是“聚合模型”和“详细模型”的选择。全详细模型能精确反映每台风机的运行状态但计算量大在含AGC和储能的系统级仿真中往往寸步难行。聚合模型计算快但忽略了风机之间的塔影效应、尾流效应、风速差异调频控制的动态特性会有偏差。我的建议是“三阶段建模法”先用聚合模型验证控制策略逻辑跑通全系统再用典型场景抽出的几台单机详细模型做局部验证最后把单机详细模型的结果折算成聚合模型的等效参数回到全系统仿真中确认。这样既保证了精度又控制了计算量。5.2 仿真步长和求解器的选择调频仿真的时间尺度很广储能响应是毫秒级AGC是秒级火电是分钟级。Simulink默认的变步长求解器ode45在含储能的仿真中经常出现“过零检测”问题导致仿真崩掉。我常用的求解器组合是连续动态部分用ode23tb对刚性系统友好储能变流器模型用离散求解器AGC控制逻辑用固定步长0.01秒的离散模块。提示如果你发现仿真时间极长但系统动态变化很慢八成是求解器因为某个刚性环节比如储能电池的RC模型被迫减小步长。换用ode23tb加上“代数环”检查通常能大幅提速。5.3 参数初始化是仿真结果的另一半仿真结果不对很多时候根本不是控制逻辑问题而是初值不对。我见过最典型的错误AGC积分器的初值没设置仿真一开始积分器从零开始往上冲频率出现莫名其妙的偏移储能SOC初值设成了50%但初始有功功率不为零功率和SOC对不上火电锅炉压力初值设成了额定值但实际模型稳态时需要一定的压力偏差才能维持出力。解决方法是先跑一段“初始化仿真”让系统在扰动前达到稳态把稳态值作为正式仿真的初值。在Simulink中可以用“状态空间”里设置初始条件的办法或者用“稳态初始化”功能。设定初值之前先做一次“零扰动测试”输出曲线平坦没有漂移再开始加扰动。5.4 AGC逻辑用连续积分还是离散控制AGC在工程中是离散控制控制周期4~8秒。但在Simulink里有不少人直接用连续积分器建模这在仿真速度上省事但结果和实际工程行为对不上。因为连续AGC会在每个仿真步长都响应频率偏差而实际AGC只在每个控制周期才计算一次。我建议AGC控制模块用固定步长的离散积分器采样时间设为5秒典型AGC周期。如果你做的是包含通信延迟的系统级仿真还要在AGC指令路径上加入2~4秒的延迟模块否则仿真结果会乐观得不像话。6. 一次调频与二次调频联合仿真的闭环测试方法把一次调频和二次调频模型都搭好之后最关键的步骤是闭环联调。这个阶段最容易暴露一个工程问题一次调频和二次调频的“打架”。一次调频是快速的、本地控制的二次调频是慢速的、AGC集中控制的。如果储能和风机既参与一次调频又参与二次调频两条通道的指令可能冲突——一次调频要求加功率AGC要求减功率最终执行指令会震荡。6.1 联合仿真中确认“控制权限优先级”我的做法是在储能和风机的有功控制模块里加一个“优先级选择器”。逻辑是频率偏差大于死区时一次调频指令覆盖AGC指令优先响应频率紧急变化频率偏差进入死区后恢复AGC跟踪模式。这个策略在Simulink里实现就是一个简单的Switch模块但它的工程意义重大避免资源同时响应两个矛盾指令。6.2 联合仿真的考核指标联合仿真做完不能只看频率曲线“大概恢复了”就完事。我一般用这几个指标来衡量系统调频能力频率最低点/Nadir值扰动后频率跌落到的最低值必须大于低频减载阈值。频率变化率最大值RoCoF max考核储能和风机虚拟惯量的效果。频率恢复时间频率回到死区如±0.02Hz所需的时间。调节功率过冲储能等快速资源在响应过程中是否存在超调超调会加剧系统振荡。ACE的峰值和持续时间考核AGC控制品质。把这些指标算出来和电网公司或项目的要求对比就能判断模型参数是否合格。我在实际项目中常遇到的一个问题是储能参与一次调频后频率恢复快了但因为储能SOC有限调节功率释放过快造成频率在恢复段出现“过冲”——频率从49.5Hz冲到50.3Hz。解决办法是给储能的一次调频附加一个功率变化率限制比如每秒不超过20%额定功率让储能响应“快但不猛”。6.3 仿真报告的标准化输出做仿真不是跑完看到一条曲线就结束。规范的仿真输出应该包含扰动设置记录、各调频资源的功率响应曲线、频率动态曲线、ACE变化曲线、各资源调频贡献的定量统计调频电量、调节速率、以及关键指标的对比表。我习惯把Simulink的输出保存成MATLAB数据用脚本批量生成图表和指标表这样后期改参数重跑时只需要一键生成新报告。7. 实际项目中的调频仿真经验与后续扩展我做过的某仿真项目中风电渗透率约30%整个系统等效惯量比传统系统低了近15%一次调频最差工况下频率最低点掉到49.1Hz接近低频减载动作线。通过加入储能虚拟惯量控制、风机的减载备用控制、以及协调一次/二次调频的优先级逻辑后频率最低点被拉回到49.6Hz以上RoCoF下降了一半多。这个过程充分说明了风光火储协同调频的价值。后续这个模型还可以往这些方向扩展加入电池寿命衰减模型研究频繁调频对储能寿命的影响加入多区域互联电网模型研究联络线功率振荡抑制把电动汽车的聚合充电模型做得更精细考虑用户行为和充电桩调度或者把仿真和硬件在环HIL结合把AGC控制器的代码直接部署到嵌入式设备上验证。另外关于热词搜索里出现的“储能电动汽车水电火电二次调频”有一点想特别提醒电动汽车二次调频在仿真中确实能做但工程落地还有很大距离。V2G的通信延迟、用户充电的不确定性、电池寿命折损的实际成本这些都让电动汽车的AGC聚合参与度比理论值低很多。仿真时可以大胆假设但对外汇报或工程设计时要说明假设条件否则容易给人“纸上谈兵”的印象。我个人在实操中最深的体会是风光火储联合调频仿真难点从来不在某个单机模型建得精不精确而在于“多时间尺度、多控制层级、多资源协调”的统筹能力。建模之前把时间尺度和逻辑层次理清楚建模过程中用“分阶段验证”控制复杂度的膨胀仿真后重视初值、求解器和指标体系的细节这套方法论比任何一个单独模型的精度都重要。