39 lines
1.9 KiB
Matlab
39 lines
1.9 KiB
Matlab
function [kmax,Precision,Uangle,U,Busnum,PVi,PVu,Balance,Y,Angle,P0,Q0,r,c,GB,Linei,Linej,Transfori,Transforj,GenU,GenL,GenC,PG,QG,PD,QD,CenterA,PGi,PVQU,PVQL,Liner,Linex,Lineb,Transforr,Transforx,Transfork0]=pf(FileName)
|
||
%**************************************************************************
|
||
% 程序名称:电力系统潮流计算程序
|
||
% 程序算法:极坐标下的牛顿-拉夫逊法
|
||
% 程序功能:主函数
|
||
% 程序编者:
|
||
% 编制时间:2010.12
|
||
%**************************************************************************
|
||
%clc;
|
||
tic;
|
||
%% 读取数据文件
|
||
[Busnum,Balance,PQstandard,Precision,Linei,Linej,Liner,Linex,Lineb,kmax,Transfori ,...
|
||
Transforj,Transforr,Transforx,Transfork0,Branchi,Branchb,Pointpoweri,PG,QG,PD,QD,PVi,PVu,GenU,GenL,GenC,CenterA,PGi,PVQU,PVQL]= openfile(FileName);
|
||
%% 形成节点导纳矩阵
|
||
[GB,Y,r,c,Angle] = admmatrix(Busnum,Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,...
|
||
Transforx,Transfork0,Branchi,Branchb);
|
||
[P0,Q0,U,Uangle] = Initial(PG,PD,PQstandard,Pointpoweri,QG,QD,Busnum); %求功率不平衡量
|
||
%disp('迭代次数i 最大不平衡量');
|
||
%% 循环体计算
|
||
for i = 0:kmax
|
||
[Jacob,PQ,U,Uangle] = jacobian(Busnum,Balance,PVi,PVu,U,Uangle,Y,Angle,P0,Q0,r,c); %形成雅克比矩阵
|
||
% disp('第一次雅克比');
|
||
m = max(abs(PQ));
|
||
m=full(m);
|
||
%fprintf(' %u %.8f \n',i,m);
|
||
if m > Precision %判断不平衡量是否满足精度要求
|
||
[Uangle,U] = solvefun(Busnum,Jacob,PQ,Uangle,U); %求解修正方程,更新电压变量
|
||
else
|
||
%disp(['收敛,迭代次数为',num2str(i),'次']);
|
||
break %若满足精度要求,则计算收敛
|
||
end
|
||
end
|
||
toc;
|
||
PG=PG/PQstandard;
|
||
QG=QG/PQstandard;
|
||
PD=PD/PQstandard;
|
||
QD=QD/PQstandard;
|
||
end
|