ARTICLE DETAIL

资讯详情

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

计及光伏逆变器快速无功响应的配电网分布式电源优化配置方法

计及光伏逆变器快速无功响应的配电网分布式电源优化配置方法 做配电网规划的同行应该都有这种体会光伏接入容量的批复卡点往往不是线路容量而是电压。白天光照强的时候功率倒送节点电压被顶到上限附近稍微来点扰动就越限。以前的做法很直接——限制接入容量、或者额外装无功补偿装置。但你有没有想过一个问题光伏逆变器本身就是一个可以毫秒级调节无功功率的装置为什么不把这个能力直接算进配置方案里这篇就整理一下我最近在Matlab里完成的整套实现计及光伏电站快速无功响应特性的分布式电源优化配置方法从数学模型、约束推导到代码逻辑、仿真结果完整过一遍。适合正在做配电网规划、新能源接入方向研究或者刚入门写优化代码、想找一个能直接改的Matlab框架的读者。1. 经典配置模型里到底缺了哪块拼图1.1 配置问题本质上是带约束的非线性优化问题分布式电源优化配置说的通俗一点就是在配电网的哪些节点装光伏、装多大容量才能让经济性和运行指标都最好。这个“最好”可以是年综合费用最小、网损最小也可以是电压偏差最小、削峰填谷效果最好实际工程中往往是多个目标加权。决策变量是各候选节点的光伏安装容量目标函数是投资运维成本和运行费用约束条件则包括功率平衡、节点电压上下限、支路潮流不过载、DG总容量不超过某个渗透率上限等。用数学语言写出来就是min F C_inv C_om C_loss s.t. P_i P_DG,i - P_L,i U_i * Σ U_j * (G_ij * cosθ_ij B_ij * sinθ_ij) Q_i Q_DG,i - Q_L,i U_i * Σ U_j * (G_ij * sinθ_ij - B_ij * cosθ_ij) U_min ≤ U_i ≤ U_max I_ij ≤ I_max 0 ≤ P_DG,i ≤ P_DG,i,max这个模型本身不复杂但真正决定结果准不准的是你在潮流计算里怎么处理光伏节点。1.2 传统模型的最大问题光伏被当作纯有功节点很多现有代码和教材把光伏节点简单处理为“给定有功功率、单位功率因数”的PQ节点也就是说逆变器不发出也不吸收无功。这在规划阶段确实省事——潮流方程里少一组变量求解简单但代价是偏保守。举个例子某10kV馈线末端接了2MW光伏中午满发时按单位功率因数算末端电压从10.5kV顶到10.7kV越限了于是配置模型告诉你“这里最多只能接1.6MW”。但实际上如果允许逆变器吸收无功也就是功率因数从1.0降到0.95同一个接入点可能能装到2.2MW还不越限。这一部分可观的消纳空间传统模型完全没算进去。1.3 从IEEE 33节点系统说起我的算例基础我用的算例是经典的IEEE 33节点配电网基准电压12.66kV总负荷约3.7MW j2.3Mvar。这是一个非常典型的辐射型网络线路参数和节点拓扑在公开资料里都能找到做对比验证最方便。候选接入节点我选了五个出现频率比较高的位置16号、17号、21号、24号和32号。这五个节点分布在主干线中段和馈线末端能比较充分地体现不同位置对电压的不同影响。末端节点电压支撑能力差光伏多了容易越限但正因为这样逆变器的无功响应在末端的作用也最明显。提示如果你要复现结果节点和线路参数最好用IEEE 33节点的标准数据别自己乱编。我之前试过用随便填的阻抗参数算出来的最优配置和电压分布完全不符合实际规律后面排查了很久才发现是参数问题。2. 快速无功响应不是锦上添花原理与规划价值2.1 逆变器无功调节能力的物理边界光伏逆变器通过电力电子变换器并网理论上它的无功输出可以在一定范围内连续调节。这个范围由逆变器的视在功率S和有功出力P共同决定Q_max sqrt(S² - P²)也就是说有功发得越满剩下的无功调节空间就越小。中午光照最强时P最大恰恰是电压最容易越限的时候但这时Q_max最小无功支撑能力反而最弱。这是一个必须正视的时序耦合矛盾也是建模时最容易忽略的细节。我经常用这样一个类比来解释逆变器就像一个容量固定的“功率钱包”里面有功和无功共用额度。你买的有功多了能腾出来做无功的钱就少了。所以工程上有两个对策一是在并网时把逆变器容量适当放大比如1.1倍甚至1.2倍额定容量二是在调度策略上把无功调节优先预留给电压最敏感的时刻。2.2 快速响应的时间尺度几十毫秒级别意味着什么传统配电网里的无功补偿手段主流是并联电容器、SVG、SVC和有载调压变压器。电容器的响应时间以秒级到分钟级计需要投切开关动作OLTC改变分接头也要几十秒甚至分钟级而且对频繁动作很敏感SVG虽然响应快但造价高100kvar的SVG设备采购加安装基本要小几十万。光伏逆变器的无功响应则完全是另一回事——它的控制周期可以做到几十毫秒甚至更快因为本质上就是调整PWM调制信号和电流指令。这意味着当检测到电压突变时逆变器几乎可以实时输出无功支撑不需要投切任何机械开关。这个时间尺度上的快传统设备根本做不到。2.3 对规划结果的影响机制快速无功响应对配置结果的影响核心机制是改变了电压约束校验的方式。传统模型校验的是光伏满发时的静态电压计及无功响应后电压越限时逆变器可以主动吸收或发出无功来“拉一把”电压约束就变成了动态校正后的电压约束。具体影响分两类。一类是电压偏高场景光照强、负荷轻末端电压上翘这时逆变器吸收无功滞后功率因数相当于在线路上制造额外的无功潮流压降把电压拉下来。另一类是电压偏低场景重负荷时段末端电压跌落逆变器发出无功超前功率因数改善电压支撑。传统模型完全没考虑后一种场景因为在传统框架里光伏只是“减少有功需求”并不知道逆变器还能额外顶一份无功。3. 把无功响应写进配置模型数学建模与场景化处理3.1 决策变量与双层求解思路计及快速无功响应后问题的决策量分成了两层。外层是每个候选节点的光伏安装容量P_DG,i这是规划决策内层是运行阶段每个时刻逆变器的无功输出Q_DG,i,t这是运行决策由电压偏差和光照出力共同驱动。在实际代码实现里我没有去做严格的混合整数双层优化而是采用了“外层智能算法寻优 内层逐时刻潮流校验”的框架。外层用粒子群算法生成一次次配置方案内层对每个方案跑典型日24小时的逐时潮流统计目标函数和越限情况。这么做的好处是代码结构清晰外层和内层可以分别调试而且粒子群对连续变量的优化效率比较高。3.2 目标函数的细化不能只看投资费用我的目标函数包含四个部分费用项计算方式说明投资等年值C_inv Σ (P_DG,i × c_dg) × CRF光伏单位造价取3500元/kW等年值系数按8%折现率、20年寿命折算运行维护费C_om 年发电量 × 0.05元/kWh简化处理按满发小时数估算网损费用C_loss 8760h × 平均网损 × 购电价逐时潮流算出的网损按购电价0.5元/kWh折算电压越限惩罚C_pen 越限节点数 × 权重促进算法远离不可行解网损费用用全年8760小时逐时跑潮流在计算上太慢实际工程里常用典型日乘天数的方式替代。我把光照曲线和负荷曲线按季节聚合成三个典型日——夏季、冬季、过渡季每个典型日24小时逐时计算全天8760小时按天数加权折算。精度足够计算量大幅下降。3.3 含无功边界与时序耦合的约束模型核心约束组可以写成如下形式对每个典型日t时刻、每个节点i都要成立P_DG,i,t η × P_rated,i × α_t // 有功出力和光照曲线α_t成正比 Q_max,i,t sqrt((k_va × P_rated,i)² - P_DG,i,t²) // 无功边界k_va为逆变器容量倍率 -Q_max,i,t ≤ Q_DG,i,t ≤ Q_max,i,t // 无功可调范围 U_min ≤ U_i,t ≤ U_max // 校验修正后的电压 I_ij,t ≤ I_max // 支路电流约束这里有两个容易踩坑的地方。第一逆变器容量倍率k_va是专门留出来的裕量只有k_va大于1中午满发时才可能还有无功空间如果k_va1且光照满发Q_max0快速无功响应就是空谈。第二光伏有功出力和光照曲线是强耦合的上午、中午、下午每个时刻的无功边界都不同约束必须逐时建立不能拿一个常数Q_max代替。无功输出的具体取值策略我在代码里用了一种类电压闭环的启发式规则先按单位功率因数做一次潮流如果节点电压越上限则让该节点逆变器吸收无功如果越下限则让逆变器发出无功调整量在Q_max,i,t范围内按电压偏差比例分配。这虽然不是严格的最优潮流但物理上合理收敛速度快适合在规划模型里做运行模拟。4. Matlab工程实现模块划分、潮流内核与PSO求解细节4.1 代码整体架构与文件划分整套代码我拆成了六个文件每个各司其职调试和复用都方便main_pso.m // 主程序参数设置、PSO循环、结果汇总 load_case33.m // 读入IEEE 33节点数据线路、负荷、拓扑 forward_backward_sweep.m // 前推回代潮流计算 obj_fun.m // 目标函数评估费用 电压越限 网损 hvdc_voltage_control.m // 逆变器无功响应的电压闭环策略 read_results.m // 输出配置方案、电压曲线和收敛曲线4.2 前推回代潮流的核心实现辐射型配电网最合适的前推回代法不需要形成完整的节点导纳矩阵计算速度快迭代也稳定。核心思路是先假定各节点电压为额定值从末端向首端回推支路功率再从首端向末端前推各节点电压反复迭代直到两次结果之差小于阈值。核心代码如下% 回推从末端到根节点累加功率 for b 1:nBranch i branch(b,1); j branch(b,2); S_ij_b S_load(j) Z_ij * (I_ij)^2 S_dg_absorb(j); % 把节点j的负荷、网损、DG参与量叠加到支路功率上 end % 前推从根节点按支路压降更新电压 for b nBranch:-1:1 i branch(b,1); j branch(b,2); U_j U_i - (P_ij*R_ij Q_ij*X_ij) / U_i; end这段代码只是示意结构真实实现还需要处理DG节点的并网功率注入方向。注意一个容易搞错的地方前推回代中负荷用的是恒定功率模型迭代时要把电压衰减对负荷的影响考虑进去否则重负荷场景下结果偏差明显。4.3 粒子群算法求解配置问题的工程实现PSO在连续变量优化上非常趁手代码量少、框架灵活。我的编码方式是每个粒子是1×N_k维向量N_k为候选节点数每一维代表该节点的光伏安装容量范围设在0到节点允许上限之间。种群规模取50最大迭代100次惯性权重从0.9线性递减到0.4学习因子c1c21.5。一个非常关键的工程细节是粒子越界处理。光伏容量显然不能为负如果粒子在搜索过程中出现负值直接截断到0是省事但会让粒子在边界处失去多样性。我采用的是随机反弹策略越界维度按随机系数反弹回到可行域内既保证了可行性又维持了粒子群的探索性。代码大概是% 粒子位置更新后越界处理 for d 1:N_k if x(i,d) x_lb(d) || x(i,d) x_ub(d) xi rand(); x(i,d) x_lb(d) xi * (x_ub(d) - x_lb(d)); end end4.4 无功响应策略在评价函数中的嵌入目标函数内部的工作流程是这样的读入某粒子的配置方案初始化光照曲线α_t和负荷曲线β_t为每个典型日分别赋予对每个典型日的每个时刻t计算光伏有功出力P_DG,i,t计算该时刻的无功边界Q_max,i,t先做一次单位功率因数潮流检查各节点电压偏差调用无功响应策略把电压越限节点的逆变器无功输出调正再做一次潮流校验是否仍在限值内累加网损、越限惩罚到年值。这个过程有点像一个“内层模拟器”外层每评估一次粒子内层相当于跑了约72小时的潮流。用Matlab实现时要注意向量化别逐小时写for循环套for循环否则一次粒子评估可能就要好几秒整个PSO跑完会非常慢。我最后是把24小时的计算写成了矩阵运算速度提升明显。4.5 逆变器容量倍率的建模细节逆变器容量倍率k_va在代码里的位置很隐蔽但影响很大。比如某节点配置了1.2MW的光伏阵列逆变器容量设为1.32MVAk_va1.1那么中午满发时Q_max sqrt(1.32² - 1.2²) sqrt(1.7424 - 1.44) ≈ 0.55 Mvar这0.55Mvar在电压顶上限时吸收掉是决定能不能多装几十千瓦容量的关键因素。我把k_va作为全局常量放在主程序里做敏感性分析时改一个数就行。5. 算例结果怎么解读对比设置、收敛过程与敏感性分析5.1 四种对比场景怎么设计为了让结论有说服力我设置了四组对比场景场景说明关键参数A不考虑无功响应单位功率因数k_va1, Q固定为0B计及快速无功响应逆变器容量余量10%k_va1.1, Q按电压偏差调节C计及快速无功响应同时放宽电压限值到±7%k_va1.1, U∈[0.93,1.07]D传统方案按场景A配置容量额外在末端加SVG配置方式和A相同SVG容量按最大缺额配置场景D的存在是为了回答一个很现实的问题“就算逆变器能调无功我靠加装SVG不也一样”价格差异就在这体现。SVG无功补偿装置的单位造价通常是逆变器增容成本的数倍以上如果场景B在不大幅增加投资的前提下能达到和场景D接近的电压水平那“用逆变器无功响应换容量”就是划算的。5.2 收敛过程与最优配置的观察点粒子群收敛曲线建议画成“最优适应度-迭代次数”和“平均适应度-迭代次数”两条线。平均适应度下降意味着种群在整体逼近优解最优适应度平滑下降则说明没有陷入明显的早熟。我在调参时遇到过一个情况最优适应度前20代就基本不变了但平均适应度还在下降说明粒子群是在收缩而非探索这时应该增加惯性权重或变异算子。最优配置的观察重点有三个一是末端节点32号的安装容量变化这是最受无功响应影响的节点二是各候选节点的容量在总容量中的占比分配三是最终年综合费用的构成比例。在我的算例中场景B相比场景A末端节点的可接入容量提升了12%~18%年网损费用下降了5%左右整条馈线的电压曲线不再在中午贴上限运行。5.3 重要参数敏感性分析k_va和电压限值的影响敏感性分析我跑了三组参数变化。第一组看逆变器容量倍率k_va从1.0逐步升到1.3结果发现配置总容量几乎线性上升但增速在k_va达到1.2以后明显放缓。这说明容量倍率带来的边际消纳收益是递减的工程上取1.1到1.2就够了盲目放大不仅增加设备成本实际收益也有限。第二组看电压允许范围从±5%放宽到±7%配置总容量跳增约25%但这是以电压质量换取消纳空间实际工程中是否可行取决于具体规程要求不能直接照搬。第三组看负荷曲线峰值系数变化发现负荷越高时快速无功响应的边际价值越小——重负荷下电压偏低而此时光伏出力未必最大无功空间不一定宽裕需要结合具体时序来看。5.4 一个容易误导的结论无功响应不等于无上限接入必须强调一点计及快速无功响应后的配置容量并非越大越好。我试过把某末端候选节点的容量上限从1MW提到2MW结果粒子群直接把这个节点塞满但逐时刻电压检查显示部分时段电压偏移很严重。原因在于逆变器的无功能力在光照强和光照弱的时段分布很不均匀光照很强时P接近额定Q_max趋近于0如果此时恰好负荷较轻、电压上翘逆变器根本没有能力吸收足够的无功。这个瓶颈是物理性的不是模型改进能消除的。所以在实际配置中我建议对末端节点设置“有功容量上限”和“无功支撑容量上限”两个独立约束前者考虑线路热稳定后者保证末端电压浅度越限时的可校正空间。这种双上限的处理在代码里只是多两行约束的事但对结果合理性的提升很明显。6. 实操中踩过的坑与调试建议这套代码我前前后后调了一周多踩过的坑不少挑几个最有代表性的说一下。第一个坑是潮流不收敛。我最初在16号节点塞了满负荷容量的光伏前推回代法在重DG注入场景下容易出现振荡不收敛。后来排查发现原因是迭代初值给得太差。前推回代法是从末端回推功率如果初始电压设成统一额定值12.66kV在重DG场景下支路流向可能反向回推出的功率符号会乱。解决办法是把初始电压按末端普遍偏高的规律预设比如统一设1.02pu起步而不是0。这个问题特别容易出现在“光伏功率大于局部负荷”的节点调试时要重点看支路潮流方向是否正确。第二个坑是时间常数上的维度错乱。我把光伏出力曲线和负荷曲线放在不同的维度里乘结果光照曲线的峰值时刻和负荷曲线的峰值时刻对不上中午的电压偏高被“误判”成了晚上的电压偏高最优配置面目全非。建议从一开始就把t时刻的索引严格对齐并在主程序里打印一个数据自检表——光照、负荷、光伏出力、无功边界四列放在一起肉眼扫一眼逻辑对不对立刻就知道。第三个坑是PSO参数过于依赖默认值。很多现成代码把惯性权重固定成0.8学习因子固定成2看起来跑得动实际上在配置问题这种多峰函数上很容易前期收敛过快、后期卡在局部最优。我建议动态调参惯性权重从0.9递减到0.4并把最大速度限制在搜索空间宽度的20%以内。调完这两个参数同样的算例跑了五次最优结果的方差明显变小了。第四个坑是关于场景聚类的。我最初为了省时间只用了夏季一个典型日去算全部费用结果低估了冬季负荷低谷和光照时段的电压越限风险导致配置容量偏激进。后来改成三季节典型日加权结果才稳定下来。如果你的母线负荷随季节波动很大我建议至少做两个典型日夏大冬小再按天数占比加权折算全年费用。注意目标函数里的电压越限惩罚系数不能设得太小我一开始设成0.001导致粒子群完全不理会电压约束最终结果里甚至出现了大量越限的方案。后来把惩罚系数逐步调到与网损费用同一量级整条优化曲线才出现了合理的“费用-可行”博弈行为。最后再分享一个小技巧。PSO的结果每次跑会有细微差别这不是bug而是随机优化算法的本性。做研究汇报或论文插图时建议同一套参数重复跑5次取最优、最差和平均值一并列出这样才有说服力。我在代码里专门加了一个repeat_run的模式一键跑5次自动汇总结果。这套方法后续还可以往两个方向扩一是把快速无功响应特性和储能协调配置结合起来白天光伏限发时储能充电晚上放电支撑电压和无功响应形成互补二是把单场景确定性模型升级为多场景机会约束规划用概率分布描述光照不确定性让配置结果对极端气象条件不那么敏感。目前代码的模块化结构已经为这两个方向的扩展留好了接口改起来不需要大动干戈。
返回列表