资讯动态

含风电的两区域系统二次调频仿真:AGC建模与PI整定全解析

发布时间:2026/10/20 14:36:31 来源:尧图企业网站定制
做电力系统频率控制的同行应该都有共识只要有新能源接入调频这件事就变得不那么让人省心了。风电的随机性、间歇性会在一次调频和二次调频两个层面上持续制造扰动而互联电网的联络线功率又会把这种扰动“传导”到相邻区域。我刚做完一个含风电的两区域系统二次调频控制仿真研究这个项目不算难但里面值得琢磨的细节特别多从模型怎么搭、参数怎么设到控制器怎么整定、结果怎么分析每一步都有门道。这篇文章就把整个仿真研究的思路、建模细节、控制策略和实操过程中踩过的坑完整复盘一遍给准备做新能源频率稳定仿真、或者正在做AGC相关课题的朋友一个可以直接参考的落地方案。1. 为什么要做这个仿真从实际痛点说起1.1 一次调频与二次调频的本质区别很多刚接触调频仿真的同学会把一次调频和二次调频混在一起但这两者的物理本质和控制系统完全不同。一次调频是发电机调速器基于转速偏差频率偏差自动动作的快速响应响应时间通常在几秒到十几秒它不需要外部指令是机组的“本能反应”。但一次调频有个硬伤——它是有差调节频率偏差不可能归零而且调节能力受机组调速器死区和调差系数限制。二次调频则是调度端或区域控制中心通过自动发电控制AGC系统计算出区域控制偏差ACEArea Control Error再向机组下发功率调整指令让频率恢复到额定值同时把联络线交换功率维持在计划值。它跟一次调频最大的区别就是无差调节、集中控制、作用时间在分钟级。可以这么理解一次调频是“先稳住”二次调频是“再拉回”两者是接力关系。所以在仿真里你不可能只搭一个简单的频率响应模型就完事——必须区分开调速器的快速回路和AGC的慢速积分回路否则得到的动态响应曲线会误导你对控制效果的判断。1.2 风电接入给频率控制带来的新问题风电给二次调频带来的麻烦不是“多了一个扰动源”那么简单。我总结下来有三个层次的问题。第一风机通过电力电子变流器并网转子与电网频率解耦本身不具备传统同步发电机的惯量响应能力风电场替代同容量火电后系统等效惯量降低同样的负荷扰动会造成更大的频率偏差。第二风电功率波动本身就是持续的随机扰动单台风机出力抖动已经很频繁整个风电场的聚合功率也会在分钟级尺度上有明显的波动这会持续激励AGC系统动作如果控制器参数不合适频率波动反而会被放大。第三风功率预测精度有限尤其在爬坡事件中实际出力与计划出力的偏差会形成较大的净负荷扰动这对AGC的调节速率和调节容量都提出了新要求。要为这一类问题做仿真首先需要一个能真实反映“频率动态 联络线功率动态 风电扰动”的互联系统模型这也是为什么选两区域而不是单区域的原因。1.3 为什么一定要用“两区域”模型单区域模型能观测频率偏差但观测不到区域间功率交换对频率控制的影响。实际电网中相邻区域通过联络线互联一个区域的频率波动会通过联络线功率扰动传导到另一个区域而AGC的核心目标恰恰有两个频率偏差归零、联络线功率偏差归零。两区域系统能够完整表达ACE的计算逻辑区域1的ACE由本区域频率偏差乘上频率偏差系数B加上本区域与区域2之间的联络线功率偏差组成。区域2同理。这样你在仿真中就能精确评估不同控制策略对联络线功率稳定性的影响而这是单区域模型完全做不了的事情。从工程角度讲互联电网的AGC考核都是按区域独立进行的两区域模型更贴近实际运行架构也更适合验证不同控制策略在“区域间耦合”条件下的表现。2. 仿真系统的整体架构与建模思路2.1 两区域系统模型结构拆解两区域LFC系统的标准结构可以分成三大部分区域功率-频率动态环节、联络线功率交换环节、二次调频控制环节。先说区域功率-频率动态。每个区域内部通常包含调速器模型、原动机汽轮机/水轮机模型、发电机-负荷惯量模型。不考虑非线性因素时这三者可以分别用一阶惯性环节近似调速器传递函数为1/(1T_g s)原动机为1/(1T_t s)发电机-负荷环节为K_p/(1T_p s)。K_p是区域增益取决于负荷阻尼系数T_p是时间常数取决于系统惯量。再看联络线交换功率。两区域之间的联络线功率偏差ΔP_tie可以建模为2πT12与两个区域频率偏差之差的积分相乘的关系。这里T12是联络线同步系数它决定了区域间功率交换的“刚度”。当区域1频率升高时区域1向区域2输出的功率会增大这就是互联电网功率的自然平衡特性。二次调频控制环节就是AGC的核心每个区域根据自身的ACE信号通过控制器最常用的是PI控制器生成区域内参与调频机组的功率调整指令ΔP_ref。这个指令叠加在一次调频的下垂环节输出之上共同作用于调速器。2.2 关键模块的数学模型与参数写传递函数之前先明确一个原则仿真模型的复杂度要跟你研究的问题匹配。如果研究的是控制策略对比那线性化模型就够了如果研究的是频率动态的极限行为或者大扰动下的低频减载问题那需要更精细的非线性模型。我做的是控制器设计与优化所以用的是带饱和限幅的线性化模型。各环节的典型传递函数和物理含义列在下面环节传递函数物理含义调速器G_g(s) 1/(1T_g s)转速偏差指令到阀门开度的响应T_g约0.08~0.2s原动机G_t(s) 1/(1T_t s)阀门开度到机械功率输出火电T_t约0.3~0.5s发电机-负荷G_p(s) K_p/(1T_p s)机械功率与负荷之差到频率偏差的响应K_p1/DT_p2H/(f0·D)联络线ΔP_tie 2πT12/s · (Δf1 - Δf2)两区域频率偏差差值的积分传导功率偏差区域参数我用的是一组典型的等值火电区域参数调速器时间常数T_g0.08s汽轮机时间常数T_t0.3s负荷阻尼系数D0.02等效惯量H5s所以T_p约10s稍多一些K_p约50。这个参数组合代表着中规模互联区域动态响应时间是几十秒量级与真实系统量级相符。两个区域的参数可以设成一样也可以设成不同值模拟“大区域带小区域”的场景。我在标准工况下设成对称参数在后面鲁棒性测试章节会专门分析参数不对称的情况。2.3 风电出力波动的建模方式风电模型的复杂度选择要看你的研究目的。我在这里分享三种常用建模方式从简单到复杂。最基础的是阶跃扰动模型在仿真某个时刻给系统叠加一个风电功率突降或突升模拟风功率爬坡事件。这种方式最适合研究控制器在确定性扰动下的动态响应和参数优化。进阶一点的是随机功率波动模型用带限白噪声或者一阶惯性环节滤波的白噪声来模拟风功率的随机波动通过设置噪声功率谱密度和滤波时间常数可以控制波动的幅度和时间特性更贴近实际风电场的出力特征。更复杂的是机理模型用风速模型比如某实测风速序列或威布尔分布随机风速驱动风机功率特性曲线再进入仿真系统。这种模型最真实但计算量更大参数也多。我的建议是控制器设计和参数整定阶段用阶跃扰动模型方便观察响应曲线和对比控制品质验证阶段用随机波动模型模拟实际运行工况如果条件允许再做一两个极端风况场景大幅爬坡、切机测一下系统极限能力。在Simulink中实现随机风电模型可以直接用Random Number模块接一阶惯性滤波也可以写一个封装的S函数。我更推荐用带限白噪声加惯性环节的方式理由是输出更平滑物理上更接近风功率的连续变化特征。3. 控制器设计从经典PI到现代控制的仿真实现3.1 经典PI型自动发电控制AGC两区域系统中AGC的经典形式是每个区域使用ACE作为PI控制器的输入。ACE的计算公式很关键区域1ACE1 B1·Δf1 ΔP_tie 区域2ACE2 B2·Δf2 ΔP_tie注意区域2的ΔP_tie符号是相反的因为从区域2的角度看联络线功率流出方向正好相反。PI控制器的输出是区域的功率调整指令ΔP_ref经过限幅后叠加到调频机组上。PI参数的选择是重头戏。积分增益K_i直接决定ACE的收敛速度比例增益K_p决定动态响应的快速性和超调。整定不当会出现两种典型症状比例增益太大导致频率快速振荡积分增益太大导致系统爬升超调甚至失稳。我用的初始整定方法是基于典型工程法试凑先给一个较小的比例增益和积分增益然后逐步增加积分增益观察ACE波形是否在合理时间内归零再微调比例增益消除超调。最终典型整定结果是一组对称参数具体值会在第4节给出。3.2 从LQR到模型预测现代控制方法的仿真实现单纯PI控制在参数固定后面对系统结构变化或风电扰动增强时适应能力有限。我在这个项目中同步实现了两种现代控制方法做对比简单分享一下实现思路。LQR线性二次型调节器的核心是把频率偏差、联络线功率偏差和控制量偏差加权平方和作为性能指标通过求解Riccati方程得到状态反馈增益矩阵。在Simulink中可以用状态空间模块搭建系统状态方程用MATLAB脚本中的lqr函数离线求解增益再带入仿真。关键难点是权矩阵Q和R的选取Q对角元对应各状态变量的权重R对应控制能量的惩罚。模型预测控制MPC的思路更直观每一步优化计算未来一段预测时域内的控制序列使预测输出尽可能接近参考值同时满足控制量和控制增量的约束。Simulink的MPC Toolbox中有现成模块但建立预测模型时需要把系统的连续状态方程转换为离散模型采样时间选1到2秒比较合适太短计算负担大太长控制精度差。这两类现代控制器的实现工作量比PI大得多但对比效果显著MPC在处理风电随机扰动和机组功率限幅约束时明显比固定参数的PI更从容频率偏差的波动范围更小。3.3 控制器参数的整定与调试技巧如果你也是用试凑法整定PI我建议不要直接在完整的两区域模型上调效率太低了。我的方法是分步调试先断开联络线把两个区域做成独立的单区域模型分别整定各自的PI参数这样带宽低、耦合少很容易找到稳定的参数基准值。然后再接上联络线做整体微调。一个重要的经验两区域互联后原本单区域稳定的PI参数很可能引发区域间振荡或联络线功率波动此时需要降低比例增益或增加频率偏差系数B以增强区域间的阻尼。参数整定完成后还有一个很容易忽略的点——加限幅。实际发电机组有最大调节速率和调节容量仿真模型里如果不对ΔP_ref做限幅积分器可能会无限制累积导致控制器输出远超出实际机组的承受能力这时的仿真结果已经没有工程意义了。我一般会对ΔP_ref设置±0.1到±0.2 p.u.的限幅同时对积分环节加抗积分饱和处理。4. Simulink建模实操一步步搭出可运行的仿真4.1 模型搭建的模块选型与连线要点MATLAB/Simulink中搭建这个系统我用的模块非常基础没有任何特殊工具箱依赖主要是为了确保模型的可移植性和可复现性。每个区域的内部结构可以按这样的信号流搭建Sum模块频率偏差、Gain模块1/R调差系数、饱和模块调速器限位、Transfer Fcn模块调速器惯性、Transfer Fcn模块原动机惯性、Sum模块机械功率与负荷扰动作差、Transfer Fcn模块发电机-负荷惯性、Gain模块频率偏差系数B以及积分器模块联络线角度差积分。连线时有一个高频错误点负荷扰动和风电扰动的方向。区域内的功率平衡是机械功率 风电功率 - 负荷扰动 发电机-负荷环节的输入。如果你的扰动信号符号搞反了频率响应方向就完全反了查错能查一下午。4.2 风电随机出力模块的搭建Step扰动直接用一个Step模块并联到负荷扰动端就可以幅值设成你想要的功率偏差百分比。随机波动模型更讲究一点。我在Simulink中搭的结构是Random Number模块 → 一阶低通滤波时间常数约30~60s → Gain模块调节功率波动幅值 → 加到区域1负荷扰动端。滤波时间常数的设置会导致功率波动的特性完全不同。时间常数太小波动过于剧烈频率响应曲线会像噪声一样毫无规律时间常数太大波动过于平缓体现不出风电扰动的随机性。我实测下来用50s左右的时间常数比较合理波动周期在几分钟量级与真实风电功率变化的典型时间尺度相符。调节波动幅值的Gain我用的是0.05 p.u.量级也就是峰峰值约0.1 p.u.这个扰动强度对AGC来说是很有挑战性的能够在仿真中明显看出不同控制策略的性能差距。4.3 仿真运行设置与结果输出仿真时长设为800秒比较合理前300秒让系统在初始条件下完全稳定之后切入负荷阶跃或风电扰动这样可以清晰地分离初始化和扰动响应两个阶段看曲线时不会被启动瞬态干扰。求解器我用的是定步长的ode4Runge-Kutta步长设0.01秒。定步长的好处是仿真结果在同一时间网格上方便后续用数据处理脚本统一比较不同控制器输出的曲线也避免变步长求解器在某些模型中被判断为刚性问题后自动切换步长导致的数值噪声。模型里如果用了连续积分器表示联络线角度差注意角度差数值会随着时间增长超出2π范围——这是正常的不要误认为是模型出错数据后处理时只需要关注频率偏差和功率偏差的数值变化趋势即可。4.4 一个可以直接用的初始化脚本在Simulink模型运行之前建议先在脚本里给各模块参数赋值这样修改参数不需要改动模型文件也方便批量跑参数扫描。下面是我基于MATLAB脚本风格的初始化写法可以用在很多简化版LFC模型中。%% 两区域LFC系统参数初始化 % 区域1与区域2采用对称参数基准工况 f0 50; % 额定频率 Hz R 0.05; % 调差系数 Tg 0.08; % 调速器时间常数 Tt 0.3; % 汽轮机时间常数 H 5; % 等效惯量 D 0.02; % 负荷阻尼系数 Tp 2*H/(f0*D); % 发电机-负荷时间常数 Kp 1/D; % 区域增益 T12 0.545; % 联络线同步系数 B 1/R D; % 频率偏差系数 % PI控制器参数试凑整定结果 Kp_agc 0.05; % 比例增益 Ki_agc 0.08; % 积分增益 % 负荷扰动 dPL1 0.02; % 区域1负荷阶跃 p.u. dPL2 0; % 区域2负荷阶跃 % 风电随机扰动 wind_mean 0; wind_noise_psd 0.001; wind_tau 50; % 风电波动滤波时间常数 wind_gain 0.05; % 风电功率波动幅值这里注意B的计算频率偏差系数B 1/R D这是区域AGC中ACE计算的必需参数。R0.05时1/R20D0.02B20.02单位是p.u./Hz。如果把R改成0.04B就变成25.02区域对频率偏差的响应会被放大调节更快但更容易振荡。5. 常见问题与排查技巧实录仿真跑不通、跑出怪曲线是每个做这个方向的人都绕不过去的坎。我把实操中遇到过的典型问题整理成了一张速查表每一条都是亲自踩过的坑。现象可能原因排查与解决方法频率偏差发散到无穷大控制器输出符号接反、ACE计算中B的符号弄错、负反馈变成了正反馈先断开AGC回路单独验证开环响应确认ΔP_tie的方向与ACE中加减号的一致性频率响应快速振荡比例增益过大、调速器限幅触发引起极限环降低Kp_agc检查饱和模块上下限是否过窄频率恢复太慢积分增益过小、限幅太小限制了调节速率增大Ki_agc检查限幅与积分器是否抗饱和曲线有阶梯状锯齿求解器步长过大或变量步长导致输出粗糙改用定步长设0.01s检查Random Number模块的采样时间联络线功率持续震荡T12设得过大、两个区域参数差异过大降低T12先设对称参数验证模型正确性再改不对称参数风电随机扰动导致AGC频繁反向调节扰动带宽过高、AGC响应速度不足增大风电滤波时间常数或者考虑MPC这类带预测的控制方法还有两个隐蔽性极强的坑值得单独拎出来讲。第一个是ACE连接线功率的方向定义。两区域模型中ΔP_tie从区域1流向区域2被定义为正方向时区域1的ACE B1Δf1 ΔP_tie区域2的ACE B2Δf2 - ΔP_tie。如果你把两个区域都用加号仿真结果就是两个区域的AGC在互相“顶牛”频率虽然能稳定但联络线功率会严重偏移设定值。这个错误在Bode图上看起来不明显但看ACE波形一眼就能发现问题——两个区域的ACE同时大幅增大这在物理上不合理。第二个是积分器初始化。Simulink的积分器默认初始状态是0这没问题。但如果你在仿真过程中把负荷扰动模块从Step换成别的信号源积分器状态会发生跳变频率偏差曲线会出现一个虚假的“冲击”。这种情况下要手动指定积分器初始条件或者在切换信号源后重新初始化整个模型。调试时我的建议是先跑一个最简场景——无风电、无AGC只有区域1加一个负荷阶跃看频率能否按照一次调频的规律进入一个不等于零的稳态值。如果这一步通过说明基础模型正确再加AGC看频率能否归零最后才加风电扰动。分步验证能让你在最短时间内定位到是哪一层出了问题。6. 结果分析应该看什么评价指标的选取6.1 频率偏差、ACE、联络线功率的评估维度仿真的最终产出不是曲线图本身而是基于曲线得出来的量化结论。我评估二次调频控制效果时一般看四个指标。频率偏差峰值最大值和最小值反映系统在最坏扰动瞬间的频率偏移程度这是调度最关心的指标直接关联到是否触发低频减载或高频切机。频率恢复时间定义频率偏差进入死区比如±0.02Hz后不再离开的时间节点反映AGC把频率拉回合格区间需要多久这个值越小越好。ACE累积偏差积分绝对误差IAE或积分时间乘绝对误差ITAE反映AGC整体调节的经济性和平滑性。IAE是把整个仿真过程中的ACE绝对值对时间积分数值越大说明调节越费劲、功率调整越频繁。联络线功率波动幅度衡量区域间功率交换的平稳性。若两区域之间有大容量长距离联络线联络线功率剧烈波动会威胁联络线安全稳定运行。这四个指标分别对应稳态、动态、经济和安全四个维度单看任何一个都容易得出片面结论。我通常会把结果汇总成对比表格同时列出各控制策略的多个指标值。6.2 鲁棒性测试的几个必要场景一个仿真研究如果只跑一组参数是远远不够支撑结论的。我的做法是固定几类典型场景在不同场景下测试每种控制策略的表现。第一个场景是负荷阶跃响应考察控制策略的基本动态性能和稳态精度。第二个场景是风电随机波动考察在持续扰动下的调节平稳性。第三个场景是风电极端爬坡模拟风电出力在几十秒内大幅下降考察控制策略在强扰动下的极限能力。第四个场景是参数偏差把两个区域的系统参数如惯量、阻尼改成不对称考察控制器在模型失配下是否仍能保持稳定。实际结论是PI控制在参数匹配良好的场景中表现非常优秀但在风电极端爬坡和参数不对称场景下频率偏差峰值明显增大MPC在相同场景下的表现更稳定调节动作也更平缓。这就是仿真研究在做完曲线对比之后真正体现价值的地方——从“能跑”走向“能比”再走向“能指导实际控制策略选择”。6.3 怎么把仿真结果写成有价值的结论做仿真最后一步也是很多人做得比较薄弱的一步是结果总结。曲线图不能说明白“为什么好”和“好在哪”需要把控制策略性能差异与控制系统结构的因果关系对应起来。比如当MPC比PI的频率偏差峰值小20%时你应该能解释这个差异的来源是MPC对风功率波动的预测能力让它能够提前调整控制量而不是等频率偏差显现以后再被动反应。这样的结论才是有物理含义的拿出来支撑论文或报告才立得住。我在做这个仿真研究时的体会是控制策略的优劣一定是在多场景对比中体现出来的而不是靠单条曲线的主观观察。固定几个场景、统一几个指标、做横向对比这套方法可以复用在任何区域电网的调频仿真研究里。回过头来想这个“含风电的两区域系统二次调频控制仿真”其实最大的价值不在于把Simulink模型搭多漂亮而在于借助仿真逼着你去搞清楚调频链路里每一个增益、每一个时间常数到底在干什么。把PI的参数、联络线功率方向、ACE的构成这些最基础的概念真正吃透比跑通一个复杂的模型更有意义。后面如果再想往深了做可以把模型扩展成三区域、加入储能参与调频、或者把风机虚拟惯量控制也封装进去这些都是在这个基础上完全可以继续延伸的方向。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑