ARTICLE DETAIL

资讯详情

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

交直流混合配电网统一潮流求解:VSC建模与牛顿法实现

交直流混合配电网统一潮流求解:VSC建模与牛顿法实现 做交直流混合配电网潮流计算这件事最早是给一个带直流充电桩和分布式光伏的台区做电压评估时开始的。交流侧接入好几路DC/DC之后传统纯交流潮流程序里根本没有直流节点和换流站的数学位置硬着头皮把直流功率折算成恒功率负荷算出来的电压总有偏差尤其是充电桩功率波动大时计算结果跟现场实测对不上。后来才彻底转向“交直流统一求解”的思路——把交流网络、直流网络、换流站耦合方程放在同一个方程组里用牛顿法迭代求解。这是我自己写Matlab代码完整实现过一遍的方法把这篇经验整理出来给正在做混合配电网潮流、储能接入、柔性互联台区仿真的同行参考。1. 为什么交直流混合配电网突然需要“潮流计算”了1.1 台区里的直流电正从“边缘角色”变成“主力军”传统配电网说实话是“交流的一统天下”变压器低压侧出来的就是380V交流负荷也基本都是交流负载。但这些年情况变化非常快光伏组件输出本质是直流DC/DC直接汇流到直流母线再逆变并网储能电池也是直流尤其工商业储能很多就是直流侧耦合还有直流充电桩大功率快充桩内部就是交-直-交或直-直结构如果配电网本身有直流母线充电桩可以直接挂在直流侧省掉一级变换。再加上有些地方在试点低压直流配电房直流供电给数据中心、LED照明、变频空调这类设备。这个趋势带来的直接后果是一个普通的10kV/380V台区可能同时存在交流节点常规负荷、交流分布式电源和直流节点光伏直流汇流、储能直流端口、直流负荷中间靠VSC换流站电压源型换流器连接。直流部分一旦参与功率交换再用传统交流潮流程序去算就需要把换流器端口等效成某种交流负荷或者电源但这种等效是近似的尤其在换流站控制模式是“定直流电压”时交流功率和直流电压是强耦合的近似处理很容易失真。1.2 潮流计算在混合网中的角色与难点潮流计算在配电网里的作用不用多讲规划阶段要校核电压偏移、馈线负载率运行阶段要做状态估计、电压越限预警控制策略设计时要先跑大量潮流场景。对于交直流混合配电网潮流计算要解决的核心问题有三个交流网络和直流网络的功率平衡方程必须同时满足VSC换流站作为“接口设备”其交流侧有功、无功与直流侧有功、直流电压之间有严格约束换流站本身有多种控制模式定有功、定无功、定直流电压、定交流电压等不同控制模式下未知量和方程的数量要对应上。所以我最后做的Matlab程序其实就是把这三件事统一整理成一个非线性方程组然后用牛顿-拉夫逊法求解。这个方法在专门研究柔直、混合电网的文献里通常叫“统一求解法”。2. 统一求解法与交替求解法我为什么最终选了一条“难走的路”2.1 交替求解法的常规思路和它绕不过去的坎先说说大多数参考资料里容易遇到的另一种做法——交替求解法。思路很直观先假设换流站直流侧对交流侧的注入功率已知把换流站等效成PQ节点或者PV节点跑一遍交流潮流得到交流节点电压然后根据换流站交流侧功率和直流侧方程解直流网络得到直流节点电压再用直流侧结果反过来修正换流站交流侧的注入功率重复迭代直到前后两次结果差距足够小。这个方法第一眼很友好交流潮流程序基本不用动直流网络规模不大也好解两端工程、VSC-HVDC这种“一个换流站对另一个换流站”的场景用起来问题不大。但真正放在配电网的多端混合系统里我踩到过几个明显的坑收敛性没保证。交流侧和直流侧解耦迭代本质上是在“乒乓式”地互相给边界条件。换流站控制模式复杂的时候尤其是多个换流站共享同一条直流母线一个站的直流电压控制误差会在交流、直流之间来回放大出现振荡甚至直接发散。定直流电压模式的接口处理很别扭。交流潮流里必须有一个节点吸收或吐出不平衡功率直流侧也需要一个“松弛节点”。两个松弛节点之间的物理关系完全靠换流站方程耦合交替迭代时这个耦合关系被拆成了“先给后补”一旦初值不好要迭代很多次。多控制模式切换不方便。配电网里换流站经常要在PQ模式、PV模式、定直流电压模式之间切换运行交替法每次切换都要改交流侧等效节点的类型和直流侧的松弛选择代码工程量大还容易漏改。2.2 统一求解法的本质把交流直流当成一家人统一求解法的核心思想很简单不要再去区分“先算交流、再算直流”而是把所有未知量放在一个大向量里所有方程也放在一个大方程组里一次性联立求解。换成人话就是如果你有交流节点电压幅值U、相角θ直流节点电压Udc还有换流站内部的控制变量比如换流站出口电压相角δ、调制比M那就令x [θ; U; Udc; δ; M]对应的方程组F(x) 0由三部分组成交流节点的有功、无功功率平衡方程直流节点的有功功率平衡方程换流站交流侧、直流侧的功率耦合方程与控制模式方程。然后用牛顿法统一迭代J·Δx -F(x)修正x直到范数足够小。这样做的好处非常多首先二次收敛特性是牛顿法自带的只要雅可比矩阵没错收敛速度非常快其次定直流电压节点在方程和变量上一一对应保证方程组非奇异不会出现“多一个变量少一个方程”或者反过来“少一个变量多一个方程”的尴尬最后换流站控制模式切换只需要把对应的方程替换掉结构非常清晰。2.3 控制模式复杂时的选型结论我实际跑下来在三个及以上换流站、且存在两条以上直流母线的配电网场景里统一求解法的迭代次数通常在4到7次之间牛顿法二次收敛特性决定而交替法很可能需要几十次甚至上百次接口迭代。坐标放到“带电设备的功率波动模拟”“故障后恢复场景”这种需要连续跑几百上千次潮流的场合统一求解法的鲁棒性优势是很明显的。当然统一法也不是没有代价雅可比矩阵的维度大了代码复杂度上升调试期间你会花不少时间在导数的符号上。但从工程复用角度看这一份代码写好了改控制模式、加换流站、加直流线路都很快。这也是我为什么最终放弃交替法、选择统一求解法的根本原因。3. VSC换流站稳态模型统一求解法的数学拼图3.1 换流站的等效电路与电压方程要把VSC放进潮流方程首先得确定它的稳态等效电路。工程上最常用的是基波分量模型换流站从交流侧看等效为一个与系统通过换流电抗器还有换流变压器相连的电压源电压幅值Uc、相对系统节点电压的相角差δ从直流侧看则等效为一个受控直流电源通过直流线路与其他直流节点相连。交流侧节点i连接换流站电抗器电抗器另一端的节点我们记为“换流站内部节点c”电压为Uc∠δc。取电流正方向为系统流向换流站则经过电抗Zc Rc jXc的电流可以写出i̇ (U̇_i - U̇_c) / (Rc jXc)其中U̇_i U_i∠θ_iU̇_c U_c∠θ_c。关键点这里θ_c也就是δc是换流站内部控制变量而U_c由换流站调制比等因素决定。在统一求解法里这两个量是可以当未知量直接放进x向量的。3.2 有功、无功与直流功率三组方程根据基尔霍夫关系换流站从交流系统吸收的复功率是S U̇_i · conj(i̇)展开后得到P_i -U_i·U_c·(Gc·cos(θ_i - θ_c) Bc·sin(θ_i - θ_c)) U_i²·GcQ_i -U_i·U_c·(Gc·sin(θ_i - θ_c) - Bc·cos(θ_i - θ_c)) - U_i²·Bc这里Gc Rc/(Rc² Xc²)Bc -Xc/(Rc² Xc²)。符号约定很容易搞错我一开始就用正负号问题折腾了好几天后面第六章节专门讲这个坑。直流侧换流站端口功率为P_dc U_dc · I_dc U_dc · Σ Y_dc · (U_dc - U_dc,j)也就是换流站直流端电压乘以直流端电流而直流端电流由直流网络节点方程给出。换流站本身存在损耗所以交流侧吸收的有功P_i和直流侧输出的有功P_dc之间满足P_i - P_dc - P_loss 0P_loss在精度要求不高时可以取常数或者用一个简化二次模型P_loss A B·I_c系数A、B根据换流器损耗特性拟合。3.3 控制模式如何决定方程替换策略每个VSC有交流侧两个自由度可以理解为有功类、无功类控制目标和直流侧一个自由度直流电压或直流功率所以每个换流站需要补充两个控制方程加上功率平衡方程P_i - P_dc - P_loss 0正好和未知量数量匹配。常见的控制模式组合以及方程设计如下控制模式有功类控制方程无功类控制方程说明定P-定QP_i - P_ref 0Q_i - Q_ref 0直流电压由对侧站控制本站相当于PQ节点定P-定UdcP_i - P_ref 0U_dc - U_dc_ref 0承担直流母线电压支撑相当于松弛电源定Udc-定QU_dc - U_dc_ref 0Q_i - Q_ref 0交直流双侧边界条件同时给定定P-定UacP_i - P_ref 0U_i - U_i_ref 0给交流系统提供电压支撑类似PV节点还有更复杂的下垂控制U_dc U_dc_ref - k·P_i本质也是替换有功类控制方程统一求解法里实现同样非常自然。4. Matlab代码的核心设计变量编排与雅可比矩阵扩展4.1 交直流统一变量与节点编号策略变量编排直接决定代码的复杂度和可读性。我建议不要去搞“交流块、直流块、换流站块分开存放”再手工拼接而是把所有未知量按“交流节点直流节点换流站内部节点”的顺序合并成一个列向量xx [θ_ac(2:n_ac); U_ac(pq节点的编号); U_dc(全部); θ_c(全部VSC); U_c(全部VSC)]这里有几个关键设计平衡节点交流网络保留至少一个平衡节点一般取变电站出口母线它的U和θ都不作为未知量PV节点处理配网里分布式电源很少真正控制电压所以代码里我只保留了PQ节点和平衡节点。如果非要支持PV节点记得U_ac向量里要剔除PV节点同时把它的无功限制写成不等式约束的高阶版本换流站内部节点θ_c和U_c一律作为未知量放进x不要在交流节点数组里给它们提前占位否则换流站台数和交流节点编号的关系会乱掉直流节点直流网络所有节点电压U_dc都是未知量但“定Udc控制”的换流站所连接的直流节点要单独标记因为那个节点的功率平衡方程会退化为控制方程。代码里我用结构体数组bus_ac和bus_dc来记录节点信息分别包含节点类型、功率负荷、电压初值、连接关系等换流站单独用数组vsc来表示记录交流连接节点、直流连接节点、控制模式、控制目标值、损耗系数。这样写的好处是后续扩展新的控制模式只需要在vsc结构体里加标记不用改主流程。4.2 雅可比分块结构与导数计算统一求解法最关键的部分是把雅可比矩阵搭起来。雅可比矩阵J可以理解成四类分块分块含义来源J_AA交流方程对交流变量的偏导标准牛顿法潮流雅可比H、N、M、L四块J_AD交流方程对直流电压的偏导通过换流站功率平衡方程耦合一般只在VSC连接节点非零J_DA直流方程对交流变量的偏导直流功率方程通过换流站有功/直流电流耦合项产生J_DD直流方程对直流电压的偏导直流网络导纳矩阵的组合类似交流雅可比中L块雅可比矩阵不需要“手工对所有元素求解”在Matlab里最直接的做法是对每个方程F(i)和每个未知量x(j)用数值差分计算偏导数J(i,j) (F_i(x eps·e_j) - F_i(x - eps·e_j)) / (2·eps)这里的eps取1e-6量级通过解析方法和数值方法交叉验证后再改成解析推导的导数公式计算效率会高很多。我在调试阶段靠这个方法抓出了至少两处正负号错误所以强烈建议大家先写数值雅可比、通过正确性检查后再替换成解析雅可比。4.3 迭代流程与收敛判据的实现主循环其实就是一个标准的牛顿法流程我把它整理成伪代码结构Matlab风格while iter max_iter % 由当前x计算所有功率方程误差向量F F compute_mismatch(x, bus_ac, bus_dc, vsc, Y_ac, Y_dc); % 计算雅可比矩阵数值或解析均可 J compute_jacobian(x, bus_ac, bus_dc, vsc, Y_ac, Y_dc); % 求解线性方程组得到修正量 dx -J \ F; % 更新未知量注意角度取模 x x dx; % 收敛判断既看功率误差范数也看修正量范数 if norm(dx, inf) tol_x norm(F, inf) tol_f break; end end收敛判据我习惯用双判据功率不平衡量F的无穷范数小于1e-6 p.u.同时未知量修正量dx的无穷范数小于1e-6 p.u.。单独看F有时候会遇到“假收敛”比如平衡节点附近误差很小但远端节点电压还在缓慢漂移所以两个判据同时满足才可靠。4.4 换流站方程组的组装细节换流站部分的方程和雅可比行是代码里最需要小心的位置。我建议把每个换流站相关的三到四个方程单独封装成一个函数例如vsc_power_balanceP_i - P_dc - P_loss 0vsc_control_eq1有功类控制方程vsc_control_eq2无功类或直流电压控制方程。组装F时先按交流节点顺序、直流节点顺序、换流站顺序依次放置方程组装J时每个方程对哪些变量求偏导就填入对应行列位置。用稀疏矩阵sparse存储配电网规模下性能和稳定性都不错。有一个容易被忽略的细节换流站交流侧连接节点如果是PQ节点那么这个节点本身除了负荷以外还要叠加换流站注入功率。潮流方程是“电源注入-负荷吸收”而换流站是从交流侧吸收有功P_i还是发出有功符号方向要和前面3.2节的公式完全一致。我统一约定P_i、Q_i表示换流站从交流系统吸收的功率取正如果换流站实际上是向交流系统注入功率整流转逆变工况P_i自然为负公式不需要改符号只需要在控制方程里写P_i P_refP_ref为负表示注入。5. 算例验证一个含双端VSC的33节点混合配电网5.1 测试系统改造与边界条件理论归理论最后还是要看算例。我基于经典的IEEE 33节点配电网系统做了改造原始系统是12.66 kV的纯交流辐射状网络我在节点8和节点22各接入一个VSC换流站两个换流站的直流侧通过一段直流线路连接形成双端直流系统。系统改造情况如下项目设置值交流基准电压12.66 kV基准功率10 MVAVSC1连接交流节点节点8VSC1控制模式定P 0.3 p.u.向交流侧注入定Udc 1.0 p.u.VSC2连接交流节点节点22VSC2控制模式定P -0.2 p.u.从交流侧吸收定Q 0.0 p.u.直流线路电阻0.02 p.u.换流站损耗系数A 0.01 p.u.B 0.005 p.u.收敛精度1e-6 p.u.初始值设置交流所有节点电压幅值1.0、相角0直流电压1.0换流站内部电压U_c初值1.0、相角初值0。平启动对牛顿法非常友好这个系统迭代6次收敛最终不平衡量范数在4e-10左右计算单次耗时在几十毫秒级别对于离线分析场景完全够用。5.2 潮流结果与功率平衡检查收敛后我重点检查了几类结果交流侧各节点电压幅值范围在0.95到1.04 p.u.之间没有越限越靠近馈线末端电压越低符合辐射状配电网规律直流线路两端电压分别为1.000 p.u.和0.9985 p.u.压差很小但非零正好对应直流线路上0.3 p.u.左右的有功传输功率方向从VSC1直流侧流向VSC2直流侧换流站内部节点U_c和θ_c的解在合理范围说明数学模型的解是物理可实现的。功率平衡是检验统一求解法正确性的关键。我计算的流程是VSC1从交流侧吸收P_1整流运行时为负值也就是向交流系统注入0.3 p.u.直流侧输出P_dc1差值正好等于换流站损耗P_loss1VSC2则相反从直流侧吸收功率向交流侧送出有功P_2直流侧功率P_dc2和P_2之间同样满足损耗方程。整个系统的总不平衡功率所有节点P之和、所有节点Q之和在1e-9 p.u.以下说明方程组没有“漏功率”。5.3 与交替法的收敛性实测对比为了验证统一求解法确实有优势我把同一个算例用交替法实现了一版做对比。交替法用外循环15次、内循环交流牛顿法迭代结果如下对比项统一求解法交替求解法最终收敛迭代次数6次牛顿法统一迭代15次外循环内循环未计结果一致性基准误差约2e-5 p.u.初值敏感性对平启动鲁棒直流电压初值给0.9 p.u.时直接发散实现复杂度雅可比矩阵代码复杂交流程序改动小交替法发散那次印象很深原因是VSC1定Udc的控制模式下、直流电压控制方程在接口两侧来回摆动始终无法稳定。这也验证了我前面说的统一求解法在多端、多模式场景下的鲁棒性优势不是“理论上的”而是实际算例能直接体现出来的。6. 调试交直流潮流代码时我踩过的几个坑6.1 换流站损耗项最容易被忽略的功率窟窿我第一次跑通统一求解法时功率平衡怎么都对不上。检查了半天最后发现是换流站方程里漏写了P_loss这一项。P_i - P_dc 0还是P_i - P_dc - P_loss 0在牛顿法雅可比矩阵里差一列常数偏导初看起来不会导致发散但会让收敛后的结果系统性偏离物理事实。这类问题排查起来有个很实用的技巧计算所有节点有功之和、所有节点无功之和。如果收敛后全网有功总和不等于0在平衡节点已经计入的情况下说明某个连接环节漏了功率如果等于0但你想让换流站损耗等于某个已知值那就反推看看损耗是不是被错误地归到别的节点上了。6.2 雅可比符号错误导致的“振荡爆炸”统一求解法最容易出的问题就是符号错误。最典型的是直流方程对直流电压的偏导以及换流站交流功率方程对θ_c、U_c的偏导。我总结的排查方法论是先写数值雅可比再写解析雅可比两者对比。% 数值求导eps取1e-6 J_num(:, j) (F(x eps * e_j) - F(x - eps * e_j)) / (2 * eps); % 解析求导手动推导或符号工具生成 J_ana build_jacobian_analytic(x, ...); % 对比允许tol 1e-5的相对误差 err max(max(abs(J_num - J_ana)));一旦发现哪一行哪一列对不上就直接锁定到某个方程和某个变量的导数组合再打开公式仔细推导。这个步骤虽然烦但比盯着F向量看半天管用得多。我出现过一次极其隐蔽的问题换流站内部节点电压初值设为0时Gc、Bc的计算结果本身是对的但0.0电压会让某些偏导项退化为零导致雅可比矩阵奇异把初值改为1.0后立即恢复正常。这类“初值导致雅可比奇异”的问题在配网电抗较大时特别容易遇到。6.3 标幺值 vs 有名值数量级差异带来的病态问题如果直接用有名值计算交流节点电压是10kV级、相角是0.001级弧度、直流电压是kV级、换流站内部变量又混合了幅值和角度雅可比矩阵的元素数量级会差出七八个数量级。此时直接求解线性方程组J·dx -F会引入严重的数值误差甚至出现“迭代几次就不动了”的假收敛。解决方法是全网标幺化交流功率基准S_base取10 MVA电压基准U_base取线电压12.66 kV或相电压但和导纳矩阵基准要一致直流网络同样按同一个S_base和直流电压基准标幺化。做完标幺化后所有变量正常范围都在0.5到1.2之间迭代稳定性立刻好起来。6.4 初值设定直流电压不是随便给一个数就行平启动对纯交流配电网通常很友好但对交直流混合系统直流电压初值如果给得太离谱例如0.5 p.u.换流站控制方程里定直流电压那一行会严重偏离零点牛顿法可能越过收敛域直接发散。我推荐的经验值交流节点电压初值1.0∠0° p.u.直流节点电压初值所有直流节点统一给1.0 p.u.换流站内部电压U_c初值1.0 p.u.相角θ_c初值0°。如果直流线路较长、线路电阻大直流电压降本身就不小初值给1.0完全没有问题因为牛顿法在迭代过程中会自己修正到真实值“怕初值不够准”而随意给个离谱的值反而最容易翻车。所谓调参这件事本质就是梳理“哪些量是方程说了算、哪些量是控制目标说了算”。统一求解法把这种关系用方程组表达得清清楚楚只要别在符号、初值、单位这三个地方偷懒稳定跑通是迟早的事。我后来在这个框架上继续加了储能换流站的下垂控制、直流负荷的恒功率模型改起来都只是新增几个方程和对应的雅可比行块没有再动过主迭代结构——这也是统一求解法真正值钱的地方。
返回列表