1. 从一条直流线路说起:交直流潮流的模型基础
拿到“交直流输电网潮流计算”这个题目,很多人的第一反应是:把直流线路等效成恒功率负荷或者恒功率电源,塞进已有交流潮流程序里跑一遍不就行了?如果只是课程设计或者简单预研,这种近似确实能交差。但真正面对一条几百千伏的高压直流输电线路时,整流站和逆变站的控制方式、换相重叠角、直流线路电阻压降、换流变压器分接头位置,这些因素全都与交流侧母线电压相互耦合。我在实际项目里踩过不少坑,也把统一法和交替法分别编码验证过,这篇就顺着工程实现的过程,把两类方法的原理、矩阵组装、迭代细节以及收敛性调优一次说透。
1.1 换流器准稳态模型:工程上唯一实用的简化
直流输电系统的核心元件是换流器。工程潮流计算中普遍采用准稳态模型,也就是忽略换流器内部的暂态过程,只保留基波分量和直流分量之间的关系。以6脉动换流桥为例,三个基本方程是绕不开的。
理想空载直流电压由换流变压器阀侧交流线电压决定:
V_do = (3√2 / π) · E_ac
其中E_ac是换流变压器阀侧空载线电压的有效值。实际运行中,晶闸管触发角不是零,换相过程还会造成等效压降,所以整流侧实际直流电压为:
V_dr = V_do · cosα − R_c · I_d
逆变侧同样满足结构相同的方程,只是把触发角换成关断角:
V_di = V_do · cosγ − R_c · I_d
这里的R_c不是真实电阻,而是换相电抗的等效电阻,数值上等于3X_c/π,X_c是换流变压器的漏抗折算到阀侧的值。直流线路本身还要满足欧姆定律:
V_dr = V_di + R_d · I_d
这四个方程放在一起,基本上就构成了单端直流系统的准稳态模型。一个很容易被初学者忽略的地方是:V_do并不是固定值,它与换流变压器阀侧电压成正比,而阀侧电压跟着交流母线电压和变压器变比变化。在交替法里,交流潮流每更新一次母线电压,V_do就必须重新计算,这个耦合关系就是交直流潮流的核心难点。
1.2 控制方式:决定方程数量和边界条件的关键
直流系统不能像普通交流电源那样随便给定有功和无功,它必须通过控制方式来确定运行点。最常见的控制组合有三种:
- 整流侧定电流控制,逆变侧定关断角控制。这是最经典的两端直流配置,整流器维持直流电流恒定,逆变器维持关断角恒定。
- 整流侧定功率控制,逆变侧定电压控制。多端直流和柔性直流里更常见。
- 两端都定电压或都定电流的不常见组合,主要用于特殊工况分析。
每一种控制方式都会给方程组增加一个约束方程。比如整流侧定电流,就增加“I_d − I_spec = 0”;逆变侧定关断角,就增加“γ − γ_spec = 0”。控制方式的选择直接影响统一法的变量选取和交替法的迭代方向,这一点在下一节会展开讲。
我个人的经验是,动手写代码之前一定要先把换流站的控制方式列成一张表,明确哪个站定什么量,再确认待求变量个数是否等于方程个数。否则矩阵组装到一半发现秩亏缺,排查起来非常痛苦。
2. 统一法:把交直流方程塞进一个雅各比矩阵
2.1 核心思路:不再区分交流变量和直流变量
统一法的出发点是:把交流系统的潮流方程和直流系统的稳态方程视为一组联立方程,所有变量一起参与牛顿-拉夫逊迭代。对经典牛顿法来说,修正方程的形式是:
[ΔP_ac] [H N B] [Δθ_ac] [ΔQ_ac] = [J L C] [ΔV_ac] [ΔR_dc] [D E F] [ΔX_dc]
其中ΔP_ac和ΔQ_ac是交流节点的有功、无功不平衡量,ΔR_dc是直流系统方程残差,Δθ_ac、ΔV_ac是交流电压幅值和相角的修正量,ΔX_dc是直流变量修正量。这里的关键在于,扩展矩阵的右下角出现了F块,它由直流方程对直流变量的偏导构成;右上角B块和左下角D块、E块则反映了交流与直流之间的耦合偏导。
实际编写代码时,变量选取有相当大的自由度。我比较习惯的选法是把整流侧触发角α_r、逆变侧关断角γ_i和直流电流I_d选为直流独立变量,而V_dr、V_di不单独作为未知量,而是在残差计算时通过方程临时求出来。这样一来,牛顿迭代的未知量就是:
ΔX = [Δθ_ac¹, Δθ_ac², …, ΔV_ac¹, ΔV_ac², …, Δα_r, Δγ_i, ΔI_d]ᵀ
直流残差方程包括整流器电压方程、逆变器电压方程、直流线路方程和各控制方程。控制方程根据控制方式不同而不同,定电流控制的残差就是I_d减去给定值。
2.2 扩展雅各比矩阵里的偏导怎么算
统一法最大的门槛是偏导数的计算。交流侧对θ和V的偏导与普通交流潮流完全一致,可以直接复用。麻烦的是两类交叉偏导。
第一类是交流方程对直流变量的偏导。换流站接入交流节点时,该节点的注入功率包含直流部分的P_dc和Q_dc。以整流站为例,P_dc = V_dr · I_d,而V_dr又依赖α_r和I_d,所以∂P_dc/∂α_r需要通过链式法则求取。换流器方程本身有闭式表达式,求导不困难,但手工推导容易漏项。我自己的做法是先写出完整表达式,再用符号计算工具验证一遍,确认无误后再固化到代码里。
第二类是直流方程对交流变量的偏导。核心耦合点是V_do随交流母线电压变化,即V_do = k_t · V_ac,其中k_t是换流变压器变比相关的系数。于是直流方程中所有包含V_do的项都对V_ac有偏导。这部分偏导如果不写到矩阵里,牛顿迭代的收敛性会下降一个档次,甚至在重负荷条件下直接发散。
2.3 统一法的程序实现要点
统一法的程序结构反而比想象中简单,因为它本质上就是“一个大矩阵求解”。关键步骤只有四步:
第一步,组装交流节点功率不平衡量,这部分和常规潮流一模一样。
第二步,组装直流残差向量。按顺序扫描每个换流站,计算V_dr、V_di、I_d,把残差填入对应位置。
第三步,计算扩展雅各比矩阵。交流块直接复用,交叉偏导单独写函数。
第四步,求解线性方程组,更新所有变量,检查收敛。收敛判据建议同时看交流不平衡量和直流残差的最大绝对值,别只盯一个。
这里的性能瓶颈在线性方程组的求解。交直流混联系统的雅各比矩阵往往是一个大规模稀疏矩阵,直接用稠密消元在几百个节点时就已经很吃力。工程实现中建议用稀疏存储加KLU或UMFPACK这类求解器,不要自己写稠密高斯消元。一个200节点系统,稠密矩阵的内存开销大概是200×200×8字节等于320K,看起来不大,但每轮迭代要冒多次O(n³)的运算,速度会明显拖后腿。换成稀疏格式后,实际填充量可能只有1%左右,差距不是一星半点。
3. 交替法:隔离复杂度,复用成熟的交流程序
3.1 核心思路:你算你的,我算我的,两边对账
交替法在工程界更受青睐,原因是它的模块化思路非常符合人的直觉:交流系统交给交流潮流求解器,直流系统单独维护一套小规模的求解器,两者之间通过换流站节点的等效注入功率来传递信息。每次外迭代里,先根据当前交流电压求解直流系统,把直流状态换算成交流侧的注入功率,再带着新的注入功率去跑交流潮流,如此往复,直到两边都收敛。
对已经有成熟交流潮流程序的组织来说,交替法几乎是零成本的扩展。不需要动交流核心代码,只增加一个直流模块和一层外循环。这也是我最早在项目里选交替法的主要原因。
3.2 直流等效注入功率的计算
交替法的核心数值转换是把直流方程的解折算成交流侧的P和Q。整流站和逆变站的折算方向不同,很多新手在这里搞错正负号。
整流站从交流系统吸收有功:
P_ac,r = V_dr · I_d
同时整流站吸收无功:
Q_ac,r = P_ac,r · tanφ_r
其中tanφ_r可以通过电压关系近似计算:
cosφ_r ≈ V_dr / V_do
逆变站向交流系统输出有功:
P_ac,i = −V_di · I_d
但逆变站也需要从交流系统吸收无功:
Q_ac,i = −|P_ac,i| · tanφ_i
交流潮流程序处理这些注入时,只需在换流站节点上把P和Q作为固定注入量处理。注意整流站和逆变站的Q都是“吸收”方向,所以在交流系统里看到的效果是这两个节点比普通负荷更容易电压偏低,这是直流输电影响交流电压稳定性的最直接体现。
3.3 完整迭代流程与收敛判据
交替法的外循环流程可以这样描述:
第一步,初始化交流母线电压,通常取交流潮流初值,比如全系统1.0标幺电压和零相角。
第二步,根据当前交流母线电压计算各换流站的V_do,更新直流系统的输入参数。
第三步,用牛顿法求解直流系统方程,得到α_r、γ_i、I_d和V_dr、V_di。
第四步,计算各换流站对交流系统的注入功率P_ac和Q_ac。
第五步,调用交流潮流求解器,得到新的母线电压和相角。
第六步,检查收敛条件。条件包括:交流不平衡量小于容差,同时直流变量(比如I_d和触发角)前后两次外迭代的差值小于容差。
第七步,若不收敛,回到第二步继续循环。
这个流程看起来很简单,但真正跑起来以后会发现,收敛速度和直流系统的控制方式、交流系统强度有强烈的依赖关系。整流侧定电流、逆变侧定关断角的传统两端直流,通常3到5次外迭代就能收敛。如果换成定功率控制,外迭代次数往往会翻倍。
3.4 收敛性隐患:强耦合下的振荡问题
交替法最典型的失败模式是外循环振荡。原因也不难理解:直流注入功率P和Q依赖于交流母线电压,而交流母线电压又反过来由P和Q决定。当交流系统比较强(短路容量大)时,这种反馈环比较稳定;当交流系统很弱,或者直流输电容量占系统比例很高时,反馈环可能出现正反馈,导致电压和注入功率交替震荡。
处理这个问题的标准手段是引入松弛因子或低通滤波。具体做法是,算完直流系统后,不直接用本次的注入功率,而是取本次和上次注入的加权平均:
P_new = λ · P_current + (1 − λ) · P_old
λ的取值范围通常在0.3到0.7之间,我通常在0.5起步,震荡明显就调小。
另外还有一个容易被忽视的细节:交流潮流求解器本身的内迭代收敛容差要设置得比外循环更严格。如果外循环收敛判据设为1E-4,交流内迭代最好收敛到1E-6,否则外循环可能迟迟无法收敛。这个道理就跟舍入误差累积一样,每一层迭代都要给下一层流出足够的精度余地。
4. 统一法与交替法的实战对比
4.1 收敛性对比
抛开理论,直接看数值表现。我在一个包含3条直流线路的39节点测试系统上分别实现了统一法和交替法,有几点观察值得写下来。
统一法从平坦启动(所有母线电压1.0,相角0)开始,通常6到8次牛顿迭代就收敛到1E-8,几乎不依赖直流系统的初值。但它的迭代次数会随系统重负荷程度增加而明显恶化,特别是某些母线电压低于0.9时,同一个初值下可能直接发散。这本质上是牛顿法的固有特性,与是否包含直流系统无关。
交替法在同样算例下,内循环交流潮流每轮4到5次迭代,外循环4到10次,总计算量通常比统一法高50%到100%。不过在系统负荷较轻、直流耦合较弱时,交替法的总耗时反而可能更低,因为交流内迭代次数少,而且直流子问题规模很小,单次求解几乎不消耗时间。
一个有意思的对比结果是:统一法对“不可行运行点”更敏感。当直流控制目标无法满足时(比如定电流值过大,导致逆变侧触发角越过最小关断角限制),统一法表现为雅各比矩阵奇异或迭代不收敛,但现象不明显,需要仔细看残差才能定位。交替法则不同,外循环中直流子问题会直接报错,错误信息更明确,这对工程调试反而是个优势。
4.2 开发成本与可维护性对比
统一法的开发成本明显更高。最大开销在于扩展雅各比矩阵的交叉偏导计算。每增加一种控制方式,就要推导一组新的偏导公式并编码验证。交替法没有这个烦恼,直流模块是独立的,交流模块完全复用,新增控制方式只需要修改直流子系统的方程,不影响交流部分。
存储和计算资源方面,统一法的扩展矩阵维数等于交流节点数乘以2再减去交流参考节点数,然后加上直流变量个数。以一个交流节点数N=500、直流变量数M=10的系统为例,统一法矩阵维数约1010,交替法的交流矩阵维数约1000。差别看似不大,但统一法的交叉块引入了额外的非零元素,稀疏度会下降一些,因子分解的计算量增长不能忽略。
4.3 选型建议
如果只做工程评估,或者交流系统比较强、直流容量占比较低,我建议直接选交替法,开发速度快,维护成本低,出错也容易定位。如果做研究课题,或者系统是弱交流系统、多端直流、含柔性直流的多点馈入结构,就值得投钱做统一法。现在很多商业软件内核同时提供两种方法,但是它们的底层实现和适用范围都有明确边界,使用时务必看清楚文档里的说明。
多端直流场景里,交替法有一个天然劣势:多个换流站之间的功率分配由直流网络决定,而直流网络方程和每个换流站的注入功率强耦合,外循环很容易出现“牵一发动全身”的震荡。统一法把整个直流网络方程一起求解,自然避免了这个问题。柔性直流(VSC-HVDC)因为可以独立控制有功和无功,情况稍有不同,我后面单开一段说。
5. 最优因子法:给交直流潮流装一个收敛加速器
5.1 最优因子法到底在优化什么
潮流计算里最常见的发散场景不是方程写错了,而是迭代初值太差,导致牛顿法的修正量过大,一步就把迭代点推到了方程的定义域之外。这在交直流潮流里更明显,因为直流方程里含有cosα、cosγ这类三角函数,α或γ一旦越界,残差会变得非常离谱。
最优因子法(也叫最优乘子法)的思路很简单:牛顿法算出的方向Δx通常是对的,但步长不一定非得是1。我们把每一步迭代改写为:
x_k+1 = x_k + μ_k · Δx_k
其中μ_k称为最优因子。与传统牛顿法固定μ=1相比,这一步的改动很小,却能显著改善收敛鲁棒性。事实上,普通潮流计算里很多发散现象并不是方向错,而是步子迈得太大,最优因子法就是专门解决这个问题的。
5.2 最优因子的求取方法
求μ_k有一个非常经典的目标函数。定义潮流方程的全残差为F(x),构造如下一元函数:
G(μ) = 0.5 · Σ_i [ f_i(x_k + μ · Δx_k) ]²
目标就是在修正方向上找一个μ,让G(μ)最小。把f_i在x_k处泰勒展开到二阶:
f_i(x_k + μ · Δx_k) ≈ a_i + b_i · μ + c_i · μ²
其中:
a_i = f_i(x_k) b_i = J_i(x_k) · Δx_k c_i = 0.5 · Δx_kᵀ · H_i(x_k) · Δx_k
H_i是第i个方程的海森矩阵。带入G(μ)并对μ求导,得到一个关于μ的三次方程。实际实现时,并不需要精确求这个三次方程的所有根,只取0到2之间使G(μ)最小的那个实根即可。程序上可以用抛物线插值或者牛顿法快速迭代求解。
工程上有一种更粗糙的近似做法是只保留一阶项,即令c_i=0,此时G(μ)是关于μ的二次函数,解析解为:
μ = − Σ(a_i · b_i) / Σ(b_i²)
这个近似的计算量微乎其微,在某些场景下已经够用。但从我的测试来看,保留二阶项的“完整版”在交直流潮流里效果明显好于一阶近似,尤其当残差曲面比较陡峭时,一阶近似给出的步长仍然偏大。
5.3 在交直流潮流中的实践
最优因子法可以直接嵌入统一法或交替法的交流牛顿迭代内部。实现时只需要在每次求出Δx之后,多做一个函数调用,计算μ_opt,然后用μ_opt替换1.0更新变量。开销是一次额外的残差计算和少量向量内积,相比雅各比矩阵填充和因子分解,几乎可以忽略。
我在交替法外循环振荡的算例里做过对比:不加速情况下外循环迭代12次还在震荡;在交流内迭代里加入最优因子法后,交流内迭代有时会多花1次,但外循环收敛到稳定点的次数降到了5次,总耗时反而下降。最直接的价值体现在重负荷场景,国网和南网的实际工程中很多节点电压接近临界值,没有最优因子法保护的牛顿迭代动不动就在修正量上“翻车”,加了之后至少不再轻易发散。
另一个值得推荐的做法是把最优因子法用于“预测-校正”流程。交替法外循环收敛前,每轮换流站的注入功率变化很大,如果直接把交流潮流解到很严格精度,是一种浪费。更聪明的做法是先用最优因子法配合宽松容差跑出粗略解,再用全步长牛顿法进行最终精确收敛。在交直流互供比接近1:1的极端场景里,这套组合策略能显著减少无效迭代。
6. 工程实现中的常见问题与排查
6.1 直流方程无解或不可行
实际中经常会遇到直流子问题报无解的现象。最常见的原因是整流侧定电流值设置过大,导致逆变侧关断角逼近甚至小于最小关断角限制。准稳态方程在物理上给出了一个最大传输功率点,一旦超过,方程本身仍然可能有数学解,但cosγ会大于1或者γ变成负值,显然不满足物理约束。
排查时先把直流子问题单独拎出来,固定交流电压,用φ-试探法或者曲线扫描画出V_dr-I_d曲线,看看目标工作点是否落在可行域内。更系统的做法是在直流求解器里加入不等式约束检查,每次迭代后检查cosα和cosγ的取值,超出范围就报错并给出建议的调整方向。这条建议项目实战里救了我很多次。
6.2 交替法外循环震荡
外循环震荡的表现是I_d或者P_dc在两个值之间来回跳,交流电压也呈周期性波动。处理优先级依次是:
先检查收敛容差和滤波系数。把λ从1.0改到0.5,往往立竿见影。其次检查直流控制方式是否正确。我遇到过逆变侧本来是定电压控制,代码里写成了定电流控制,导致直流系统产生了不存在的负阻尼。最后检查交流系统的短路比,如果换流站接入点的短路比低于3,就需要认真考虑加装无功补偿装置或者调整直流运行点了。
6.3 初值选取的学问
统一法对初值非常敏感。我的建议是不管系统多大,都先用直流参数设计值做一次“冷启动试探”:给定α=15°、γ=18°、I_d=0.5倍额定值,求解直流方程得到初始V_dr和V_di,再回代得到交流注入功率,用交流潮流算出的电压作为迭代初值。这个两步启动法几乎不会失败。
交替法的初值敏感性相对低,但有一点要特别注意:直流系统初值必须与控制方式一致。定功率控制时,初值I_d应该按照P_spec/V_dr估算,而不是随意填一个额定值。
6.4 代码实现里的几个隐藏坑
换流站节点编号的排序会影响稀疏矩阵的填充顺序,但对行列式的数值精度影响不大。真正的坑是单位制。直流方程里如果用有名值,V_dr是kV级、I_d是kA级、R_c是Ω级,三者相乘得到MW级,量级差异尚可。但进入雅各比矩阵后,不同变量的量级差异可能造成矩阵病态。建议全部换成标幺值,基准功率取100MVA或系统基准,交流电压基准取母线额定电压,直流电压基准取额定直流电压,电流基准由功率基值和电压基值推导。标幺值处理之后,矩阵条件数普遍能改善一个数量级。
另一个坑是换流变压器的分接头调节。部分工程潮流计算会考虑分接头自动调压,这相当于增加了一个离散调节变量。统一法处理起来比较麻烦,因为离散变量破坏连续可微性;交替法可以通过外循环嵌套分接头迭代来处理。如果初期实现不考虑分接头,务必在文档里写明假设,避免后续误用。
对于柔性直流(VSC-HVDC)的部分,我忍不住多说几句。VSC换流站的有功和无功可以独立控制,其准稳态方程与LCC完全不同,更接近交流源模型。目前工程实践中,VSC-HVDC的潮流计算普遍采用交替法,把VSC站处理成可控PV或PQ节点,控制目标直接嵌入交流潮流,效果很好。统一法处理VSC时,交叉偏导的推导会更复杂,但优势在于能统一协调多个VSC之间的直流网络耦合。对规划阶段的交直流混合电网,如果有两个以上VSC站,我会毫不犹豫地选择统一法。
最后再分享一个实际调试心得。我建议在任何交直流潮流程序里都加一个“诊断模式”,每一轮迭代结束后把最大的5个残差对应的方程编号、变量名和数值输出到日志。这个功能花费不到半天时间,却能极大缩短定位问题的周期。我的经验是,90%的“不收敛”其实是方程编号错位、正负号反了或者控制方式写错,诊断模式一眼就能看出来。
另一个值得养成的习惯是拿标准算例验证程序。IEEE 14节点系统加一条单极直流线路是验证统一法最经典的组合。把直流功率设为零,交直流潮流结果应当与纯交流潮流完全一致;设置一个已知直流功率,手动算一遍整流器和逆变器四个基本方程,比对P_dr、P_di、V_dr、V_di的数值。这两步全过了,程序再拿去跑大系统才靠谱。