
简介这份PDF是《交直流混联电力系统潮流计算与机组组合》期刊论文面向电力系统运行分析、调度优化方向的研究人员与工程师。内容围绕大规模交直流混联电网的潮流计算方法展开重点对比统一迭代法与交替迭代法的原理、优缺点及改进思路并结合机组组合问题讨论安全约束下的优化策略。文献对“西电东送”“北电南送”背景下直流系统引入带来的计算挑战剖析较细适合作为电力系统方向课程设计、毕业设计或工程分析的参考文献。资源包内含1个pdf文件大小约2.13MB内容为原版期刊排版图文清晰可直接阅读和引用。该资源已有113人学习下载属于电力技术类入门参考文档。读者可通过本文献了解交直流混联系统潮流计算的数学模型、迭代算法改进方向以及机组组合建模思路对提升相关方向的论文写作与算法设计能力有直接帮助。1. 交直流混联电力系统潮流计算与机组组合本质是在回答一个问题当直流联络线不再是固定潮流而是像火电、水电一样参与小时级调度时交流侧的潮流分布和机组启停方案该怎么跟着变。很多刚接触这个方向的工程师第一版机组组合计划都把直流功率当作固定边界来算结果调度员第二天就拿着断面越限告警来敲门。换流站闭锁以后交流侧的潮流并不会老老实实按照“少一路电源”的直觉重新分布——直流功率会沿着交流通道瞬移可能把相邻联络线直接顶到热稳定极限。这篇笔记讲两件事一是把换流器方程接进潮流计算二是把直流联络线功率从固定参数改成机组组合里的决策变量。适合正在做区域电网年度、月度方式计算或者想把手里的 UC 代码升级成交直流混联版本的人。2. 换流器建模与潮流算法为什么不能把直流站简单当成 PQ 节点2.1 两种换流器的稳态方程LCC 的触发角约束与 VSC 的调制度约束先看传统直流输电 LCC电网换相换流器。它的核心技术是晶闸管的电网换相稳态特性由直流电压方程描述。整流侧直流电压Ud Ud0 * cos(α) - (3/π) * Xc * Id逆变侧直流电压Ud Ud0 * cos(γ) (3/π) * Xc * Id其中Ud0 (3√2/π) * U_LU_L是换流变压器阀侧空载线电压有效值α是整流侧触发角γ是逆变侧关断角Xc是换相电抗Id是直流电流。这两个方程看着简单真正麻烦的是交流侧无功LCC 运行时必须吸收无功功率近似关系是Q ≈ P * tanφ而功率因数角又和Ud/Ud0直接挂钩。所以换流站不能简单当成恒功率 PQ 节点它的无功会随交流母线电压、直流电压变化。再看柔性直流 VSC电压源换流器。VSC 通过 PWM 调制直流电压近似为Ud (√3/2) * μ * M * Uacμ是直流电压利用率M是调制度。VSC 的有功和无功可以独立控制交流侧既可以当 PQ 节点设定有功和无功指令也可以当 PV 节点设定有功和电压幅值。这也是柔直工程常说“潮流计算友好”的原因。实际混联系统里 LCC 和 VSC 并存时建模方式必须分开处理。控制模式决定了方程个数和变量边界。我一般按这个表来选控制模式直流侧给定交流侧表现典型用途定电流Id_ref有功随电压波动LCC 整流侧工程主控制定功率P_ref有功恒定无功随电压变调度计划、机组组合接口定电压Ud_ref有功灵活调整LCC 逆变侧、VSC 换流站定关断角γ_ref无功特性固定LCC 逆变侧机组组合里最常用的是整流侧定功率、逆变侧定电压的组合。这样有功功率是决策变量直流电压由逆变侧约束整流侧触发角和分接头调节效果归并到Ud0_eff里处理不至于让 MIP 模型背上换流器方程的非线性负担。2.2 统一求解法与交替求解法怎么选交直流潮流计算的两条技术路线是统一求解和交替求解。统一求解把换流器方程、直流网络方程直接嵌到交流牛顿-拉夫逊法里雅可比矩阵同步扩展一次迭代同时更新交流状态量和直流状态量。好处是没有接口误差收敛后各节点功率残差一致坏处是雅可比矩阵维度变大初值给不好很容易发散尤其是有多个 LCC 换流器组成直流电网时变量之间的强耦合让程序调试很有挫败感。交替求解则把交流潮流和直流子系统分开。每一轮先用上一步的直流功率和换流器无功算交流潮流拿到交流母线电压后再解换流器和直流网络方程更新直流功率和无功然后进入下一轮直到两个子系统的接口变量变化量都小于阈值。这是工程方式计算里最常见的做法因为它能复用现有交流潮流程序直流部分独立出来也容易维护。代价是可能震荡我后面会说避坑方法。两种方法的选择没有绝对标准。如果你的目标是做 24 小时、几十个机组的机组组合MIP 本身已经够重我强烈建议用交替求解法给 UC 提供基态潮流的灵敏度信息只有你的研究对象是多端直流电网、且需要精细刻画换流站之间的耦合关系时再上统一求解法。下表是我个人的判断依据方法优点缺点适用场景统一求解无接口误差、一次收敛解耦编程复杂度高、初值敏感直流环网、多端 MMC、机电暂态研究交替求解复用交流潮流、易扩展控制逻辑可能震荡、误差受阈值控制大规模 UC、年度运行方式计算2.3 交替求解的标准流程与收敛判据交替求解每一步都有明确物理意义建议按下面这个流程走初始化所有直流联络线功率整流站按正、逆变站按负折算到交流节点的有功注入。用交流潮流程序牛顿-拉夫逊或快速分解法算出一组交流母线电压。把换流母线电压代入换流器方程求解直流电流、直流电压再算换流站无功消耗。用新潮流基波电流更新交流侧等效注入。比较同一换流母线本次和上次电压幅值差以及直流功率差都小到阈值才停。收敛判据我会卡两个量电压幅值变化量小于 1e-4 pu直流功率变化量小于 0.1 MW。只注意电压会在直流闭锁时翻车因为功率转移往往发生在电压变化不大、但线路有功大幅变化的情况下——这也是为什么机组组合一定要把 N-1 校核接在后面。3. 机组组合模型改造让直流功率从边界参数变成决策变量3.1 经典 UC 框架里的启停和爬坡约束先把传统机组组合的基本盘摆出来。每个机组g在每个时段t的启停状态用二进制变量u[g,t]描述出力用连续变量p[g,t]它们之间满足出力上下界约束u[g,t] * Pmin[g] ≤ p[g,t] ≤ u[g,t] * Pmax[g]机组不能瞬间从 0 到满发所以有爬坡约束p[g,t] - p[g,t-1] ≤ ramp_up[g]p[g,t-1] - p[g,t] ≤ ramp_down[g]再往上加最小启停时间那是整数变量的线性化写法基本每个文献都有一套标准转换我在这里不展开。功率平衡约束是所有机组出力、直流联络线功率、交流联络线交换功率加起来等于负荷sum(p[g,t]) sum(p_dc[k,t]) sum(p_ac_line[l,t]) D[t]旋转备用约束是系统内在线机组的最大出力能力要覆盖负荷加备用需求。这套框架本身不新鲜新鲜的是直流联络线功率p_dc[k,t]在传统 UC 里根本不存在它只在预先设定好的计划里作为一个常数。而混联系统的核心改造就是把p_dc[k,t]变成调度变量。3.2 直流功率与交流断面的耦合约束把直流功率变成决策变量之后第一件事是给它加传输边界Pdc_min[k] ≤ p_dc[k,t] ≤ Pdc_max[k]直流功率不是想变就变的换流器功率调整有速率限制这个速率往往由换流变压器分接头和无功控制配合的响应速度决定。所以还要加直流爬坡约束p_dc[k,t] - p_dc[k,t-1] ≤ dc_ramp_up[k]p_dc[k,t-1] - p_dc[k,t] ≤ dc_ramp_down[k]第二个必须处理的是直流输电损耗。直流线路损耗是I²R也就是有功的二次函数直接进 MIP 会让模型变成 MIQP。工程上最常见的做法是把它分段线性化或者干脆用一条固定损耗率折算比如p_dc_ac_delivered[k,t] p_dc_rectifier[k,t] * (1 - loss_rate[k])整流侧注入的量比逆变侧接收的量多一个损耗。这样既保证了功率平衡严格成立又不引入二次项。损耗率在不同功率水平下并不恒定分段线性化一般取 3 到 5 段就能满足方式计算要求。第三个容易被漏掉的是直流功率对交流断面的影响。直流功率改变后交流联络线的有功分布会跟着变这个关系可以用直流潮流模型下的 PTDF功率传输分布因子来描述flow[l,t] flow0[l] PTDF[l,k] * (p_dc[k,t] - p_dc[k,base])然后把交流线路热稳定极限的约束加在flow[l,t]上。这一步看起来简单但数据准备最费时间每一条直流联络线对每一条交流关键断面的 PTDF 都要算一遍。3.3 直流闭锁 N-1 约束的建模方式交直流混联系统最怕的事就是直流闭锁。不管是 LCC 换流阀故障还是 VSC 子模块故障直流功率瞬间跌落交流系统必须在几十秒内补齐功率缺口。调度员关心的是机组组合方案是不是在任一条直流线路故障后仍然能维持频率和断面安全。这种 N-1 约束不能靠事后校核要在优化模型里提前给约束。最直接的方式是给每个直流闭锁场景一个备用需求项sum(u[g,t] * Pmax[g]) ≥ D[t] R[t] Σ_k p_dc[k,t]_inj也就是说把任意时段可能闭锁的最大直流功率缺额当作额外备用需求。这是水利、火电、气电共同承担的本质上是把直流的安全风险转成旋转备用的价格信号——代价是模型多了一大块备用容量约束经济性会变差但这是换取 N-1 安全性的必然成本。更精细的做法是分场景讨论。假设直流线路k在时段t闭锁需要满足Σ_g ramp_support[g,t] Σ_{k≠k} p_dc_available[k,t] ≥ p_dc[k,t]每个场景对应一条直流故障然后把约束写成二进制指示的线性形式或者直接枚举所有直流闭锁场景。一般来说直流线路数量在 10 条以内时全枚举还能接受再多就要用筛选算法先找严重故障了这个放在第五章说。4. 用 Python 搭建交直流混联算例从交流节点到 MIP 求解4.1 算例数据准备交流节点、换流器和机组参数表我习惯先准备一张交流系统表格、一张换流器表格和一张机组表格三张表统一用pandas读进来。交流系统用一个小三节点等值网架母线 A 是平衡节点母线 B 和 C 是 PQ 节点直流线路从 B 到 C整流站在 B逆变站在 C。机组装在 A 和 B共三台一台大火电、一台小气电、一台水电。母线名类型基准电压 (kV)初始电压幅值 (pu)负荷 (MW)A平衡2201.00400BPQ2200.98250CPQ2200.97300换流器表格重点声明mode和初始直流功率换流站接入母线控制模式有功初值 (MW)损耗率 (pu)额定无功上限 (Mvar)整流站 1B定功率4000.02200逆变站 1C定电压-3920.00200机组表按传统 UC 数据格式给出Pmin、Pmax、爬坡率、最小启停时长。4.2 交替潮流核心代码换流器等效注入与收敛判断下面这段代码是交替求解的核心我用pandapower的dcline建直流通道再用一个外部迭代更新换流站的交流侧等效注入。先建交流网架import pandapower as pp import numpy as np # 建交流网架 net pp.create_empty_network() bA pp.create_bus(net, vn_kv220.0, nameA) bB pp.create_bus(net, vn_kv220.0, nameB) bC pp.create_bus(net, vn_kv220.0, nameC) # 交流线路参数从数据表读 pp.create_line(net, bA, bB, length_km80.0, std_typeNAYY 4*150) pp.create_line(net, bB, bC, length_km120.0, std_typeNAYY 4*150) pp.create_line(net, bA, bC, length_km100.0, std_typeNAYY 4*150) # 负荷 pp.create_load(net, bA, p_mw400.0) pp.create_load(net, bB, p_mw250.0) pp.create_load(net, bC, p_mw300.0) # 直流联络线整流站出口接B逆变站出口接C pp.create_dcline(net, from_busbB, to_busbC, p_mw400.0, loss_mw8.0, vm_pu1.0) print(net) # 检查网架是否建立正确pp.create_dcline把直流线当成功率注入元件p_mw是整流侧送出的有功loss_mw是直流线损耗。注意正方向from_bus送功率给to_bus功率为正是整流方向。潮流计算里它会在 B 母线增加一个功率注入、在 C 母线减少一个功率负荷符号反了会导致电压完全不对。但dcline的换流器模型不算精细它不会自动算 LCC 的无功消耗。所以我加了这样一段外部迭代来更新无功def lcc_ac_injection(mode, pdc, uac, k0.995): 简化LCC换流站交流侧等效注入计算。 整流站从交流系统吸收有功逆变站向交流系统注入有功。 两侧都吸收无功大小按功率因数角近似。 ud0 k * 3 * np.sqrt(2) / np.pi * uac # 理想空载直流电压近似 udc ud0 if mode rectifier else 0.92 * ud0 # 逆变侧电压略低 cos_phi udc / ud0 qdc abs(pdc) * np.sqrt(1 - cos_phi**2) / cos_phi if mode rectifier: return pdc, qdc else: return -pdc, qdc这里的k是把换流变分接头和触发角影响归并到理想空载电压里的折算系数。实际工程中k的范围大概在 0.90 到 1.00你要根据换流变压器抽头位置去校准不要照抄。算完交流潮流后把整流站和逆变站的qdc加到对应节点的无功负荷上反复迭代直到换流母线电压幅值变化小于 1e-4for it in range(50): v_b net.res_bus.at[net.bus.index[1], vm_pu] # 取母线B电压 p_rect, q_rect lcc_ac_injection(rectifier, pdc, v_b) # 把这个 q_rect 加到母线B的无功负荷 net.load.at[1, q_mw] q_rect pp.runpp(net) if np.abs(net.res_bus.at[net.bus.index[1], vm_pu] - v_b) 1e-4: breakpdc在这里还是固定 400 MW因为 UC 还没接进来。下一步把pdc变成 UC 的解。4.3 机组组合 MIP 建模用 Pyomo 定义直流功率决策变量下面用 Pyomo 写一个最小 UC 模型三台机组、24 个时段、一条直流联络线。核心是把p_dc作为连续变量放进功率平衡和备用的表达式from pyomo.environ import * model ConcreteModel() gens [G1, G2, G3] T range(24) model.u Var(gens, T, withinBinary) model.p Var(gens, T, bounds(0, None)) model.p_dc Var(T, bounds(0, 500)) # 直流联络线功率决策变量 model.reserve_mw Var(T, nonnegTrue) # 备用缺额检测变量 load {t: 800 100 * np.sin(2 * np.pi * t / 24) for t in T}功率平衡约束要明确写出直流功率在哪一侧def power_balance_rule(m, t): # 整流站吸收有功逆变站供给负荷这里统一以负荷侧可用功率表达 return sum(m.p[g, t] for g in gens) m.p_dc[t] * 0.98 load[t] model.balance Constraint(T, rulepower_balance_rule) def reserve_rule(m, t): # 备用在线机组最大出力 直流功率可用量 负荷 直流闭锁缺额 online_cap sum(m.u[g, t] * pmax[g] for g in gens) return online_cap m.p_dc[t] load[t] 0.1 * load[t] 300 model.reserve Constraint(T, rulereserve_rule)注意m.p_dc[t] * 0.98就是逆变侧实际落地的功率那 2% 是直流线损耗。备用约束里我没有笼统一刀切而是显式补了 300代表这算例里最严重的一条直流闭锁缺额。实际求解时我通常用 Gurobi 或 CBC 的 MIP 求解器。混联系统最大的坑是模型规模每加一条直流闭锁预想事故约束和二进制性能指示变量都会翻倍所以先把基础模型跑通确认机组的启停和直流功率同向变化再逐步加场景。5. 交直流混联计算中的踩坑记录现象、原因与解决办法5.1 交替潮流发散换流站无功补偿会产生迭代震荡现象很典型交替迭代到十几轮的时候换流母线电压开始在两个值之间来回跳比如 0.996 pu 和 1.004 pu交替迭代死循环最后要么发散要么撞到迭代上限。原因是我最开始把换流器无功 Q 当作“本次算出来就立刻用”的常数加到交流潮流里再解电压。LCC 的无功比有功对电压敏感得多电压一变 Q 跟着变Q 变完电压又变反馈回路没有阻尼数值上就形成了震荡。解决方法是给 Q 加阻尼最简单的做法是取本轮和上一轮的平均值参与迭代Q_new 0.5 * Q_prev 0.5 * Q_calc。我们后来把阻尼系数调成 0.6 才在含 6 个换流站的算例上稳定收敛。你也可以改走统一求解法但更早应该检查是不是 Q 计算本身的功率因数公式用错了。5.2 整流逆变符号反了同样的数据换个初值就得出两种结果现象是同一个算例把直流功率初始值从 400 MW 改成 440 MW潮流结果完全不一样甚至出现逆变站倒吸有功的荒谬结果。原因基本都指向符号约定不统一。在交直流交替迭代里整流站和逆变站对交流侧来说方向相反整流站是负荷吸收有功逆变站是电源发出有功。很多人都用“直流输电功率为正”来写交流侧注入结果整流站符号写反或者两条直流线路的方向定义不一致潮流就会在局部形成环路。解决方法是把所有换流器接口统一写成“从交流侧看向换流站的注入功率”整流站返回(P, Q)逆变站返回(-P, Q)。代码里我习惯把mode显式传进来并在输入数据表格里用醒目的列名标注正方向。5.3 MIP 求解时间爆炸直流闭锁 N-1 约束全塞进模型现象是加入直流闭锁约束以后Gurobi 的 gap 永远停在 2% 不动一跑就是三四个小时最后只能放宽 gap。原因是把每个时段、每条直流线路闭锁的组合全部展开成了显式约束。假设 24 个时段、10 条线路就是 240 个预想场景每个场景还带一串二进制指示变量模型规模和求解复杂度直接爆掉。解决方法是先用 PTDF 筛选严重故障集。我一般先把未考虑直流闭锁的 UC 结果算出来用这个基态跑所有单回直流闭锁的潮流找出哪些闭锁会造成断面越限或者备用不足只把这些场景的约束加进 MIP。这样做把场景从上百个压到两三个求解时间从几小时降到十几分钟。还要注意大 M 取值不要随便写 1e6取直流功率上限的 1.5 倍就够了大 M 太大数值稳定性会很差。5.4 LCC 换流站无功越限被忽略现象是潮流计算收敛正常但换流站交流母线电压低于 0.95 pu实际运行中已经触发无功补偿设备投切而机组组合计划里完全没有反映。原因是 LCC 换流站的无功消耗随传输功率上升而增加很多人只把有功 P 送进 UC把 Q 边界忽略了。Q 越限意味着运行点根本不可行但潮流计算不会报错只是电压低。解决方法是给每座 LCC 换流站在 UC 模型里加一个无功上限约束把换流站并联电容器、STATCOM 的容量作为边界如果容量不足要么降直流功率要么增加交流侧无功支撑机组。这一步看起来是小事但在方式计算里经常决定方案能不能过安全校核。5.5 直流闭锁校核时备用不足备用约束却显示正常现象是 N-1 校核时系统频率跌到 49.2 Hz 以下但机组组合的备用约束在全时段都满足。原因是旋转备用只覆盖了负荷预测误差没有考虑直流闭锁的功率缺额。直流闭锁是电网里功率缺额最大的单一事件常规 10% 备用完全不够。解决方法是把备用约束改成“在线机组最大出力 直流可用功率 负荷 常规备用 当前时段允许恢复的最大直流闭锁功率”。这样直流功率高的时段备用要求自动变大机组组合会提前预留在线机组容量代价是运行成本升高但这是混联系统安全性的基本门槛。6. 进阶验证用直流闭锁预想事故给机组组合结果打分跑完机组组合只是第一步真正要交给调度员之前我喜欢做一轮“机组组合结果抗扰动验证”。具体做法是把 UC 求出的直流功率解固定下来回代到完整的交直流潮流里然后逐一断开每条直流联络线重新算交流潮流检查有没有断面越限、电压跌破下限、旋转备用不足。验证流程一般是这样从 UC 结果表里提取每一时段的p_dc[k,t]和机组出力p[g,t]。把每个时段的直流功率写成交直流潮流算例的固定参数。逐个场景断开一条直流重新解潮流。记录越限断面和电压越限母线按严重度排序。这个环节我会写成脚本自动出报告重点是看直流功率峰值时段是不是正好对应备用最小的时段。如果出现“直流最满、备用最少、线路最热”三者重叠这个解基本可以判定为高风险方案我会回到 UC 模型里给相关时段加一条紧急切负荷或直流功率上限约束再重新求解。多年做下来我自己的习惯是评估指标不只算成本最低还要算“能过 N-1 校验的成本”。混联系统里直流虽然看似便宜但一旦闭锁替代成本可能远超它省下的燃料费。所以我最后都会问自己——这个方案能不能在一条直流掉了以后机动的能力还在如果不放心就回到模型把直流闭锁备用约束调得更紧。希望帮到你。本文还有配套的精品资源点击获取