简介:这是一份面向电力系统分析学习与备考的PDF技术文档,系统讲解潮流计算与三相短路电流计算程序的设计思路与实现过程。内容以3机9节点系统为算例,涵盖节点导纳矩阵Y的构建、节点阻抗矩阵求取、正常运行状态下的潮流计算,以及4号母线发生金属性三相短路时的精确算法与近似算法对比,并给出节点电压、相角、短路电流和支路电流等关键结果。文档为单个PDF文件,大小132KB,便于下载后随时查阅。已有363人学习这份资料,适合电气工程专业学生、考研复试人员及从事电网规划与运行的技术人员用于复习或工程参考。文档中的计算步骤与参数表格清晰完整,可辅助读者掌握基于节点导纳矩阵的电力系统计算程序编写方法。
1. 为什么3机9节点是短路电流计算绕不开的算例
做电力系统分析的人,迟早要和这个3机9节点系统打交道。它比单机无穷大系统多了环网结构,比IEEE 14节点系统又少了冗余的联络线,刚好卡在"手算能验证、编程不失控"的甜点上。这篇内容实际上是一个完整的课程设计:先用牛顿-拉夫逊法做潮流计算,得到正常运行时的节点电压;再把发电机等效为电流源并联电抗、负荷等效为恒阻抗,修改节点导纳矩阵后求逆得到阻抗矩阵,取出故障列计算三相短路电流;最后用精确算法和近似算法各算一遍,对比节点电压和支路电流分布的差异。对正在写MATLAB课程设计、准备电力系统分析考试,或者刚接手电网仿真建模的工程师来说,这个算例的价值在于:你能同时验证潮流计算、故障建模、矩阵修改三条技术线的正确性。
2. 节点导纳矩阵的组装与牛顿-拉夫逊潮流实现
2.1 支路参数的组织方式与导纳矩阵形成逻辑
这个算例用Excel文件作为输入源,两个Sheet分别存放支路参数和节点参数。第一个Sheet共9条支路,每条支路包含首节点编号、尾节点编号、电阻、电抗、对地导纳的一半。注意前三台变压器支路的B/2填的是1.0,这里其实是变压器变比折算后的等效处理,实际程序中把它当作线路的对地导纳直接累加到自导纳上,学有余力可以再研究一下变压器非标准变比的精确建模,但这个算例简化掉了,在课程设计答辩时能说清楚这一点反而是加分项。
n = 9; % 节点数 l = 9; % 支路数 Yn = zeros(n); % 初始化节点导纳矩阵 DATA1 = xlsread('input_data.xls', 1); for k = 1:l i = DATA1(k, 1); j = DATA1(k, 2); R = DATA1(k, 3); X = DATA1(k, 4); B2 = DATA1(k, 5); y = 1 / (R + 1i * X); % 串联导纳 Yn(i, i) = Yn(i, i) + 1i * B2 + y; % 自导纳叠加 Yn(j, j) = Yn(j, j) + 1i * B2 + y; Yn(i, j) = Yn(i, j) - y; % 互导纳为负的连接导纳 Yn(j, i) = Yn(j, i) - y; end这里的核心是自导纳等于所有连接支路导纳之和加对地导纳,互导纳等于连接导纳的负值。代码中1i是MATLAB的虚数单位,+1i*B2累加的是对地电容补偿,每一条支路两端各算一半,所以用B/2这个参数。实际工程中纯架空线路的对地电容不可忽略,这个累加逻辑直接决定了后面潮流和短路计算的精度起点。
2.2 节点分类与初值设置规则
第二个Sheet包含了节点类型、有功、无功、电压幅值、发电机暂态电抗和电势。这里要盯住节点类型的划分:节点1是平衡节点,节点2、3是PV节点,其余是PQ节点。潮流计算中不平衡量个数等于2乘PQ节点数加PV节点数,这个算例里PQ节点6个、PV节点2个,正好构成14维的修正方程组。
P = zeros(1, n); Q = zeros(1, n); U = ones(1, n); P(2:n) = DATA2(2:n, 3); % 除平衡节点外均给定有功 Q(4:n) = DATA2(4:n, 4); % PQ节点给定无功 U(1:3) = DATA2(1:3, 5); % 平衡节点和PV节点给定电压 e(1) = DATA2(1, 5); % 平衡节点电压实部直接给定 e(2:n) = 1.0; % 其余节点电压实部平启动 f(1:n) = 0.0; % 电压虚部初值全为零平启动是潮流计算最常见的初值策略:所有PQ节点电压设为1.0∠0°,PV节点电压设为给定幅值。这里DATA2(2:n, 3)直接读入负荷有功,注意PQ节点的注入功率在程序里被赋了负值,表示负荷吸收功率,这在后续计算deltaP和deltaQ时方向才不会搞反。
2.3 雅可比矩阵的20个数值元素与迭代收敛判据
牛顿-拉夫逊法的核心是反复求解J * dx = -fx。程序把不平衡量分为三块:PQ节点的有功不平衡量deltaP(2:n)、所有PQ节点的无功不平衡量deltaQ(4:n)、PV节点的电压幅值偏差deltaU2(2:3)。
for i = 2:n for j = 2:n if i ~= j H(i, j) = -(G(i, j) * e(i) + B(i, j) * f(i)); N(i, j) = B(i, j) * e(i) - G(i, j) * f(i); else H(i, j) = -a(i) - (G(i, i) * e(i) + B(i, i) * f(i)); N(i, j) = -c(i) + (B(i, i) * e(i) - G(i, i) * f(i)); end end endH和N是deltaP对电压实部e和虚部f的偏导,M和L对应deltaQ的偏导,R和S对应deltaU2的偏导。这里有一个容易踩坑的地方:对角线元素要比非对角线元素多算两项a(i)和c(i),它们分别代表节点注入电流的实部与虚部。程序里a(i)和c(i)在每次迭代前要先清空再累加,否则会残留上一轮的值。收敛判据是max(abs(fx)) < 0.0001,这个精度对课程设计足够,如果做工程分析建议收紧到1e-6。
3. 短路电流计算中的发电机与负荷建模处理
3.1 发电机三元件模型的物理含义
正常运行时的潮流计算结束后,得到的节点电压向量U0被保存在变量中,作为短路计算的基准输入。这里把发电机等效为电流源并联电抗,即诺顿等效模型:电流源幅值为E / (j * Xd),并联电纳为1 / (j * Xd)。这个模型对应的物理场景是次暂态过程,Xd是发电机的暂态电抗,E是暂态电势,在故障瞬间近似认为E保持不变。这是短路电流计算中最重要的工程假设之一,它把时变的电机暂态过程转化为一个线性电路问题。
f = 4; % 故障母线编号 zf = 0; % 金属性三相短路,过渡阻抗为零 Y = Yn; % 从潮流计算的节点导纳矩阵出发 for i = 1:3 % 修改发电机节点自导纳 Y(i, i) = Y(i, i) + 1 / (1i * Xd(i)); % 并联发电机次暂态电抗的倒数 end for j = 4:n % 修改负荷节点自导纳 Y(j, j) = Y(j, j) + (-P(j) + 1i * Q(j)) / (U(j) * U(j)); end这段代码里第一个循环修改节点1到3的自导纳,对应三台发电机的并联导纳;第二个循环修改节点4到9的自导纳,对应负荷的恒阻抗等效。注意负荷用(-P + jQ) / U^2形式计算导纳,这里P和Q就是负荷吸收的功率,带上负号是因为注入方向相反。U(j)是潮流计算得到的节点电压,用它除功率得到的是负荷在额定电压下的等值阻抗,这比直接用额定电压精确。
3.2 修改导纳矩阵时的盲区与处理
很多初学者在这里漏掉一个关键步骤:修改导纳矩阵时只操作了自导纳的对角线元素,但发电机支路如果是多节点连接,互导纳也要同步更新。这个算例的三台发电机都只在各自节点上并联电抗,不新增连接关系,所以只修改自导纳就够了。但如果发电机升压变压器连接到其他节点,就需要按普通支路的方式同时修改首尾两个节点的自导纳和互导纳。判断Y矩阵是否正确形成,可以直接看修正后的矩阵对角线元素:节点4从3.3074 - 39.3089i变成3.3074 - 39.3089i(没有负荷所以数值没变),节点5从2.5528 - 17.3382i变成3.8716 - 17.6627i(增加了负荷等效导纳),说明叠加逻辑正确。
这个算例里负荷节点4、7、9注入功率为零,它们的自导纳没有修改,对应程序中P(j)和Q(j)为零,计算出的负荷导纳自然为零,矩阵数值不变,是符合预期的。
3.3 阻抗矩阵与短路电流公式的矩阵论背景
形成修正后的Y矩阵之后,一步Z = Y^(-1)得到完整节点阻抗矩阵,然后取第4列。为什么只需要第4列?因为三相短路发生在节点4,评估故障对系统的影响只需要短路点与所有节点之间的互阻抗以及故障点的自阻抗。节点阻抗矩阵的第f列恰好完整包含了Z(1,f)到Z(n,f)这些信息。短路电流计算公式为If = U0(f) / (Z(f,f) + zf),其中U0(f)是故障前节点4的电压,zf是过渡阻抗,金属性短路时设为零。这是把故障点看作一个附加电流源注入点,利用叠加原理:故障后系统状态等于正常运行状态加上故障分量。
4. 精确算法与近似算法的计算差异对比
4.1 两种算法在程序实现上的分水岭
精确算法和近似算法在程序上只差一个参数设置:精确算法使用潮流计算得到每个节点的实际电压幅值U0(i),而近似算法把所有节点的电压都设为1.0∠0°(基准幅值)。这个差异直接决定了两种算法的精度边界。程序里先做精确计算,再把U0(1:n)全部赋值为1.0做近似计算,同一套阻抗矩阵跑两遍,对比结果。
% 精确计算 U0 = U; If = U0(f) / (Z(f, f) + zf); amp = abs(If); arg = atand(imag(If) / real(If)); % 短路电流相角计算 for i = 1:n U(i) = U0(i) - Z(i, f) * If; % 叠加原理计算故障后电压 end % 近似计算 U0(1:n) = 1.0; If = U0(f) / (Z(f, f) + zf); for i = 1:n U(i) = U0(i) - Z(i, f) * If; end故障后节点电压采用叠加原理:故障后电压等于正常运行电压减去阻抗矩阵第f列乘以短路电流。这个公式本质上是把短路电流当作在故障节点注入的负序等效源,利用线性网络的叠加性。精确算法中发电机节点1的电压不是1.04,而是由潮流计算得出的实际幅值1.04,但短路后它会跌落到0.1831,这说明短路点附近的电压支撑几乎消失。
4.2 短路电流、节点电压与支路电流的对比
精确算法计算出的短路电流模值为6.4459,相角-71.94度;近似算法得到模值6.2838,相角-69.72度。两者相差约2.5个百分点,这里的关键不在于数值大小,而在于方向:短路电流的相角接近纯感性,符合故障点电气距离近时电流以无功为主导的特征。用相角描述短路电流的作用是把有功和无功分离开,比如6.4459∠-71.94度分解后有功分量约2.0,无功分量约6.1,这对保护整定中确定功率方向很有价值。
节点电压方面,精确算法下节点1电压0.1831,近似算法下0.1611,差别约12%;节点4故障点电压都强制为零。两类算法的节点电压差异在短路点附近的发电机节点上达到最大,当网络拓扑改变时这一差异也会变化。
支路电流中,变压器支路1-4的电流是0.5779 - 3.1264i,模值约3.18,线路4-5的电流是-0.77968 + 1.5248i,模值约1.71。注意符号:正方向是从i到j,负实部或正虚部表示实际电流的相位偏移。保护工程师在现场看短路电流分布时,最关心的是哪些支路流过的短路电流超过设定阈值,这个程序可以用循环把所有支路电流算出来后按模值排序,直接抓取最严苛的运行条件。
4.3 计算结果的合理性检验方法
节点电压整体趋势可以验证:节点1电压最低0.1831,节点9电压0.4495,离故障点越远的节点电压保留得越高。这三个数据在物理上自洽:节点4短路后电压为零,故障电流经由变压器支路倒灌,发电机节点1电气距离最近、电压跌落最深。支路电流也应该满足基尔霍夫电流定律,对一个节点做电流进出平衡验算,能抓到矩阵组装或计算过程中的低级错误。
5. 从复现到改进:几个可以立即上手的优化方向
MATLAB用xlsread读Excel时经常报"未在本地计算机上注册Microsoft.Ace.OleDb.12.0提供程序",这是因为64位MATLAB下旧版xlsread依赖的是32位Access数据库引擎。要解决,优先换用readtable或readmatrix,它们不依赖OLE DB协议;如果必须用xlsread,去安装对应位数的Access Database Engine可再发行包,注意MATLAB版本与Office位数要匹配。更稳妥的做法是把数据改成CSV格式用csvread导入,电力系统算例的数据量完全没必要用Excel承载。
程序本身最值得改动的地方是数据驱动。现在l=9、n=9、m=6都是硬编码,换一个IEEE 14节点系统就要修改多处。可以把这些值设计为从数据文件读取:支路参数矩阵的尺寸即为l,节点参数矩阵的行数减1为n,PQ节点数量通过扫描节点类型列求和。这样同一个脚本直接兼容不同规模的算例系统。
可以做的另一个优化是短路电流灵敏度分析。节点阻抗矩阵的第f列已经包含了故障点到所有节点的电气距离信息,把第f列向量取出后,对第k个元素求模值,即abs(Z(k,f)),哪个节点数值大,说明故障对该节点电压影响小。把这列向量与支路电流计算结果结合,就能快速评估同一短路事件下不同母线的薄弱程度。
Zf = Z(:, 4); % 故障母线4对应的阻抗矩阵列 dist = abs(Zf) ./ max(abs(Zf)); % 归一化电气距离 bar(dist); title('故障母线4与其他节点的电气距离分布');这段代码用节点阻抗矩阵第4列实现电气距离的可视化。abs(Zf)的值越大,说明该节点与故障点之间的互阻抗越大,故障对该节点电压的影响越小,在规划阶段可以用来指导母线保护配置的优先级。bar函数出图后,横轴是节点编号,纵轴是归一化后的影响程度,肉眼一扫就能看出哪些节点是电气弱连接。
再进一步,可以把精确算法中潮流计算得到的电压幅值向量替换为实际运行方式下的SCADA量测值,就能直接用于在线短路电流校核。电力系统运行方式变化时,发电机出力和负荷水平都会改变节点电压分布,短路电流随之变化,这种方式比每次都全量重跑短路计算更快,适合作为调度运行决策的辅助工具。
本文还有配套的精品资源,点击获取