ARTICLE DETAIL

资讯详情

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

风光火储多源协同调频:基于Simulink的建模与AGC/一次调频策略解析

风光火储多源协同调频:基于Simulink的建模与AGC/一次调频策略解析 1. 多源协同调频的整体设计与思路拆解1.1 为什么风光火储非协同不可电网频率的本质就是发电功率和用电负荷之间的实时平衡表。过去系统里以火电、水电这些同步电源为主负荷一波动发电机转子天然的转动惯量先顶住第一波冲击随后调速器动作把频率拉回稳态这个链条非常成熟。但新能源大规模并网以后问题来了——风机和光伏是靠电力电子变流器并网的转子转速和电网频率解耦短路冲击时它们几乎不贡献转动惯量传统火电的调节压力越来越大系统频率的底子越来越薄。单纯把火电的调速器参数调得更灵敏并不是最优解。火电是一次能源环节锅炉、汽轮机都有热惯性调节速率有限频繁动作还会带来机组寿命损耗。储能恰好弥补这个短板毫秒级响应、双向调节、无机械磨损。风电和光伏虽然出力波动大但如果在变流器控制里叠加频率支撑功能也能在关键时刻搭把手。所以风光火储多源协同并不是把四种电源简单堆到一起而是根据各自的调节速率、调节容量、成本特性把一次调频和二次AGC调频这两条时间尺度上的任务做合理分工。做这个Simulink仿真框架的初衷就是想把这一套协同逻辑先跑起来再论证。在真实系统里做实验成本太高也不允许随便扰动电网仿真平台就成了控制策略验证的最佳方案。我选择Simulink的原因也很朴素电气、控制、热力系统模型库齐全Simulink的模块化搭建方式适合反复迭代控制策略而且后处理分析工具顺手。这个框架搭好以后既能做学术研究里的策略对比也能为工程项目提供控制参数整定的参考依据。1.2 一次调频与二次AGC的分工边界很多人把一次调频和AGC混在一起其实它们的定位差异在控制理论里是非常清晰的。一次调频是就地快速反应通过检测频率偏差直接调整各电源的有功出力时间尺度一般在几秒到十几秒内目的是把频率变化刹住让系统进入一个新的平衡状态。但一次调频是有差调节它只能把频率稳定在某个偏离额定值的范围内无法做到无差恢复。二次AGC调频则是远程精细修正由调度端的AGC系统计算区域控制偏差ACE然后下发调节指令给各调频电源时间尺度在几十秒到分钟级目的是把频率和联络线功率拉回额定值。所以一次调频和AGC不是竞争关系而是接力关系——一个负责稳住局面一个负责恢复常态。但从电源角度看这两棒之间的交接是有配合成本的。火电机组参与一次调频时调速器的动作量会和AGC指令叠加如果协调不好就会出现一边增出力一边降出力的打架现象。储能如果既要响应一次调频的快速功率支撑又要跟踪AGC的调节指令就需要设计优先级与限幅策略。这正是本研究里最关键的协同逻辑。1.3 仿真模型的整体架构设计我最终搭建的Simulink仿真模型采用了分层架构整体上分为三层。最底层是物理设备层包括火电机组的汽轮机-调速器-发电机模型、风机的空气动力学与变流器模型、光伏阵列与逆变器模型、储能电池与双向DC/DC及PCS变流器模型。中间层是本地控制层每个电源都包含本地有功-频率控制回路负责实现一次调频功能。最高层是区域AGC控制层根据系统频率和ACE计算区域总调节量再按分配策略下发给各电源。这种分层架构的优势在于每一层的算法都可以独立调试和替换不会牵一发动全身。比如想测试储能采用虚拟同步机VSG)控制还是下垂控制只需要改中间层储能本体的控制算法AGC层几乎不用动。对于要在这个课题上做深入的人这种模块化设计能省掉大量重复建模的时间。设备层各模型的详细程度也需要权衡。学术研究如果需要考虑波形质量可以用全阶电磁暂态模型如果重点在频率稳定性和控制策略用机电暂态级别的模型就够了Simulink里用平均值模型或者简化传递函数模型实现仿真速度能快出好几个量级。我自己采用的是折中方案火电用经典锅炉-汽轮机传递函数模型风机光伏用功率源配合附加频率控制环储能用电压源型变流器平均值模型。这样既保留了控制策略验证所需的动态特性又不至于因为模型阶数太高把仿真时间拖到难以接受。2. 各电源模块的Simulink建模要点2.1 火电机组调速器与汽轮机模型搭建火电机组在协同框架里依然是调节的主力底座它的建模精度直接决定了整个系统的动态特性是否可信。我在Simulink里采用的是IEEE推荐的标准模型组发电机用同步电机模块汽轮机用多级再热模型调速器用带死区和限幅的功频电液调节模型。汽轮机的传递函数结构值得展开说。再热机组的高压缸、再热器和中低压缸对功率的响应速度不一样高压缸能快速响应调门开度变化但只占总功率的30%左右中低压缸响应慢一些但占大头。这种先快后慢的特性在Simulink里典型表现为再热器时间常数T_RH一般取8~12秒它会显著影响一次调频过程中的功率爬升速度。我在模型里设的T_RH是10秒如果读者自己做建议根据目标机型的实际数据进行标定不要照抄。调速器参数里最关键的是调差系数和死区。调差系数在火电里一般取4%~5%对应频率偏差与功率变化的比例关系我做的是4%。死区设置成±0.033Hz也就是±2r/min的转差防止正常频率波动引起调门频繁动作。Simulink里的实现方式是用Dead Zone模块配合比例环节再加一个一阶惯性模拟油动机的机械响应时间。这一步有很典型的工程味道模拟量计算没问题但死区参数和实际机组不匹配的话仿真结果会跟真实系统南辕北辙。2.2 风电机组与光伏单元的有功控制建模风电参与调频在工程界一直有争论。传统上风机都是MPPT最大功率追踪运行没有预留调频备用限制了它的上调能力。但从控制策略研究的角度我依然把风电的调频能力纳入了仿真框架——通过变流器控制叠加虚拟惯量下垂附加功率信号在频率跌落时短时释放转子动能支撑系统频率。风机仿真模型我简化成了两大环节机械功率计算环节和变流器有功控制环节。机械功率部分用风速-转速-功率关系计算当前风机可发功率变流器部分用一个一阶惯性环节模拟功率指令跟踪特性时间常数约0.1~0.2秒。这个简化模型虽然不能分析低电压穿越等暂态问题但对于频率稳定研究来说它的精度已经足够了。光伏单元同样以功率源形式建模但在控制上增加了减载备用逻辑。光伏要参与频率上调必须有功率备用我通过让光伏始终运行在最大功率点以下一定的比例来实现即在MPPT计算出的最大功率上乘一个减载系数比如0.9然后把减载预留出的容量作为上调备用。这个逻辑在Simulink里用一个简单的Gain模块完成但它的存在直接影响AGC分配时光伏的可调范围所以非常重要。2.3 储能系统与虚拟同步机控制储能是整个协同框架里的特种兵也是仿真策略研究的重点对象。电池模型相对成熟我用的是受控电压源串联内阻的等效电路模型重点在PCS变流器的控制策略。储能参与一次调频我设计了两套可切换的控制模式下垂控制和虚拟同步机控制。下垂控制实现简单有功-频率下垂系数k_f设得比火电更小按储能额定容量的2%调差设计频率变化0.1Hz就对应较大的功率输出快而猛。VSG控制则在传统下垂基础上增加了虚拟惯量环节模拟同步发电机的转子运动方程参数里包含虚拟惯量J和阻尼系数D让储能的响应既有速度又有韧性不会因为功率突变对电网造成二次冲击。这里有个在Simulink里常见的坑VSG控制中的微分环节对仿真步长非常敏感使用变步长求解器时容易出现数值震荡。我的经验是把VSG的功率环单独用固定步长运行或者给微分环节加滤波仿真结果会稳定得多。另外不管是哪种控制模式储能的荷电状态SOC限幅必须做进去否则仿真跑到后面SOC越界控制器还在拼命输出功率结果完全失真。3. 一次调频控制策略的实现细节3.1 频率死区、调差系数与限幅的协同设置一次调频策略的很多门道其实藏在一堆细节参数里频率死区、调差系数和限幅这三者一定要放在一起看。死区设大了微小的频率偏移系统不响应储能和风机的快速调节能力等于没用死区设小了火电调门频繁动作机械磨损和热应力问题都出来。工程上发电机组的频率死区国家标准是±0.033Hz但在多源协同框架下我会把储能和风电的死区设成更小的±0.02Hz让它们在火电动作之前先兜底这样火电的机械动作频次能降下来。调差系数的分配也一样讲究。之前提过火电取4%储能取2%风电取4%~5%这样不同电源在一次调频过程中的出力份额就会按比例自然分配。频率偏差越大调差系数小的电源承担的比例越大储能就会冲在前面火电在后面稳扎稳打形成天然的快慢搭配。限幅设置则需要参考各电源的实际调节能力储能限幅我设在额定容量的±20%风电根据当前风速下的可用容量动态计算火电按锅炉和汽轮机的最大变负荷速率来约束。这一步如果只做了限幅没考虑速率约束仿真中会出现功率指令和实际出力严重脱节的现象。3.2 储能虚拟惯量控制与调频功率分配储能的虚拟惯量控制是这套策略里最有研究感的部分。根据同步发电机转子运动方程当系统频率变化时虚拟惯量控制会提供一个与频率变化率df/dt成正比的额外功率支撑。这个分量能有效抑制频率变化率但问题是它对测量噪声非常敏感Simulink里的频率测量模块差分出来的df/dt经常毛刺很大直接把毛刺放大到功率指令上会导致储能PCS功率波动非常剧烈。我在实际仿真里采用的方案是频率变化率信号先过一阶低通滤波滤波时间常数取0.05~0.1秒然后再乘虚拟惯量系数。这个一阶滤波微分限幅的操作是工程里非常实用的消噪手段。虚拟惯量系数J的整定我走的是试凑加理论校核的路子先根据储能额定功率和系统惯量水平估算一个初值然后逐步增大观察频率最低点的改善程度最终确定在合适取值。功率分配逻辑上一次调频叠加信号由三部分组成下垂分量、惯性分量和功率补偿分量。下垂分量保证稳态时的功率支撑惯性分量抑制频率变化率功率补偿分量用来补偿风机的减载备用缺口。这三个分量在Simulink里用一个Sum模块叠加再经过限幅和变化率限制后作为储能功率指令。3.3 一次调频信号的滤波与平滑处理一次调频信号处理的工程细节特别多踩过坑的人估计深有体会。频率信号本身在仿真里相对干净但放到实际系统里包含大量噪声如果直接把频率偏差信号叠加到功率指令上风机和储能的输出功率会产生高频抖动。我在仿真框架里对所有一次调频附加信号统一做了平滑处理频率偏差信号过一阶低通滤波器功率变化率加Rate Limiter限制。一阶低通滤波时间常数的选择是这里的关键。时间常数太小滤波效果不明显时间常数太大一次调频的快速性就丢了。火电的滤波时间常数我取0.5秒左右储能的滤波常数要明显更小取0.05秒否则就失去了毫秒级响应的优势。Rate Limiter的上升和下降速率限制要分着设储能可以设大一些比如0.5pu/s火电按实际爬坡率0.03pu/s左右来设两者差距很大这正是协同的体现。在Simulink建模过程中我建议把滤波与限幅环节封装成单独的Subsystem统一命名为频率支撑信号处理链路这样整个模型的逻辑层次特别清晰也方便后期整定参数时分门别类地调整。4. 二次AGC调频控制策略的设计与仿真4.1 区域控制偏差与AGC指令生成二次AGC调频的起点是区域控制偏差ACE的计算。在互联电网里ACE由频率偏差和联络线功率偏差两部分构成表达式为ACE ΔP_tie β·Δf其中β是频率偏差系数。我在模型里先搭建了一个双区域互联电网结构区域A包含风光火储所有电源区域B用一台等值火电机组表示这样既能模拟负荷扰动也能验证联络线功率交换的控制效果。在Simulink里计算ACE需要用到的信号是区域A和B之间的联络线功率、系统频率偏差以及区域B的频率偏差。测量模块出来的原始信号同样有高频分量直接进PI控制器会引起调节指令的持续震荡所以我在ACE计算环节加了一阶惯性滤波时间常数按AGC调频周期来定。AGC的调节周期也就是调度端下发一次指令的间隔我按工程典型值2秒来设置采样保持模块在这个位置就派上了用场。ACE信号出来以后接PI控制器输出成为区域调节请求信号ARR。这里有个容易困惑的点ARR是所有调频资源需要共同满足的总调节目标但各电源怎么响应它属于分配策略层的问题不应该在PI输出的地方直接叠加到某一个电源上。合理的方式是ARR先送进分配器分配器按各电源的调节容量和速率特性分解成各自的AGC指令。4.2 AGC控制器的PI参数整定AGC环节的PI参数整定我用的是经典的临界比例度法结合仿真试凑。先把积分作用关掉只保留纯比例环节从很小的Kp开始逐步增大直到系统出现等幅振荡记下临界增益K_u和临界振荡周期T_u然后按经验公式计算初始PI参数。这样得到的参数能保证AGC闭环的基本稳定性再放到典型扰动场景里微调。最终我这套双区域模型的AGC参数整定结果为Kp1.8Ki0.15。Kp决定了对ACE偏差的响应力度Ki则决定了积分清除稳态误差的速度。如果你照着自己的模型做这两个参数大概率需要重新整定因为系统惯量、电源容量和联络线参数都会影响临界增益和振荡周期。AGC控制器输出还需要接限幅和变化率限制这是我在第一版模型里漏掉后来才补上的。如果没有限幅AGC指令在大扰动时会大到不可执行如果没有变化率限制火电的AGC指令波动会非常剧烈。我把AGC总指令的变化率限制设为区域可调容量的某个比例这样调度信号本身就是平滑合理的。4.3 风光储参与AGC的出力分配策略风光储参与AGC在研究和工程里都是一个热点问题——传统AGC调节资源只有火电现在多了储能、风机和光伏怎么分配才能既满足调节需求又经济合理我在仿真里实现的是排序分配策略按调节速率从快到慢排序储能优先级最高其次是风电然后是光伏最后是火电。当调节需求小于储能容量时完全由储能单独承担火电不动调节需求超过储能容量时剩余部分按比例分配给风电、光伏和火电。这种分配策略的缺点也很明显——储能会频繁动作SOC消耗快。所以我在分配器里加入了SOC反馈修正环节当储能SOC低于40%时自动降低储能在分配中的比例把调节压力转移到火电上当SOC高于80%时储能优先承担上调需求下调需求则尽量分给其他电源。这个逻辑虽然简单但在仿真里效果很好能保证长时间仿真中储能不会跑到SOC边界。分配器在Simulink里的实现我用了MATLAB Function模块逻辑判断写起来很灵活比用逻辑门搭清晰得多。后续想扩展成经济性最优分配策略比如考虑各电源的调节成本系数也只需要在函数里改掉分配算法就行。5. 仿真场景、结果分析与调试避坑5.1 典型仿真场景设计三次仿真场景覆盖了从单点冲击到持续波动再到AGC闭环跟踪三种典型工况。第一个场景是负荷阶跃扰动在仿真开始后第20秒区域A突然增加50MW负荷持续100秒后切除。这个场景用来验证多源协同的一次调频响应能力特别是频率最低点、稳态频率偏差和各电源出力响应情况。第二个场景是风光出力波动用随机风速和光照强度序列驱动风机和光伏模型观察在电源侧持续扰动下系统频率质量和储能SOC的变化这个场景更贴近实际运行情况。第三个场景是AGC指令跟踪通过给AGC控制器设置一个阶跃式的ARR参考信号观察各电源的AGC指令响应情况和频率恢复过程验证PI整定参数和分配策略的合理性。5.2 关键仿真结果解读负荷阶跃场景的结果非常直观负荷突变后系统频率立即下跌储能几乎无延迟地输出功率把频率变化率压住风机在虚拟惯量控制作用下短时间内释放转子动能也贡献了一部分支撑火电由于再热器时间常数的存在出力上升明显偏慢大约10秒后才接近其稳态出力值。从频率曲线上看频率最低点出现在储能和风电动作之后但火电跟上之前大约是49.71Hz这个值评价了储能在抑制频率最低点的关键作用。AGC指令跟踪场景验证了二次调频的效果在AGC指令叠加到各电源后约40秒系统频率恢复到49.99Hz附近基本实现了无差调节。联络线功率在调节过程中有小幅波动随后回到计划值。通过对比风光储火各电源的AGC出力曲线可以清楚看到优先级排序策略的执行效果——储能先满负荷动作接着风电和光伏爬到各自限幅最后火电慢悠悠地补足缺口整个过程层次分明。5.3 Simulink仿真调试的常见问题与避坑技巧这套模型从零搭起来踩坑记录攒了一大堆挑几个对后来者最值的说。第一个坑模型初始化不匹配。Simulink里同步电机和变流器模块的初始功率流设置不对仿真一开始就报错或者功率振荡发散。解决方法是把Powergui模块的Load Flow工具用起来先做潮流初始化再启动动态仿真。很多初学者跳过这一步直接跑结果出来一堆振荡还以为是控制策略的问题。第二个坑变步长求解器参数设置。Simulink默认的变步长求解器在模型包含快速变流器开关时会非常慢而且容易因为误差容限设置不当导致结果精度差。我的做法是将仿真类型设置为Fixed-step步长取0.001秒这样虽然计算量大了些但结果稳定可复现尤其是做多组对照实验时固定步长才能保证可比性。第三个坑数据字典丢失问题。我中途把整个Simulink文件夹换了个位置再打开模型时提示找不到数据字典can.sldd模型直接打不开。这个问题的解决方式是如果不需要数据字典可以在模型配置参数里把数据字典的依赖移除或者把所有变量统一放到模型初始化回调函数里管理这样模型文件的可迁移性会好很多。第四个坑AGC指令积分饱和。PI控制器输出在没有限幅反馈时容易在大扰动下进入积分饱和导致指令已经到限幅值但积分项还在持续累积恢复时间大幅延长。Simulink里的PI模块自带抗积分饱和选项一定要勾上同时在积分器后加跟踪反馈这是控制器实现的基本功但特别容易被忽视。6. 后续扩展方向与个人实操感受这套仿真框架搭完以后我自己最深的体会是多源协同调频的难点其实不在单个电源的控制器设计而在协同二字——不同响应速度、不同调节容量、不同成本特性的电源怎么在一套统一的控制逻辑下各司其职又互相配合这个协调机制的设计与验证正是Simulink仿真平台最擅长解决的问题。后续想在这个框架上继续做我认为有两个方向值得投入。一个是把经济性指标引入AGC分配策略从现在的排序分配升级为考虑各电源调节成本、寿命损耗和碳排放的综合优化分配这个在MATLAB里调用优化工具箱就能实现不需要改动底层模型太多。另一个方向是把通讯延时和量测噪声引入AGC通道研究在不确定性条件下控制策略的鲁棒性这个更贴近实际工程中调度通道的约束条件。最后分享一个小操作层面的技巧Simulink模型里的所有控制参数我统一在模型回调函数PreLoadFcn里初始化不写到各个模块的参数对话框里。这样做的好处是参数集中管理、方便批量修改和批量仿真对比尤其当你需要扫描某几个参数做敏感性分析的时候直接写个for循环改变量再sim()调用模型就能自动跑完几百组仿真场景效率比手动改参数高出一个数量级。如果你要在这个方向上做毕业设计或者课题研究这套参数管理习惯建议一开始就养成。
返回列表