Physics-informed GNN · 微电网与配电系统
Unbalanced Power Flow · 不平衡潮流
相同的总负荷,分配到三相之后,可能产生完全不同的电压结果。如果需求主要集中在 A 相,或者屋顶光伏只接入一相,会发生什么?本章保留三相与中性线,通过推导、例题和实验回答这些问题。
1. 从单相等值走向四导线模型
在 Balanced Power Flow 中,三相幅值相同,相角相差 120°,可以用一个等值相表示网络。单相用户和逆变器破坏了这一对称性:现在每一相都有自己的复功率、电压和电流。
不平衡负荷还会产生中性线返回电流。中性线阻抗有限时,当地中性点电压不再等于电源接地点电压。用户实际得到的是相线对当地中性点的电压,不能只看相线对电源参考点的电压。四线模型在低压配电分析中的意义,可参见 Claeys、Geth 与 Deconinck 的研究。
本章的模型假设
本章采用相域三相四线 AC 模型,方程和交互实验遵循以下假设:
- 正弦稳态: 电压与电流采用基波 RMS 复相量,不包含谐波。
- 辐射型网络: 保留 a、b、c 三根相线和 n 中性线,沿馈线逐支路计算电流与电压。
- 一个平衡理想电源: 电源三相电压幅值和相角固定,其中性点接地;下游中性点经中性线返回电源,没有额外接地或大地回流路径。
- 星形恒定 PQ 设备: 负荷逐相指定 P、Q,光伏按指定有功、Q = 0 注入;它们连接在相线与当地中性点之间,不调节节点电压。
- 串联四导线线路: 保留相线和中性线的电阻、电抗,以及可调的相间互电抗;相线与中性线互阻抗设为零,忽略并联支路和变压器。
这些假设描述通用模型。下面先用 i、j、k 推导方程,再在例题中定义具体馈线、节点编号和逐相负荷。
2. 推导相域潮流方程
步骤 A:区分导线电压与负荷端电压
采用 RMS 复数相量。Vi,a、Vi,b、Vi,c、Vi,n 分别表示四根导线对电源参考点的电压。星形负荷的端电压是:
负荷端电压由相线和当地中性点共同决定
左右滑动查看完整示意图。
电压差也是相量差
读图的两个关键点
Uφ = Vφ − Vₙ
绿色矢量从当地中性点出发。中性点发生偏移时,即使相线对参考点的电压变化不大,负荷两端的电压也会改变。
中性线电流是三相电流的复相量之和取负,不能把三个电流幅值直接相加。上图的 Z 包含自阻抗和所采用的互耦项。
设三相总容量基准为 SB,3φ、线电压基准为 VB,LL。功率按每相指定,因此需要对应的每相基准:
每相功率必须除以每相容量基准,而三相总功率除以三相总容量基准。例题中再代入具体数值,核对这两种换算。
步骤 B:把各相恒定 PQ 需求转换成电流
规定净需求为正表示消耗。本例光伏单位功率因数运行,所以 si,φ = (PD,i,φ − PPV,i,φ) + jQD,i,φ。这里的净需求符号与上一章的净注入符号相反。负荷无功为 QD = PD tan(arccos PF)。
负荷四个端子的电流之和为零。理想的零阻抗中性线仍然可以流过非零电流。只有三相基波电流平衡时,返回电流才为零;本章没有包含谐波。
步骤 C:对四导线支路应用 KVL
将导线电压与电流组成四维向量,一般串联线路使用 4 × 4 阻抗矩阵:
交互模型使用对称矩阵:三相自阻抗相同,为 zs;相间互阻抗 zm = jxm;中性线自阻抗为 zn:
μ 控制相间互电抗与自电抗的比例。这是一组说明原理的参数,不是某种电缆的规格。设置 zn = 0 会使本网络下游中性点电压为零,并不等于断开中性线。实际接地与中性线连接需要显式建模,可参见 OpenDSS 中性线约定。
为什么改变 A 相会影响 B、C 相?
由于 Iₙ = −(Iₐ + Iᵦ + I𝒸),把各相导线的 KVL 方程减去中性线 KVL 方程,得到:
共享中性线项包含三相电流之和。因此,即使 μ = 0,有限中性线阻抗也会耦合各相负荷端电压。只有中性线阻抗与相间互阻抗同时为零,三个独立单相计算才会复现本模型。
步骤 D:用前推回代求解辐射型馈线
为什么这里从牛顿–拉夫逊换成前推回代?
上一章同样研究配电馈线。平衡/不平衡是相模型的选择,辐射/网状是拓扑的选择,牛顿–拉夫逊(NR)/前推回代(BFS)是求解方法的选择。 三者需要分别判断:不平衡潮流也可以用 NR,平衡的辐射馈线也可以用 BFS。
上一章选择 NR,是为了从节点导纳矩阵、P/Q 偏差推导通用的雅可比求解框架;其交互实验还允许闭合联络线形成回路。NR 通过联立方程处理全网电压修正,无需把网络限定成一棵树。
本章则固定为一个电源、辐射型馈线、恒定 PQ 设备。每个下游节点只有一条返回电源的路径,适合从末端汇总电流,再从电源沿线路更新电压。本章采用的是 BFS 的电流求和形式;径向电流回代与电压前推的基本过程可参见 MATPOWER 配电潮流说明。
| 相模型与网络拓扑 | 辐射型:没有闭合回路 | 含闭合回路 |
|---|---|---|
| 平衡单相等值 | 可用 NR 或 BFS | 可用 NR;BFS 需要回路扩展 |
| 三相不平衡 | 可用相域 NR 或多导线 BFS | 可用相域 NR;BFS 需要回路扩展 |
表中讨论算法框架;本章的交互求解器实现的是辐射型四线 BFS。它每次把 a、b、c、n 四个分量一起计算,保留完整 4 × 4 阻抗矩阵和共享中性线关系,不是三次独立的单相计算。光伏反送可以改变电流正负,却不改变树形连接。
同一组 AC 物理约束,两种迭代组织方式
模型给定:恒定 PQ 关系 S = UI*、节点 KCL、线路 KVL,以及电源电压参考。改变算法时,这些物理条件应保持一致。
Newton–Raphson
全网电压估计 → 计算方程偏差 → 构造雅可比 → 联立求修正量 → 更新电压
这里沿用上一章“指定功率 − 计算功率”的 Δs 符号。三相版本可改用各导线电压的实部、虚部,并构造相应的功率或电流残差与雅可比。
前推回代 · 电流求和
当前四线电压 → 计算负荷电流 → 回代汇总支路电流 → 前推计算四线电压 → 重复
利用树形结构做两次遍历,不组装全网雅可比。恒定 PQ 电流依赖未知的负荷端电压,所以一轮前推回代通常不是最终解。
R/X 较大不意味着完整 NR 不能使用。 较大的电阻使保留有功、无功和电压的交叉耦合更重要;不要把完整 NR 与采用弱耦合近似的快解耦法混为一谈。两章的求解器都保留 R、X,没有采用 X ≫ R 的近似。
BFS 的优势在这里是结构清楚、便于展示四线返回路径,并非保证所有工况下更快或更容易收敛。重负荷与较大压降会影响收敛,所以本章加入阻尼并检查残差。闭合回路需要回路补偿等扩展;PV 节点(指定 P 和电压幅值)还需要额外的无功/电压更新。本章的光伏采用固定 PQ 注入。BFS 和 NR 的迭代失败都不能单独证明潮流无解。
下面把这种电流求和过程写成具体的四线更新公式。
将所有节点初始化为电源相量,然后重复:
- 根据当前相对中性点电压,计算每个负荷的四端子电流。
- 回代: 从末端向电源汇总下游电流,得到各支路电流。
- 前推: 从电源节点出发,沿馈线应用四线 KVL,更新导线电压。
用通用的 i → j → k 链说明一次更新:i 是电源,j、k 连接负荷,k 是末端。每个电压与电流向量都含 a、b、c、n 四个分量。
同一条馈线,两个方向的计算
回代:末端 → 电源
先由当前负荷端电压计算各相电流,再从末端汇总。中性线电流也一起传递。
前推:电源 → 末端
用回代得到的支路电流和四乘四阻抗矩阵,沿路径计算电压降。
实现使用 α = 0.65 的阻尼更新:
停止条件是最大复数导线电压残差 ‖Vsweep − V‖∞ 小于 10−10 pu。达到 200 次更新或出现过低、非有限电压时报告失败。算法失败本身不能证明电压崩溃或不存在其他解。支路断开另行报告为超出单电源模型范围的孤岛。
步骤 E:计算各导线损耗
本模型的互阻抗是纯电抗,因此采用物理单位时,全部导线的有功损耗为:
电流用 A、电阻用 Ω,结果为 W。不要再次乘三,式中已经包含三相电流。将支路两端注入的四导线功率相加,也会得到同样的总损耗;应保留中性线导体对应的项。
步骤 F:把三相电压分解为序分量
序分量是什么?
潮流先求出同一节点的三个复电压相量 Uₐ、Uᵦ、U𝒸。序分量是这三个相量的另一种坐标表达:把它们写成三组具有固定相位关系的相量之和。它不增加物理导线,也不是把基波分成三个不同频率。
采用 ABC 相序,令 a = ej120°。a 表示逆时针旋转 120°,a² 表示旋转 240°(等价于 −120°)。三种模式分别是正序、负序和零序;其相序约定见 MIT 的序分量讲义。
正序:ABC
负序:ACB
零序:三相同相位
U₀、U₁、U₂ 的下标是序分量编号,不是节点编号。 每个数是该序的 A 相代表相量。例如,U₁ 是一个复数,完整的正序三相是 [U₁, a²U₁, aU₁]。正序对应正常 ABC 次序,负序对应反向 ACB 次序;零序三相大小和相角完全相同。
为什么恰好是这三种?
三个任意复电压需要三个独立的复系数来表达。循环轮换三相三次后回到原位,其三种独立模式对应方程 λ³ = 1 的三个根:1、a、a²。因此“同相”“ABC”“ACB”构成一组完整的基,可以唯一表示任意三相相量。
展开:独立性与 1 + a + a² = 0
记三组基向量为 bₖ = [1, a−k, a−2k]T,k = 0, 1, 2。由于 1 + a + a² = 0,它们的复内积满足 bₘ†bₙ = 3δₘₙ(† 表示共轭转置)。三组向量互相正交且非零,所以独立。把电压投影到各基上,再除以 3,就得到相应的序系数。
从潮流电压到序分量,再回到三相
变换使用复数而不是只有幅值的三个实数。若已有幅值与角度,先转换 Uφ = |Uφ|ejθφ。ABC 约定下的分解与逆变换如下,亦见 SEL 的序分量教程:
U₀ 是三相复电压的平均值;求 U₁ 时先把 B、C 相按 a、a² 旋转,再平均,使正序对齐、其余模式相消;U₂ 使用反向旋转。重构时相加的是复数,幅值不能直接相加。 使用统一的相电压基准,pu 与伏特两种单位都满足同样的线性变换。
零序电压与中性点偏移有什么关系?
保持源端参考不变,Vₐ、Vᵦ、V𝒸 是相导线电压,Vₙ 是当地中性点电压;负荷实际看到 Uφ = Vφ − Vₙ。公共的 −Vₙ 只进入零序:
所以 U₀ 不是 Vₙ,也不能一般地把 U₀ 写成 −Vₙ;相导线本身可能已有非零 V₀。若同一支路四根导线电流都以源端指向末端为正,I₀ = (Iₐ + Iᵦ + I𝒸)/3,而 Iₙ = −3I₀。这是电流返回关系,不是零序电压等于中性点电压的依据。
本章使用的电压不平衡因子为:
它只量化负序相对正序的幅值;零序、绝对电压幅值与中性点偏移应分别查看。它也不同于 OpenDSS 所说明的 NEMA 幅值偏差指标。改变相角而保持三个幅值不变,同样可能产生负序。
3. 例题:总负荷仍为 300 kW,三相分配不同
建立馈线与节点设置
考虑一个 400 V 三节点辐射型配电馈线。节点 1 是上级电源,经线路 1–2 连接节点 2,再经线路 2–3 连接末端节点 3。每条线路均包含 a、b、c、n 四根导线,本例没有联络线。
例题网络:三相四线辐射馈线
左右滑动查看完整示意图。
| 节点 | 设备与指定量 | 电压的处理方式 |
|---|---|---|
| 1 | 平衡电源,线电压 400 V,中性点接地 | 固定三相电压相量与中性点电压 |
| 2 | 星形负荷,A/B/C 各 40 kW,共 120 kW,PF = 0.95 滞后 | 由四线潮流求负荷端电压 |
| 3 | 星形负荷,A/B/C 为 90 / 55 / 35 kW,共 180 kW,PF = 0.95 滞后;另接 50 kW 光伏 | 由四线潮流求负荷端电压 |
节点 3 的光伏采用固定 P、Q 注入:基准工况将 50 kW 在三相均分,各相 Q = 0,不调节电压。该节点的逐相净需求由负荷减去光伏注入得到。上方相量图观测的就是此处的相对当地中性点电压。
代入基准与线路参数
取三相总容量基准 1 MVA、线电压基准 400 V,得到每相容量基准 333.333 kVA、相电压基准约 230.94 V、ZB = 0.16 Ω、IB = 1443.38 A。一个 90 kW 单相负荷在每相容量基准上为 0.27 pu;90 kW 三相总负荷在三相总容量基准上才是 0.09 pu。
线路每根导线的自阻抗及相间互阻抗如下:
| 支路 | 相线自阻抗(Ω) | 中性线阻抗(Ω) | 相间互阻抗(Ω) |
|---|---|---|---|
| 1–2 | 0.012 + j0.008 | 0.018 + j0.006 | j0.0016 |
| 2–3 | 0.008 + j0.006 | 0.012 + j0.004 | j0.0012 |
写出逐相需求并求解
1. 形成逐相净需求。 光伏每相供应 50/3 kW,因此节点 3 的净有功需求为 73.333 / 38.333 / 18.333 kW。无功需求仍为 PD,φ tan(arccos 0.95),本例光伏不供应无功。
2. 求电流与返回路径。 将复需求除以各自的相对当地中性点电压,再取共轭。把三相电流按复数相量相加,得到中性线返回电流。直接把电流幅值相加会得到错误结果。
3. 迭代并核对运行点。 基准例题得到节点 3 的负荷端电压:
| 相 | 幅值(pu) | 幅值(V RMS) | 相角(°) |
|---|---|---|---|
| A | 0.91917 | 212.27 | +0.1180 |
| B | 0.98032 | 226.39 | −122.0550 |
| C | 1.00438 | 231.95 | +121.2865 |
中性点偏移约 7.637 V;支路 1–2 的中性线电流约 242.81 A。总有功损耗为 9.5971 kW,参考电源供应 259.5971 kW,满足 259.5971 + 50 − 300 = 9.5971 kW。节点 3 的 VUF 仅为 0.9028%,但 A 相已经低于实验中的 0.95 pu 教学限值。
把算出的电压分解,再核对重构
4. 使用同一组复电压。 将上表的幅值与相角一起转换为复数,再代入序分量矩阵。节点 3 的结果如下;计算使用未舍入的潮流电压,表中仅显示近似值。
| A 相代表系数 | 复数值(pu) | 幅值(pu) | 相角(°) |
|---|---|---|---|
| U₀ · 零序 | −0.040906 + j0.009788 | 0.042061 | +166.543 |
| U₁ · 正序 | 0.967660 − j0.003570 | 0.967666 | −0.211 |
| U₂ · 负序 | −0.007590 − j0.004326 | 0.008736 | −150.322 |
例如 A 相不需要额外旋转,直接把三个代表系数相加:
取幅值与相角就回到约 0.91917∠0.118° pu。B、C 相先按逆变换旋转正序和负序项,再相加。下方的分解器可逐相核对,不必另跑一个潮流。
由上表可得 VUF ≈ 0.9028%,但 |U₀|/|U₁| ≈ 4.3466%。这解释了为什么只看 VUF 会遗漏本例明显的零序和逐相电压偏差。这里的 |U₀| ≈ 9.7135 V,而 |Vₙ| ≈ 7.6370 V,两者不是同一个量。
选择下方的相同总负荷,均分三相,将节点 3 改为 60 / 60 / 60 kW,保持总负荷与光伏不变。同时观察中性线电流、中性点偏移、逐相电压和损耗。若要精确复现上一章例题,还应把 μ 设为零,使平衡三相看到相同的无互耦串联阻抗。
4. 交互实验:改变一相,观察三相
拖动各相负荷、切换光伏接入相,或者比较有限与理想中性线。电网图、相量图、电压分布、电流负载率和数值表均使用同一个求解运行点。电压带、VUF 阈值与电流限值是教学设置,不是标准合规评估。
三相四线配电馈线
400 V LL · 1 MVA三条实线代表 A/B/C 相,虚线代表中性线;线宽随电流幅值变化。节点电压是相对当地中性点的 RMS 值。节点 2 固定为每相 40 kW,再乘负荷倍率。
正在初始化…
电源、线路耦合与电流限值
逐相电压分布
导线电流负载率
电压 0.95–1.05 pu、VUF 2% 和可调电流限值是教学参照。VUF 只描述负序比例,不能代替相电压或中性点偏移检查。
逐相数值、序分量与迭代过程
| 节点 / 相 | |U| (pu) | U (V) | θ (°) | P demand (kW) | Q demand (kvar) |
|---|
此表净需求为正表示消耗,负值表示本相净发电;参考电源功率单独列在下方。
| 节点 | |U₁| (pu) | |U₂| (pu) | |U₀| (pu) | VUF (%) | |Vₙ| (V) |
|---|
| 支路 | Iₐ (A) | Iᵦ (A) | I𝒸 (A) | Iₙ (A) | 损耗 (kW) | N loss (kW) |
|---|
| 迭代 | ‖V sweep − V‖∞ (pu) | min |U| (pu) |
|---|
从当前潮流电压,分解并重构
上方的负荷、光伏与中性线控件改变潮流运行点;本区自动读取同一份结果。先比较均分三相与基准工况,再切换电压参考,观察哪一个序发生改变。
① 原始三相电压
② 正序三相 · ABC
③ 负序三相 · ACB
④ 零序三相 · 同相位
各图独立缩放,以看清较小的负序、零序;比较幅值请看圆半径标注与数值表。A/B/C 使用橙色圆点、蓝色方块、绿色三角;零序三相重合。数值接近零时相角没有意义,显示为 —。
分解输入:幅值与相角 → 复电压
| 相 | 复电压(pu) | |·| (pu) | ∠ (°) |
|---|
三个序的 A 相代表相量
| 序 | 复系数(pu) | |·| (pu) | ∠ (°) | |·| (V RMS) |
|---|
逐项重构:三个复数相量相加
| 项 | 该相的复电压贡献(pu) |
|---|
5. 修改并运行四线求解器
先看逐相输入怎样进入四线模型,再由 main() 调用求解器并读取结果。直接运行默认程序后,取消 parameters.update(p3_a_kw=60, p3_b_kw=60, p3_c_kw=60) 前的注释,在保持节点 3 总负荷 180 kW 的条件下比较三相电压、VUF 与中性点偏移。滑块保留原始 JavaScript 模型作为参照;Python 区运行可编辑的四线源码。
先看代码如何连接
- case滑块提供输入字典
- unbalanced_power_flow.py源码定义模型函数
- main(case) → result主程序计算、打印并返回绘图结果
点击运行时,页面先复制当前控件为 case,再执行下方折叠的模型源码,最后执行可编辑的主程序。因此 main() 可以直接调用源码中的函数,无需另写导入语句。下面三部分按这个顺序阅读。
1 · 输入:展开 case 的当前参数与含义
这是下一次运行将使用的输入;改变上方控件会更新它。main() 中复制为 parameters 后修改,可测试一个新工况,而不改变控件。
正在读取参数…
| 参数 | 含义与单位 |
|---|---|
p3_a_kw / p3_b_kw / p3_c_kw | 节点 3 的 A/B/C 相基准负荷(kW),随后乘以 load_scale。 |
load_scale / power_factor | 负荷倍率与功率因数;节点 2 基准负荷每相 40 kW。 |
dg_kw / dg_phase | 光伏总有功 kW 与接入相:balanced 为三相均分,a/b/c 为单相接入。 |
slack_pu / r_scale / x_scale | 电源相电压(pu)与线路电阻 / 电抗倍率。 |
neutral_mode / neutral_scale / mutual_ratio | finite 或 ideal 中性线;中性线阻抗倍率;相间互电抗比例。 |
current_limit_a / neutral_limit_a | 相线 / 中性线电流限值(A)。 |
open12 / open23 | True 表示线路断开,下游节点将失去电源连接。 |
2 · 模型源码:unbalanced_power_flow.py(展开查看 / 修改)
依赖:只使用标准库 cmath、math;四线制求解器在本章源码中定义。
这是本次 Python 实际执行的源码;按下表顺序可以把函数与本章公式对应起来。修改后,再运行主程序就会使用新源码。上方滑块实验继续使用原始 JavaScript 模型作为参照。
| 源码里的函数 | 负责什么 |
|---|---|
network(options) | 参数 → 四导体电源、逐相负荷、每条线路的 4 × 4 阻抗矩阵。 |
local(voltage) | 导体电压 → 当地相对中性点电压 Uφ = Vφ − Vn。 |
sweep(demand, edges, source, voltage) | 完成一次向电源累加电流、向末端更新电压,包含中性线。 |
sequence(phases) | 三相电压 → 序分量,以及 VUF = 100 |U₂| / |U₁|。 |
phase_components(components) / reconstruct_sequence(components) | 序分量系数 → 每相的零序、正序、负序贡献 → 重构的 A/B/C 复电压。 |
solve(options) | 重复带阻尼的前推回代,检查收敛,返回逐相电压、中性点偏移和损耗。 |
3 · 主程序:main() 做什么?
主程序负责复制 / 修改输入 → 调用模型 → 检查求解状态 → 打印结果 → 返回结果。solved 是函数内部的结果字典;末尾的 result = main(case) 把它交给页面绘图。print() 只在输出区显示文字,不负责画图。
第一次先直接运行,核对本章例题。然后取消逐相负荷修改行前的 #,保持节点 3 总负荷 180 kW,比较三相电压和 VUF。
首次运行需联网下载 Python 环境。计算在浏览器内完成,求解器只用 Python 标准库。
准备运行。
怎样读输出?
Python 列表从 0 开始,所以 buses[2] 对应物理节点 3。各相 u_pu 是 [实部, 虚部],vm_pu、voltage_v 则是幅值。components 中的 zero_pu、positive_pu、negative_pu 存储序分量复数对,vuf_pct = 100 |U₂| / |U₁|。neutral_v 是中性点偏移(V),loss_kw 是总有功损耗;读取前先检查 ok。
“下载实验”包含当前输入、当前模型源码和当前主程序,可以作为一个完整的 .py 文件运行。
输出将在这里显示。
代码结果:电压分布
用 Python 验证序分量与重构
把 main 主程序整体替换为下面代码。solve、sequence、reconstruct_sequence 都在上方可折叠的完整求解器源码中;它们依次负责潮流求解、相量分解和逆变换。u_pu 是 [实部, 虚部],因此要用 complex(*pair) 读取,不能把 vm_pu 的幅值当成复电压。
def main(input_case):
# 1. 求解当前滑块工况;失败时不做分解。
solved = solve(input_case)
if not solved["ok"]:
print("Power flow failed:", solved["reason"])
return solved
# 2. 读取节点 3 的三相对当地中性点复电压。
bus = solved["buses"][2] # zero-based index 2 -> bus 3
phases = [complex(*phase["u_pu"]) for phase in bus["phases"]]
# 3. 分解为 A 相代表的零、正、负序系数。
components = sequence(phases)
for name in ("zero_pu", "positive_pu", "negative_pu"):
coefficient = complex(*components[name])
print(name, coefficient, "|U| =", abs(coefficient), "pu")
# 4. 逆变换回 ABC,并与原电压逐相比较。
rebuilt = reconstruct_sequence(components)
for label, original, recovered in zip("ABC", phases, rebuilt):
print(label, "solved =", original, "rebuilt =", recovered)
error = max(abs(u - restored) for u, restored in zip(phases, rebuilt))
print("Maximum reconstruction error:", error, "pu")
# 保留完整潮流结果,供页面绘制电压曲线。
return solved
result = main(case)
比较光伏接入相
完成默认实验后,可以将主程序整体替换为下面的扫描程序,在其余输入固定时比较光伏接入相。它把最后一次成功求解的结果交给页面绘图:
def main(input_case):
last_successful = None
for connection in ("balanced", "a", "b", "c"):
trial = dict(input_case, dg_phase=connection)
solved = solve(trial)
if solved["ok"]:
end = solved["buses"][2] # Bus 3
print(connection, end["components"]["vuf_pct"], end["neutral_v"])
last_successful = solved
else:
print(connection, solved["reason"])
return last_successful
# 返回 None 时,输出仍可读,页面不绘制电压图。
result = main(case)
6. 练习与解释
- 中性线耦合: 设置 μ = 0,保持有限中性线阻抗,将 A 相负荷增加 10 kW,记录三相电压。再采用理想中性线重复,用共享中性线矩阵项解释差别。
- 总需求相同: 比较 90 / 55 / 35 kW 与 60 / 60 / 60 kW,保持功率因数、光伏出力与接入方式、阻抗不变。解释中性线损耗与最低电压的变化。
- 一个指标不够: 找到 VUF 小于 2%,但某相电压超出 0.95–1.05 pu 的收敛运行点。用 U₀、U₂ 和中性点偏移讨论 VUF 的含义与局限。
- 单相光伏: 将 50 kW 依次接在 A、B、C 相,判断在当前运行点哪个方案更能改善最低电压,再在高负荷时重复。不要预先假设所有工况的最佳接入相都相同。
N-1 标签: 断开支路 2–3,区分孤岛、算法不收敛、以及连通但越限的状态。固定 PQ 光伏不会在馈线断开后自动成为构网电源。
- 序分量与参考: 先选电源节点,解释为何只剩正序。再选基准工况的末端节点,切换 U 与 V,核对 U₀ = V₀ − Vₙ。分别重构 A、B、C,相角旋转系数为什么不同?
7. 适用范围与后续实现
本章是基波、辐射型教学模型,不包含三角形负荷、电压相关负荷、不对称导线几何、相线与中性线互阻抗、下游接地与大地回流、变压器、调压器、谐波、逆变器能力限值或动态与保护行为。支路断开时四根导线同时断开,没有建模仅中性线断开的故障。孤岛在本模型中没有电压参考。
在 PandaPower-based Implementation 中,我们将设备映射到库函数,并明确比较工具的建模假设。pandapower runpp_3ph 文档说明了序域求解和大地回流、星形连接约定。在匹配这些假设之前,不应认为其结果会与本章显式中性线模型一致。