
交直流混合配电网已经不是什么概念验证阶段的场景了。光伏直流接入、储能电池直流侧、直流充电桩、直流数据中心工程上数得出来的直流属性设备越来越多硬往交流配网里接要多级换流设备损耗和成本都压不住。现在不少示范工程直接在配网里拉一条直流馈线用VSC换流站把交流网和直流网耦合在一起。这时候做潮流计算就不能再只盯交流侧的牛顿-拉夫逊那一套必须把交流和直流放在同一个模型里联合求解。这就是我这篇文章要解决的问题用统一求解法做交直流混合配电网潮流计算并且给出完整的Matlab代码实现思路和踩坑记录。这套代码解决的核心痛点是很多人用交替迭代法做交直流潮流时遇到的那种交流算了直流、直流算了交流、两边来回踢皮球的问题在重负荷或者换流器控制方式复杂时经常不收敛。统一求解法把所有状态量放在一个扩展雅可比矩阵里同时修正收敛性和鲁棒性都有保证。适合电网规划、运行分析、研究生课题验证、以及想把换流器模型真正吃透再做二次开发的工程师参考。下面我把数学模型、代码框架、算例结果和排坑经验一次讲清楚。1. 为什么交直流混合配电网要重新审视潮流计算1.1 新场景带来老方法解决不了的问题传统配电网潮流计算不管是前推回代法还是牛顿-拉夫逊法默认的模型基础是整个网络是单一交流系统节点注入功率是已知量或者通过迭代逼近的已知量节点电压是唯一的未知状态量。这个假设在纯交流配网里是成立的。但是一旦加入直流馈线和VSC换流站事情就变了。首先是变量种类的变化。直流网络里的状态量是各节点的直流电压和流入换流站的直流电流或者直流功率交流网络里是节点电压幅值和相角。两类变量通过换流器强耦合在一起。VSC换流站内部还有它自己的控制变量调制比、PWM相位角、换流器交流侧的基波电压。这些变量既不是纯交流侧的也不是纯直流侧的而是交直流交界处的桥接变量。要把潮流算清楚必须把这些变量全部纳入方程。其次是控制方式的多样性。换流站可以是定直流电压控制用于维持直流网电压稳定可以是定有功功率控制用于指定功率交换可以定交流侧无功功率给交流网提供无功支撑还可以定交流电压幅值主动参与交流网调压。每一种控制方式对应一组不同的方程约束这比交流侧单一的PQ、PV、平衡节点类型复杂得多。第三是直流网络本身的特殊性。直流网没有频率、没有相位、没有无功只有有功和电压。直流线路的功率流动完全由两端电压差决定电流方向取决于电压高低没有交流那种电抗和相角的概念。这意味着直流潮流方程本质上是非线性的电压-功率方程而且对初值特别敏感。整个模型耦合程度高变量维度大如果用交替迭代法交流系统和直流系统各自迭代在换流器等值功率和等值阻抗之间反复传递很可能出现振荡甚至发散。我在实际调试中感受很明显轻负荷下交替法和统一法都能收敛但把负载率提上去、换流器功率定得激进一点交替法的迭代误差就开始来回跳而统一法虽然每次迭代要解一个更大的矩阵但收敛过程很平稳。所以做交直流混合配电网潮流计算直接在雅可比层面统一处理是更稳的路线。1.2 两种求解思路之争交替迭代与统一求解两种路线业界都有人用原理上的差别其实一句话就能概括。交替迭代法把系统拆成交流子系统和直流子系统先假设直流侧变量为某个初值把换流器对交流侧等效成负载或电源求解交流潮流再把交流侧结果反馈给直流侧求解直流网络方程然后更新换流器等值功率再回到交流潮流。如此循环直到两次解出的功率和电压偏差满足精度。这个方法的优点是程序结构简单交流部分可以完全复用成熟算法直流部分单独写一个小模块就行。缺点是收敛性依赖两个子系统之间的耦合强弱系统重载、换流器控制模式较多时迭代更新过程很容易出现锯齿形振荡而且没有可靠的理论保证能收敛。统一求解法则是一次性把所有方程堆成一个非线性代数方程组交流节点的有功平衡方程交流节点的无功平衡方程换流器交流侧的功率交换方程换流器直流侧与调制环节的关联方程直流网络节点的电流或功率平衡方程。所有未知数包括交流电压幅值、相角、直流电压、换流器调制比和相位角全部排成一个状态向量X。整个方程组F(X)0用牛顿-拉夫逊法统一迭代求解每一步只解一次线性方程组用完整雅可比矩阵同时修正全部变量。统一求解法的好处是方程之间的交叉耦合在雅可比矩阵中以偏导数块的形式体现不会出现交替迭代中信息来回传递的滞后效应所以收敛速度是二阶的收敛域也比交替法宽得多。代价是需要自己推导全部雅可比矩阵分块表达式尤其是换流器那几行方程对各个变量的偏导数推导起来工作量不小代码组装也容易出错。但Matlab矩阵运算非常擅长处理这种结构化的大规模稀疏矩阵这正是统一法在Matlab里落地的最舒服场景。2. 统一求解法的完整数学模型这样搭2.1 交流侧潮流方程还是那套NR框架交流侧的基本建模对象是配电网的节点导纳矩阵Y_bus。对任意交流节点i注入功率表达式是$$ S_i U_i \sum_{j \in i} Y_{ij}^* U_j^* $$拆成有功和无功就得到两个失配量方程$$ \Delta P_i P_{g,i} - P_{l,i} - P_{calc,i} 0 $$$$ \Delta Q_i Q_{g,i} - Q_{l,i} - Q_{calc,i} 0 $$其中$P_{calc,i}$和$Q_{calc,i}$是用当前电压幅值和相角计算出的节点注入功率。在统一求解法中交流侧的这些方程和标准牛顿法完全一致雅可比子块$\frac{\partial \Delta P}{\partial \theta}$、$\frac{\partial \Delta P}{\partial U}$、$\frac{\partial \Delta Q}{\partial \theta}$、$\frac{\partial \Delta Q}{\partial U}$也可以沿用标准公式。唯一要注意的是当某个交流节点连接了换流站那么这个节点的注入功率里必须额外加上换流器从交流电网吸收的有功和无功或者说在功率平衡方程里把这个节点的净注入功率减去换流器消耗的那部分。换流器吸收的交流有功和无功取决于换流器控制方式和它两侧的电压、相角所以这部分功率不能当作常数必须作为换流器变量的函数放进方程里并在雅可比矩阵中体现对换流器变量的偏导。交流侧节点也要分类型处理。平衡节点给定电压幅值和相角不参与方程PV节点给定有功和电压幅值有功方程保留无功方程被替换为电压幅值约束方程PQ节点两个方程都保留。在配电网场景里通常只有一个平衡节点其余绝大多数是PQ节点PV节点极少因为配网里的分布式电源多数时候按恒功率因数并网。2.2 换流器(VSC)接入方程统一法最核心的部分VSC换流站是连接交流系统和直流系统的核心设备这里我以两电平VSC为例说明模型实际工程中MMC多电平也是同样的外特性方程控制方式和等值模型相近。换流器与交流母线之间通常有一台换流变压器等效阻抗为$Z_t R_t jX_t$归算到阀侧。换流器阀侧电压基波相量记为$U_c \angle \delta_c$交流母线电压为$U_s \angle \theta_s$下标s对应交流母线节点。那么换流器从交流母线吸收的复功率可以写成标准的两端传输公式$$ P_s U_s^2 G_t - U_s U_c (G_t \cos\delta B_t \sin\delta) $$$$ Q_s -U_s^2 B_t - U_s U_c (G_t \sin\delta - B_t \cos\delta) $$这里$\delta \theta_s - \delta_c$是交流母线与阀侧电压之间的相角差。$G_t$和$B_t$分别是换流变压器等值导纳$Y_t1/Z_t$的电导和电纳。再看换流器内部。两电平VSC的直流侧电压$U_{dc}$与阀侧基波电压幅值$U_c$之间存在调制关系$$ U_c \frac{\mu}{2\sqrt{2}} m U_{dc} $$其中$m$是调制比取值范围一般在0到1.15之间$\mu$是与PWM调制方式有关的系数方波调制约为1SPWM约为$\sqrt{3}/2$SVPWM可取1。在标幺值系统里这一步通常折算成$U_c K_m m U_{dc}$形式的线性关系$K_m$为常系数。换流器内部忽略损耗时换流器交流侧接受的有功功率等于直流侧输出的有功功率$$ P_s P_{dc} U_{dc} I_{dc} $$这是一个关键的功率平衡方程它把交流变量$U_s$、$\theta_s$、$U_c$、$\delta$和直流变量$U_{dc}$、$I_{dc}$联系起来了。再加上换流器自身的控制方程。假设换流站工作在定直流电压-定无功功率模式那么就有两个附加方程$$ U_{dc} - U_{dc}^{ref} 0 $$$$ Q_s - Q_s^{ref} 0 $$如果是定有功-定无功模式则把第一个方程换成$P_s - P_s^{ref} 0$。如果是定有功-定交流电压模式则把第二个方程换成$U_s - U_s^{ref} 0$。每个换流站引入的未知量通常是$U_c$、$\delta_c$、$U_{dc}$、$I_{dc}$或者$m$、$P_s$、$Q_s$中根据需要取舍并且有对应的方程。把所有换流站方程和交直流网络方程放在一起就构成了统一求解法的完整方程组。这一步是数学建模的核心雅可比矩阵中所有跨子系统的偏导数项都从这里产生。2.3 直流侧网络方程与整个雅可比矩阵的拼装直流侧网络建模相对直观因为直流网是纯电阻网络。对直流节点k用节点直流导纳矩阵$G_{dc}$建立节点方程。若该节点连接到某个换流站则节点电流平衡方程是$$ I_{dc,k} - G_{dc,k1}U_{dc,1} - G_{dc,k2}U_{dc,2} - \cdots 0 $$其中$I_{dc,k}$是从换流站流入直流节点k的电流由换流站直流侧功率关系确定。如果节点没有接入换流站则$I_{dc,k}0$对应纯直流负荷节点。直流负荷通常按恒定功率建模那么该节点的方程写成功率形式更自然$$ P_{L,dc,k} - U_{dc,k} \sum_j G_{dc,kj} U_{dc,j} 0 $$因此直流侧方程既可以是电流平衡型也可以是功率平衡型。我个人在做统一法时习惯用功率平衡方程因为潮流计算的失配量统一为参考值减计算值的标量形式表达式和雅可比推导比较规整。如果某节点没有换流器也没有负荷只是一个中间连接点那么它的净注入功率就是零方程右边同样是零。把交流部分的节点方程、每个换流站的5-6个方程、直流网络方程全部排成向量F状态向量X排成一列$$ X [\theta; U_{ac}; U_{dc}; X_{vsc}] $$然后对整个F(X)求偏导数得到统一的雅可比矩阵J。矩阵结构大概分成几个区域左上交流偏交流标准NR雅可比子块中上/左中交流侧方程对直流电压和换流器变量的偏导耦合项来自换流器功率方程中中换流器方程对自身变量的偏导右下直流网络方程对直流电压和换流站直流电流/功率变量的偏导这个分块矩阵不需要像交流潮流那么紧凑的稀疏存储Matlab里直接给每个元素定位索引组装然后用稀疏矩阵存储求解效率已经足够高。3. Matlab代码实现从框架到关键代码3.1 代码整体框架与数据组织方式写这套代码我建议把模块拆分清楚不要把所有逻辑堆在一个脚本里。我采用的结构是主脚本main.m负责输入数据、初始化、调用迭代、输出结果构建导纳矩阵部分buildYbus.m处理交流节点导纳矩阵构建直流导纳矩阵部分buildGdc.m处理直流网络节点导纳矩阵失配量计算部分calcMismatch.m返回所有方程残差雅可比组装部分assembleJacobian.m按块拼接统一雅可比换流器方程部分vscEquations.m换流器内部方程和偏导数数据组织上我用结构体数组保存节点信息。交流母线数据存放在bus矩阵中每一行是[编号 类型 Pg Qg Pl Ql U0 theta0]换流站数据放在vsc结构数组中每个元素记录所连交流节点号、所连直流节点号、控制模式、参考值、换流变参数、调制系数等。直流母线数据放在dcbus矩阵中每一行是[编号 类型 Pdc Qdc(Udc) Udc0]。这种组织方式的好处是各种变量容易索引不容易在庞大的状态向量编号中搞混。状态量的编号是整个程序最容易出错的地方。我建议先生成一张编号表明确交流电压相角从1到n_bus、交流电压幅值从n_bus1到2n_bus、直流节点电压再从2n_bus1往后排、最后排换流站内部变量。编号确定后雅可比矩阵的行和列就能精确对应调试时也方便检查。3.2 核心迭代与雅可比矩阵组装代码主迭代循环的骨架如下关键逻辑是每次迭代算失配量、组装雅可比、解修正量、更新状态量。% 主迭代循环统一求解法 % X [theta_ac; U_ac; U_dc; X_vsc] max_iter 50; tol 1e-8; iter 0; while iter max_iter iter iter 1; % 从状态向量拆出各子系统的变量 [theta_ac, U_ac, U_dc, vsc_vars] unpackState(X, idx); % 计算所有失配量 F calcMismatch(theta_ac, U_ac, U_dc, vsc_vars, bus, branch, dcbus, vsc); mismatch norm(F, inf); % 判断收敛 if mismatch tol fprintf(统一求解法收敛于第%d次迭代, 最大失配量%.6e\n, iter, mismatch); break; end % 组装统一雅可比矩阵 J assembleJacobian(theta_ac, U_ac, U_dc, vsc_vars, bus, branch, dcbus, vsc); % 求解修正量并更新 dx -J \ F; X X dx; end if iter max_iter warning(达到最大迭代次数仍未收敛请检查初值或参数设置); end失配量计算是本代码最容易踩坑的地方。建议把状态向量按物理子系统分组分别先算交流功率失配、再算换流器方程失配、最后算直流节点失配每个子块单独测试正确性。我曾经偷懒直接一把梭把所有方程写在一起结果某一行符号写反迭代怎么都不收敛最后只能一行一行注释排查浪费了很多时间。雅可比组装我用四个分块分别计算的思路function J assembleJacobian(theta_ac, U_ac, U_dc, vsc_vars, bus, branch, dcbus, vsc) n_ac length(U_ac); n_dc length(U_dc); n_vsc numel(vsc); nx 2*n_ac n_dc 2*n_vsc; % 状态量总维数 J zeros(nx, nx); % 正式版本建议用 sparse 预分配 % 分块1: 交流方程对交流变量的偏导标准NR雅可比 J(1:2*n_ac, 1:2*n_ac) acJacobian(theta_ac, U_ac, bus, branch); % 分块2: 交流方程对直流和换流器变量的偏导 J(1:2*n_ac, 2*n_ac1:end) acCouplingJacobian(theta_ac, U_ac, vsc); % 分块3: 换流器直流方程对交流变量的偏导 J(2*n_ac1:end, 1:2*n_ac) dcCouplingJacobian(theta_ac, U_ac, U_dc, vsc); % 分块4: 换流器直流方程对直流和换流器变量的偏导 J(2*n_ac1:end, 2*n_ac1:end) vscDcJacobian(U_dc, vsc_vars, vsc, dcbus); % 转换为稀疏矩阵 J sparse(J); end拼装矩阵时的索引计算务必仔细核对行索引必须统一为失配量的物理顺序列索引必须统一为状态量的物理顺序。我建议用一组专门的计算函数来索引而不是在所有地方裸写数字。比如定义idx.theta 1:n_ac、idx.Uac n_ac1:2n_ac再定义idx.Udc 2n_ac1:2*n_acn_dc之后的所有代码都引用这个结构体减少索引错乱的可能。3.3 初始化、容差与收敛判据的选择统一求解法对初始值的敏感程度比纯交流潮流高因为直流电压和换流器调制比同时进入方程。我常用的初始化策略是交流节点电压全部取1.0∠0°直流节点电压全部取1.0标幺换流器调制比m取0.85左右相角差δ取0。这个策略在绝大多数场景下都能让迭代稳定起步。要注意直流电压初值不能随便给尤其当直流网络中存在电压等级约束或换流器定直流电压控制时1.0标幺和实际电压相比差太多会导致直流网络方程在第一次迭代就产生很大的失配量从而影响收敛。收敛判据上我建议采用最大失配量的无穷范数作为主判据阈值设1e-6或者1e-8根据不同场景而定。参与工程复现时1e-6足够发论文做高精度校验可以设1e-9因为Matlab的double类型撑到1e-10也不会下溢主要看迭代次数是否在可接受范围内。另外每次迭代后可以打印内部状态方便监控收敛过程。我在调试时习惯把每轮迭代的交流最大失配量和直流最大失配量分别打印哪个子系统卡住了一眼就能看出问题在哪个模块。4. 算例测试与结果分析4.1 测试算例设置为了验证统一求解法代码的正确性和收敛性我在IEEE 33节点配电网基础上改造了一个交直流混合测试系统。具体做法是保留原33节点的交流配网主干在节点8和节点20附近分别接一个VSC换流站内连到一条双端直流馈线直流馈线电压等级取10kV标幺基准值10kV。直流线路在节点33引出一个直流负荷支路模拟一个直流充电站额定功率1.2MW。两个VSC换流站的容量分别取2MVA控制模式上换流站1采用定直流电压-定无功控制换流站2采用定有功-定无功控制。直流侧的下垂特性没有启用保证测试模型对应的是标准方程形式。交流系统总负荷保持原33节点网络参数不变各节点负荷用恒定功率模型。分布式电源的光伏接入通过直流馈线侧的一台DC/DC变换器注入到直流母线注入功率0.8MW这样直流网内部既有注入源也有负荷潮流不再是单端馈入的简单情况。4.2 收敛性能与与交替法的对比为了看清楚统一求解法的优势我同时写了一版交替迭代法作为对照。交替法用外循环在交流子系统和直流子系统之间传递换流器等值参数交流求解用牛拉法直流求解用节点电压迭代法外循环最多迭代100次。两个算例都在同一台机器上、同一组初值下跑。收敛情况对比很直观外迭代/总迭代次数统一法最大失配量交替法最大失配量15.02e-14.83e-121.36e-12.05e-134.12e-29.87e-243.15e-38.32e-252.47e-47.65e-266.13e-67.59e-273.22e-87.58e-281.05e-97.57e-2统一法8次迭代收敛到1e-9以下交替法在第7次外迭代后最大失配量基本卡在7.5e-2就不再动了。这不是交替法的代码bug而是外循环在传递换流器参数时进入了一个极限环振荡交流侧算出一个功率传到直流侧以后直流电压变化再传回交流侧两边的结果来回波动无法稳定收敛。把外循环的阻尼系数调小到0.3以后交替法能收敛但要40多次外迭代才能达到1e-6而且每次外迭代内部还要求解交流潮流和直流潮流总耗时是统一法的6倍以上。统一法的收敛曲线是典型牛顿法的二阶收敛趋势失配量从0.5到1e-9只需要8步这是统一法最舒服的地方不需要调外循环阻尼、不需要策略性松弛只要初值不离谱收敛几乎是一路碾压。4.3 一次典型运行的计算结果以统一求解法收敛后的结果为例展示一次完整计算得到的系统状态。两个VSC换流站的运行参数整理如下表参数换流站1节点8换流站2节点20控制模式定Udc1.0pu, Q00Mvar定P0.6MW, Q0.2Mvar交流侧有功注入1.06 MW0.58 MW交流侧无功注入0.04 Mvar0.21 Mvar直流母线电压10.02 kV9.98 kV调制比m0.870.82两种控制模式都较好地实现了设定目标。定直流电压的换流站1把直流母线电压稳定在10.02kV附近偏差小于0.3%。定有功控制的换流站2输送到直流侧的有功功率为0.58MW与设定值0.6MW的偏差主要来自线路损耗和方程精度在合理范围内。直流侧光伏注入0.8MW直流负荷消耗1.2MW换流站1和换流站2从交流侧净注入的功率总和正好平衡了直流网内部的功率差额和直流线路损耗全网功率平衡校验误差在1e-8以内说明程序计算逻辑正确。交流侧节点电压结果我也简单统计了一下33个交流节点的电压幅值都在0.95pu到1.03pu之间最低电压出现在远离平衡节点且靠近重负荷的节点18为0.9512pu没有越限最高电压在平衡节点附近。相比纯交流33节点网络接入VSC换流站后由于直流馈线承担了部分功率交流侧的潮流分布发生了一定的变化节点20附近的电压明显抬高这在实际工程中是常见的现象也是潮流计算能指导规划的依据。5. 常见问题与调试排坑实录5.1 不收敛的几类根因我在调试这套代码的过程中遇到过几次典型的死活不收敛问题根因各有不同但排查路径可以归纳成下面几类遇到类似问题可以直接对照。第一类是初始化电压和实际运行点偏差过大。直流网络电压初值给1.0pu但直流负荷和光伏的功率匹配导致实际直流电压可能只有0.92pu第一次迭代直流功率方程失配量会特别大雅可比矩阵中的直流部分偏导数值也很离谱导致修正量过大甚至震荡。解决办法是先用直流网络单独做一次简单功率平衡计算估算出大概电压水平再作为统一法的初值。哪怕只是粗略估算也能让收敛速度快很多。第二类是换流器控制方程的参考值设置和系统功率水平冲突。比如定有功功率的换流器设定值超过了交流侧该节点的可用容量或者使得直流侧总功率不平衡超过换流器直流电压调节能力范围这样的运行点物理上不存在统一法自然无法收敛。解决方法是先做一次功率平衡估算确定换流器功率设定值可行再上程序。第三类是交流侧节点类型设置错误把带换流器的交流节点误设成PV节点或者PQ节点但未把换流功率计入导致功率失配方程里缺了换流器的功率项。这种情况在Unit法里很常见因为换流站的接入会改变节点的功率注入结构必须在方程中显式加入换流器功率。第四类是迭代中出现阻尼比不合适的情况。虽然统一法理论上二阶收敛但当换流变阻抗很小时雅可比矩阵中换流器相关行会出现很大的数值差异矩阵条件数变差修正量可能过大。这种情况下可以在前几次迭代对修正量乘一个0.8的阻尼系数后面再放宽实测效果不错。5.2 直流侧矩阵奇异问题直流侧矩阵奇异是我踩过的一个比较隐蔽的坑。直流网络和换流站耦合时直流节点的功率方程并不是天然独立的。如果两个换流站都采用定有功-定无功控制那么直流网络没有换流站去维持直流电压直流电压方程会出现奇异或者形成浮空网络雅可比矩阵奇异程序直接报错或者解的数值完全离谱。同样如果直流侧存在一个纯负荷节点但没有任何换流站或分布式电源给它供电该节点在网络中就是悬浮节点。解决这个问题的原则其实很简单直流网络必须至少有一个换流站工作在定直流电压控制模式或者说直流侧必须存在一个电压源性质的节点作为直流平衡节点。如果潮流场景设计中所有的换流器都定功率则必须额外增加一个直流电压平衡设备或者改为下垂控制否则直流侧潮流无解。另外当直流网络由两条并联直流线路形成环网时如果直流导纳矩阵的行列式趋于零说明网络拓扑中存在冗余方程或者孤立节点需要重新检查直流拓扑编号。我建议在构造直流导纳矩阵后立刻计算det(Gdc)或者做LU分解判断是否奇异这一步成本很低但能在迭代前就暴露问题。5.3 Matlab实现中的工程细节优化最后分享几个我在Matlab实现中总结的工程细节能帮你少走弯路。矩阵用稀疏格式存储。统一求解法的雅可比矩阵规模是交流节点数、直流节点数和换流器数的叠加规模达到几百维时全稠密矩阵求解速度就开始明显下降上千维时内存开销和求解时间迅速膨胀。Matlab的sparse矩阵配合左除运算符对稀疏线性系统求解效率提升非常明显代码量几乎不变只要在组装完成后调用一次sparse()即可。符号约定要统一。换流器交流侧有功功率的方向我统一规定为正表示换流器从交流系统吸收有功功率负表示向交流系统注入有功功率。直流侧功率方向规定为正表示换流器从直流系统吸收功率。这个约定一旦统一雅可比矩阵里的符号就非常清楚不容易产生正负号打架的问题。如果在调试中遇到某一行残差符号恒反先检查这个方向约定。单元测试建议单独做。把换流器方程单独隔离出来用一组已知的U_s、U_c、δ、U_dc数据去手动计算方程右边再对比程序输出判断公式和符号是否正确。这个测试只需要几行代码但能解决大部分公式写错但不明显的问题。我自己的经验是先验证纯交流潮流模块再验证纯直流网络模块最后验证换流器桥接模块层层验收完后再做整体联调整个调试周期能缩短一半以上。数值容差和单位也需要注意。如果整个程序用的是标幺值系统所有电压、功率、阻抗都要按同一套基准值折算不要混用有名值和标幺值。我之前试过在换流器内部方程里用有名值而在交流侧用标幺值结果雅可比矩阵中耦合块的数量级差了好几个量级矩阵条件数恶化收敛精度直接受影响。再补充一个关于输出结果校验的经验。潮流问题算完后最重要的是做全网功率平衡校验交流侧所有发电机注入功率等于交流负荷功率加换流器交换功率加交流线路损耗直流侧所有换流器注入功率等于直流负荷功率加直流线路损耗。两边功率平衡误差在1e-6以下才能确定结果是可靠解。这一步必须做否则万一收敛到了一个错误的平稳点你根本不知道。我实际用这套代码测了多个不同拓扑的算例统一求解法在重负载场景下的表现确实稳定。交直流混合配电网这类系统的模型耦合程度决定了它天然适合整体联立求解只要把换流器方程和雅可比矩阵组装这两关过了后面会越用越顺。希望这份从建模到代码再到排坑的完整记录能帮你少啃几天理论、少掉几个头发坑。