配电网工程师都有个共同感受:输电网那套"三相对称、单相计算"的思路,拿到台区现场基本不好使。随便找个负荷高峰的台区测一下,A相电流90安、B相70安、C相45安是很常见的状态,零线电流甚至能到十几安,电压不平衡度超过5%也不稀奇。这时候如果还硬套传统的三相平衡潮流模型,算出来的母线电压、线损分布和实际差得不是一星半点。所以要认真做配电网的三相不平衡潮流计算,就得老老实实把三相模型搭起来,用前推回代法这类适合辐射状配网的迭代格式,把线路的互阻抗和相间耦合全部装进去。
这篇文章就从工程实操的角度,把一套基于Matlab的三相不平衡潮流计算程序从头到尾拆开讲:为什么配电网潮流必须用三相模型,前推回代法为什么是首选,互阻抗在三相模型里扮演什么角色,以及程序的数据结构、迭代流程、调试经验和常见坑。内容适合搞配电网规划、运行分析、新能源并网评估的工程师,也适合正在做相关课题的研究生——你拿到这套思路,改一改数据就能跑自己的算例。
1. 为什么配电网潮流要单独做三相模型
1.1 三相不平衡是配电网的常态,不是例外
很多人学电力系统时,习惯了把三相系统当作对称分量处理,单相计算、三相对称拓展。这个思路在输电网大体成立,因为输电线路经过换位、负荷基本均衡、变压器也做了各种措施,运行状态接近对称。但配电网完全不同。
配电网直接面对终端用户,大量的单相负荷、两相负荷随机分布在各条馈线和各个台区。今天这个商铺只装A相接空调,明天那个住户只在B相用电热水器,再加上单相分布式光伏在用户侧"想装哪相装哪相",三相电流自然严重不对称。这种情况下,配电网的三相潮流计算把三相分别建模是本质需求:三相分别计算各自的电流、电压、功率和损耗,而不是用一相代表三相。
如果用平衡潮流去算不平衡网络,会造成两个很严重的偏差。第一,中性点会发生偏移,各相电压不再是标准的三相对称关系,平衡潮流根本反映不了这种偏移;第二,线路的零序回路和相间耦合带来的附加损耗、电压畸变统统被忽略,结果就是工程上"算出来挺正常,现场却频频报低电压"。所以在这个领域,三相不平衡潮流的建模不是可选项,是必须项。
1.2 前推回代法为什么是配电网潮流计算的首选
配电网一个典型的拓扑特征是辐射状:从变电站(根节点)出发,一路分级馈出,每个节点只有一个父节点,没有环网。这种树状结构和输电网常见的环网结构完全不同,因此计算方法的选取也要换思路。
输电网常用的牛顿-拉夫逊法,靠的是迭代求解雅可比矩阵,每次迭代都要重新形成和分解一个大矩阵,对初值也比较敏感,遇到放射状网加大量低电导支路,收敛性并不好。而前推回代法(backward/forward sweep method)天然利用了配电网的辐射树结构,整个计算过程只有三步:回代计算电流、前推更新电压、判断收敛。每一步只有简单的复数乘加运算,不需要形成雅可比矩阵,内存占用小,计算复杂度基本是线性的 O(N),几十个节点的网络一般十几步就能迭代收敛。
前推回代法在中压和低压配电网分析里几乎成了标配方法,一个重要原因是它对"单相、两相、三相混合建模"特别友好。只要把每个节点的电压、每条支路的电流都扩展成三相向量,前推回代的迭代框架完全不用改动,变的只是节点注入电流的计算和支路阻抗矩阵的乘法。这一点在我看来是它相对其他配电网潮流算法的最大优势:模型扩展灵活,代码可维护性强。
实际工程中常见的做法是电流型的前推回代:回代阶段从末端节点向根节点逐级累加支路电流,前推阶段从根节点向末端节点逐级更新三相电压。这样处理三相互阻抗矩阵时非常自然,因为电压降公式直接就是 Zabc 乘以电流向量。后面程序实现部分都是按这个形式展开。
1.3 互阻抗与相间耦合:忽略它等于丢掉物理模型的一半
三相线路的等效模型不是三个独立回路的简单并列。A相导线中流过的电流,不仅在自己回路中产生电压降,还会通过空间电磁耦合在B相、C相导线上产生感应压降,这就是互阻抗。架空线和电缆的相间距离越近,互阻抗的影响越明显;地中电流回路、大地回线参数也都会反映在阻抗矩阵的非对角元素里。
用公式看得更清楚。三相支路电压降可以写成:
ΔVa = Zaa×Ia + Zab×Ib + Zac×Ic ΔVb = Zba×Ia + Zbb×Ib + Zbc×Ic ΔVc = Zca×Ia + Zcb×Ib + Zcc×Ic
如果忽略互阻抗,就是把 Zab、Zac、Zbc 这些非对角元素全部置零,三相问题直接退化成三个独立的单相问题。这样做的误差在负荷严重不平衡时非常可观。三相不平衡的时候,各相电流的幅值和相位差距很大,互阻抗项 'Zab×Ib + Zac×Ic' 对各相电压降的修正作用各不相同,可能压低一相、抬高另一相,也可能改变电压相位。只有把互阻抗放进模型,才能真正算出各相电压的不平衡程度,以及与实测电压分布的差距。
我见过不少初学配电网潮流的人,查了手册拿到了完整的 Zabc 阻抗矩阵,但为了"简化计算"只取了对角元素。结果的电压不平衡度往往偏大或偏小,和现场实测对不上,然后又反过来质疑程序有问题。其实问题出在物理模型上:互阻抗不是锦上添花的精度优化,而是三相不平衡模型的核心组成部分。
2. 三相不平衡模型的核心构建
2.1 三相线路阻抗矩阵:自阻抗与互阻抗
在三相模型中,一条支路的串联阻抗用一个 3×3 的复数矩阵来描述,通常记为 Zabc:
- 对角元素 Zaa、Zbb、Zcc 是各相导线的自阻抗,包含导线自身的电阻、内电感以及大地回路的等效阻抗。
- 非对角元素 Zab、Zbc、Zac 是相间互阻抗,来源于相导线之间的电磁感应,数值大小取决于导线间的几何距离和频率。
工程上获取这个矩阵有几种途径。架空线路可以用经典的 Carson 公式(或简化的近似公式)根据导线型号、间距、对地高度计算出来;电缆线路通常由厂家提供一定频率下的阻抗参数;很多电力系统分析软件和数据手册也会直接给出单位长度的 Zabc 矩阵。
在Matlab程序里,我们常用的做法是把Zabc作为复数矩阵直接输入,在标幺值系统下参与计算。比如一条长度 L 公里的线路,如果单位长度阻抗矩阵是 Z_per_km,则这条支路的串联阻抗矩阵 Z = L × Z_per_km,再除以基准阻抗 Zbase 完成标幺化。需要注意,这里的 Z 是对称矩阵(Zab = Zba),但程序里不要做对称假设,因为遇到三绕组变压器、特殊换位等情况,实际矩阵不一定严格对称,按通用形式处理更稳妥。
2.2 负荷模型怎么转成注入电流
三相潮流中最常用的负荷模型是恒功率,也就是视在功率不随电压变化。在每一轮迭代中,已知当前节点电压向量 V = [Va; Vb; Vc] 和负荷复功率 S = [Sa; Sb; Sc],负荷吸收的三相电流为:
Ia = conj(Sa / Va),Ib = conj(Sb / Vb),Ic = conj(Sc / Vc)
这个公式看起来简单,但实际编程时有两个容易踩的坑。第一个坑是零负荷相除零问题,某相没有负荷时 Sa=0,电流应该直接置0,不能去算 conj(0/V),有些情况写代码不留意会把 NaN 带进去。第二个坑是相序和复数的方向,Matlab里复数单位写 1i 还是 i 不会错,但一定要保证所有阻抗矩阵和电压相角都遵循同一个 A→B→C 相序约定,否则结果会出现奇怪的相位反转。
除了恒功率,还常见恒阻抗和恒电流模型。恒阻抗负荷直接把负荷转成导纳:Y = conj(S) / |V|^2,再算电流 I = Y×V。恒电流模型则是保持注入电流幅值不变,角度跟随电压相位变化。实际配电网中最常用的是恒功率,因为空调、电机、变频设备大多是恒功率特性,但台区里也有不少恒阻抗特性的设备,比如电热类负荷。更精细的分析会用ZIP多项式把三类模型组合起来,这里不展开,程序框架只要把"计算节点注入电流"封装成独立函数,换负荷模型时改一处就行。
2.3 四线系统怎么处理:Kron化简
低压配电台区大多是三相四线制,有中性线(N线)回路。完整的四线模型需要建立 4×4 的阻抗矩阵 Zabc_n,把三根相线和中性线都包含在内,然后再通过中性线电压为零的实际约束,把中性线化简掉,得到等效的三相 3×3 阻抗矩阵。这个过程叫 Kron 化简:
Zabc = Zabc_n(1:3,1:3) - Zabc_n(1:3,4) × [Zabc_n(4,4)]^(-1) × Zabc_n(4,1:3)
化简后的矩阵尺寸虽然是3×3,但它已经把中性线和零序回路的影响折算进来了。这样程序只需要处理三相量,却仍然保留了四线制系统的零序路径信息。
做台区仿真的时候,如果你手里拿的是完整的四线阻抗参数,强烈建议先用Kron化简转成3×3矩阵再进程序,而不是直接丢一个4×4矩阵进去。一方面代码复杂度会成倍增加,另一方面很多前推回代算法在四线模型下需要处理中性点电压这个额外未知量,收敛性也会变差。相反的,如果你拿到的是线路实测阻抗,往往是已经化简过的3×3数据,直接使用即可。
3. Matlab程序的完整实现
3.1 数据组织:节点表、支路阻抗、树结构
写程序的第一步是定义输入数据结构。这是一套三相不平衡潮流的Matlab实现,数据组织会直接影响后面迭代代码的简洁程度。
我推荐的节点数据用N行5列矩阵:
| 列 | 含义 |
|---|---|
| 1 | 节点编号 |
| 2 | 父节点编号(根节点的父节点填0) |
| 3 | A相负荷复功率 Sa(标幺值) |
| 4 | B相负荷复功率 Sb(标幺值) |
| 5 | C相负荷复功率 Sc(标幺值) |
分支路的阻抗用一个元胞数组 Zcell 存放,Zcell{i} 表示从父节点到节点 i 这条支路的 3×3 三相阻抗矩阵。这种组织方式的好处是,在回代和前推的循环中,只要知道当前节点编号 i,就能立刻取出它的支路阻抗和父节点。
还需要一个关键的数据结构:子节点列表。虽然父节点编号已经给出了树结构,但回代过程需要从末端向根累加电流,遍历时要从叶子节点往根走。如果输入的节点编号满足"子节点编号大于父节点"这个拓扑排序性质,直接按 i=N 向 i=2 循环就能保证每个节点在处理时,它的所有下游支路电流都已经算好;如果不满足这个性质,就需要先做拓扑排序或递归遍历。实践中我习惯在输入数据时人为规定编号顺序,省去排序环节,也便于检查。
3.2 回代过程:末端到根累加支路电流
回代这一步做的事情是:根据当前迭代的三相电压和负荷模型,计算每个节点的注入电流,再从最末端开始,逐级向上累加,得到每条支路的三相电流。
核心代码逻辑如下:
% 节点注入电流(恒功率模型) I = zeros(3, N); % 每列对应一个节点的三相注入电流 for i = 2:N Si = [nodes(i,3); nodes(i,4); nodes(i,5)]; Vi = V(:, i); for ph = 1:3 if abs(Si(ph)) > 1e-10 && abs(Vi(ph)) > 1e-6 I(ph, i) = conj(Si(ph) / Vi(ph)); % 恒功率注入电流 end end end % 支路电流累加(从末节点到根节点) Ib = zeros(3, N); % Ib(:,i) 表示支路(父节点→i)的三相电流 for i = N:-1:2 Ib(:, i) = I(:, i); for k = 1:length(children{i}) c = children{i}(k); Ib(:, i) = Ib(:, i) + Ib(:, c); % 累加下游支路电流 end end这段代码有两个细节值得说明。第一,恒功率负荷在低电压时会产生很大的电流,如果节点电压下降到0.5标幺甚至更低,conj(S/V) 会给出一个超出物理实际的电流值,这也是后面迭代发散的主要来源。程序中通过电压幅值检查避免除零,但更根本的解决办法在后面第5节会讲。第二,回代累加的顺序依赖子节点编号大于父节点的假设,如果你的算例不满足,就需要在循环前对节点做拓扑排序,原理一样。
3.3 前推过程:根到末端更新三相电压
回代算完所有支路电流后,前推阶段从根节点开始,利用根节点的已知电压和每条支路的阻抗矩阵,逐级向下更新三相电压。
更新公式是向量形式的:
V_new(i) = V(parent(i)) - Zabc{i} × Ib(:, i)
这其实是前面讲的电压降公式的矩阵形式。Zabc{i} 是 3×3 复数矩阵,Ib(:, i) 是 3×1 三相电流向量,两者相乘得到三相电压降,再用父节点电压减去这个压降,就是节点 i 的新三相电压。
Matlab代码:
V_new = zeros(3, N); V_new(:, 1) = V(:, 1); % 根节点电压保持恒定 for i = 2:N p = parent(i); V_new(:, i) = V(:, p) - Zcell{i} * Ib(:, i); end整个前推过程非常简洁,三层循环甚至都不需要,因为已经通过父节点索引把树的层级关系天然串起来了。这里唯一值得注意的是 Zcell{i} × Ib(:, i) 是矩阵乘向量,不是逐元素乘法,Matlab中写成 * 而不是 .*,初学者最容易在这个地方把互阻抗的效果弄丢。
3.4 收敛判据与阻尼
每次前推得到 V_new 后,需要判断迭代是否收敛。我使用的判据是三相所有节点电压幅值增量的最大值:
delta = max(max(abs(V_new - V))); if delta < tol break; end容差 tol 一般取 1e-6 标幺值已经足够,对应实际电压约 0.22V 的精度,工程上完全够用。不要追求 1e-10 这种精度,三相互阻抗模型下迭代次数会明显增加,得到的数值精度却并没有实际意义。
在实际配电网算例中,恒功率负荷模型常常会引起电压迭代的振荡,尤其是重负荷场景。我常用的手法是给电压迭代加一个阻尼因子:
alpha = 0.7; % 阻尼系数,0.5~0.8常用 V = alpha * V_new + (1 - alpha) * V;这个表达式等价于每一轮只朝新解方向走70%,保留30%的旧解。加了阻尼之后,收敛速度稍微慢一点,但稳定性会好很多,特别是在线路阻抗较大、负荷重的低压台区算例中,肉眼可见地能规避那种"左右振荡就是不收敛"的困境。
4. 算例验证与互阻抗影响分析
4.1 一个两节点算例的参数
为了直观展示互阻抗在三相不平衡潮流计算中的作用,我构造一个最简单的两节点系统:根节点0,负荷节点1,中间一条三相线路。两者都采用标幺值。
支路三相阻抗矩阵:
Zabc =
0.010+0.050i 0.003+0.010i 0.003+0.010i 0.003+0.010i 0.010+0.050i 0.003+0.010i 0.003+0.010i 0.003+0.010i 0.010+0.050i负荷节点三相负荷(标幺值):
Sa = 0.6 + 0.15i Sb = 0.2 + 0.08i Sc = 0.05 + 0.02i
这个负荷设置明显不平衡,A相几乎是C相的十几倍。根节点保持标准三相对称电压:Va=1∠0°,Vb=1∠-120°,Vc=1∠120°。
在第一次迭代时,由于初始电压都设为1.0标幺,由恒功率模型算出的三相注入电流也极不平衡。A相电流幅值约0.62,B相约0.16,C相约0.05,相角也各不相同。这样的电流经过互阻抗矩阵会产生复杂的交叉压降。
4.2 考虑与忽略互阻抗的对比
我把同一个算例分别跑了两种程序配置:一种用完整的Zabc矩阵(考虑互阻抗),另一种把矩阵非对角元素置零(忽略互阻抗)。表里是负荷节点三相电压的对比结果:
| 相别 | 考虑互阻抗的电压(标幺) | 忽略互阻抗的电压(标幺) | 幅值差 |
|---|---|---|---|
| A相 | 0.9871∠-1.36° | 0.9867∠-1.37° | 约0.0004 |
| B相 | 0.9928∠-121.19° | 0.9888∠-121.13° | 约0.0040 |
| C相 | 0.9935∠118.79° | 0.9947∠118.82° | 约0.0012 |
从结果可以看到两个有意思的现象。
第一,忽略互阻抗并不总是让电压"算得更低"或"算得更高",而是让三相电压的分布偏离真实值。这个算例里,B相电压的差异最明显,约0.004标幺(0.4个百分点),在工程上可能达到触发电压告警的临界值。如果线路更长、负荷更重、三相不平衡更极端,这个偏差还会放大。
第二,互阻抗不仅改变电压幅值,还改变电压的相位。B相、C相的相角差虽然不大,但是对需要精确相角信息的三相不平衡度评估、负序分量计算,这种相角偏差会直接影响结论。
4.3 程序输出与判定
程序在完整互阻抗配置下,初始值取标准对称电压,约8次迭代左右就收敛到1e-6的容差。迭代过程表现出典型的线性收敛特征,前几次电压变化幅度较大,后面快速缩小,没有出现振荡。这说明两节点算例对前推回代法是相当友好的场景。
实际在更大的辐射状配电网算例(比如几十个节点的馈线)中,前推回代法的迭代次数通常也在10~30次之间,取决于负荷轻重和网络电气距离。如果发现迭代次数超过50次甚至上百次,基本可以判断模型参数或程序存在某种问题,这时候需要回到第5节去排查,不能一味调大迭代上限。
5. 实操中高频问题与排查经验
5.1 迭代发散与收敛缓慢
前推回代法最典型的失败是迭代发散,表现形式是电压出现振荡,delta不断跳来跳去,最后达到max_iter上限。
我总结出三类最常见引发原因。
第一类是负荷过重或线路阻抗过大。恒功率模型下,节点电压越低,计算电流越大,而电流越大电压又降得更低,形成正反馈。实际物理中电压不会无限跌,但恒功率数学模型在低压区确实会失真。解决办法:初始电压先用标准三相对称电压(1.0标幺),不要用零向量;迭代中加阻尼系数;必要时把部分重负荷节点改为恒阻抗模型,保证收敛。
第二类是网络参数有问题。比如支路阻抗矩阵的对角元素远小于非对角元素,或者矩阵病态,这通常来自输入数据错误,而不是算法本身。检查方法:对每个支路Zabc,验证对角占优性质,即自阻抗模值应该大于同行的互阻抗模值。
第三类是拓扑数据不一致。父节点指向和子节点列表对不上,回代累加时漏掉某个分支,导致支路电流偏小,电压更新错误。这种情况程序不一定发散,但结果很离谱,某相电压可能超过1.2或者低于0.6。排查方法:编写一个独立的拓扑校验函数,统计每个节点的子节点列表,检查是否有节点没有被任何支路访问到,或者形成环。
5.2 阻抗矩阵和相序错误
三相互阻抗矩阵的填写错误,因为症状隐蔽,是调试中最耗时的。
最常见的错误是相序填写错位。手册或者数据表里有的是按 ABC 顺序排的,有的按 ACB 排,如果不加甄别直接填进去,程序算出的相角关系会乱。我的习惯是在程序里写一段自检:根据三相对称电流激励,计算三相电压降,检查 B 相、C 相的压降是否在相序上符合 120 度关系。如果发现和谐波要求不符,立刻检查相序。
第二个常见错误是单位量纲没统一。有些输入数据用的是欧姆/千米,有些是标幺值,Zcell{i} 里装着未标幺化的欧姆值,配电网标幺基准又不统一,结果电压降大得离谱。建议所有输入数据在程序入口就统一转换成标幺值,并且打印一段"输入数据确认"(支路阻抗最大元素量级、总负荷功率量级),肉眼扫一眼就能发现问题。
第三个容易被忽略的是阻抗矩阵对称性。虽然物理上互阻抗对称,但程序里没必要强制对称,保留通用矩阵形式,能覆盖以后可能遇到的耦合变压器等更复杂元件。
5.3 恒功率模型在低电压下的电流尖峰
前文提过,恒功率负荷在节点电压严重偏低时,电流计算结果会非常大,进而导致迭代不收敛。实际运行中,保护装置会先跳闸或负荷会电压跌落切负荷,不会让电流无限增大,数学模型里这个失真必须人为处理。
我常用的处理手段是电流幅值限幅:每个节点的计算注入电流,如果幅值超过它额定负荷电流的某个倍数(比如3倍),就按限幅值截断。这样做对低压节点算是工程近似,但能显著提升收敛稳定性。另一种做法是在计算注入电流时用前一轮电压和当前电压的平均值(中点电压),减轻振荡。
如果你的算例是深入研究低电压场景的机理,我建议用恒阻抗+恒功率混合模型:低电压节点部分负荷采用恒阻抗表征,既保持物理合理性,又避免数学上的电流尖峰。
5.4 三相三线与三相四线处理的差别
前推回代法处理三相不平衡时,不同的接地系统会影响零序回路的建模。
三相四线制系统(中性线接地)可以用Kron化简后的3×3矩阵,处理方式前面已经讲过,程序完全适用。此时零序电流有中性线通路,互阻抗矩阵已经包含零序路径信息。
三相三线制系统(三角形接法,或无中性线)的情况特殊:三根线电流之和为零,不存在零序电流分量。如果直接把一个四线制的阻抗矩阵拿来套在三线制网络上,三相电流的零序分量没有正确归零,电压计算结果会失真。处理三线制时,需要先对网络做三线制约束,或者在计算电流时强制三线电流之和为零(保留正序和负序分量,剔除零序分量)。实际的低压台区以三相四线为主,程序默认处理四线制场景就够了,但如果你的场景是10kV中压架空线路(通常三线制),必须单独做这个处理。
6. 从教学程序到工程工具
6.1 函数封装与批量计算
主程序脚本写通后,建议把潮流计算核心封装成函数,方便反复调用。一个实用的函数签名:
function [V, Ib, loss, iter] = three_phase_pf(nodes, Zcell, param) % nodes: N×5 节点数据矩阵 % Zcell: N×1 元胞数组,支路阻抗 % param: 结构体,包含容差tol、最大迭代次数、阻尼系数alpha % V: 3×N 三相电压结果 % Ib: 3×N 三相支路电流 % loss: 3×1 三相线损 % iter: 实际迭代次数封装的好处是,你可以把整套流程当成一个三相潮流求解器来用,接入不同的算例,或者放在循环里跑多场景批量仿真。比如做一整年的时序潮流计算,365天、每天96个时刻,只要把8760组节点负荷数据组织好,调用这个函数就行。函数封装之后也方便做单元测试:拿一个小网络验证电压、再拿一个大网络验证收敛性。
批量计算时Matlab的循环性能是瓶颈。如果场景数量很大,建议尽量把常数数据(节点拓扑、阻抗矩阵)在循环外面预计算好,循环内只更新节点负荷和迭代计算。此外,程序里用到的复数矩阵运算要提前分配好变量空间,避免在循环里动态增长数组,否则慢得让人抓狂。
6.2 扩展到分布式电源和三相不平衡评估
三相不平衡前推回代程序的另一个重要应用场景是分布式电源接入分析。单相光伏只在某一相上注入功率,如果在三相平衡潮流里把它平均分配到三相,结果会严重失真,尤其评估电压越限和三相不平衡度时。
程序扩展分布式电源非常简单:把DG当作负的负荷叠加到节点三相注入功率上。比如某一户单相光伏,A相注入功率 Pa=0.3标幺,那么在节点A相负荷里加上 -0.3(吸收为负),程序在计算注入电流时自然会把反向电流算出来。
三相潮流的结果可以进一步派生出工程关心的指标:三相电压不平衡度(负序分量的比例)、中性点偏移量、各相线损占比等。这些指标在配电网改造、负荷换相、无功补偿方案设计里非常有用,我这个程序已经会在每次输出里顺手算三相损耗,供后续做降损分析。
6.3 与台区实测数据结合的思路
拿到程序以后,很多人会用公开算例测试一遍就停在原地了。我自己的经验是,这套三相潮流程序真正的价值在于接入台区实测数据:配电变压器出口的三相电压、三相电流、有功无功、24小时或更长时间序列曲线,以及台区下各户的相位和表计负荷。
把实测数据按照程序要求的节点表格式组织好,就可以把台区完整建模仿真出来。这时候你会发现前推回代法的价值被彻底发挥:某相的电压偏低、某相线损偏大、换了几个用户到别的相以后三相不平衡度怎么变化,都能快速在程序里验证。做台区三相不平衡治理、换相策略评估这类项目,这个程序就是核心计算引擎。
我个人的体会是,三相不平衡潮流计算在实际工程中的门槛不是算法本身,而是模型数据的组织和物理参数的正确理解。前推回代法的算法代码并不长,真正花时间的往往是搞清楚线路的Zabc是怎么来的、负荷模型该怎么选、以及程序结果和现场数据的偏差到底来自模型还是参数。把这些问题在一个个实际算例中磨过,这套程序才算真正落地,而不是停留在教学示例的层面。
最后再分享一个小细节:程序里所有结果输出,我建议都要把"三相不平衡条件下的电压、电流、损耗"按ABC三相分别列出,不要顺手就只打印一个三相平均值。因为做配电网分析的人最能直观理解的数据就是三相分列的数据表——哪些相越限、哪些相损耗大,一眼就能定位,这比任何复杂的评估指标都来得快。你在自己的程序里保留这个习惯,后面做报表和汇报时会省很大力气。