ZIP基于电力系统潮流计算的IEEE14课程设计matlab程序(含牛顿拉夫逊法和PQ分解法进行极坐标分析)m0_616647807.17KB需要积分:1立即下载资源文件列表: IEEE14课程设计程序.zip 大约有8个文件 Correct.m 267B creat_Y.m 3.07KB IEEE14.m 3.86KB Jacobi.m 1.37KB line_power.m 317B power_flow.m 5.87KB PQ_LJ.m 505B Unbalanced.m 627B 资源介绍: 基于IEEE14设计的matlab程序代码 clc clear %% 读取数据 mpc = IEEE14; %% 初始化 %初始节点电压 [baseMVA,bus,gen,branch]=deal(mpc.baseMVA,mpc.bus,mpc.gen,mpc.branch);%复制各基准值 n=size(bus,1); %总节点数 b=0; c=0; m=0; y=zeros(n,n); U=bus(:,8)';%电压初始值由此确定 %电压相角 cita=bus(:,9)'; cita=(deg2rad(cita)); %角度转换成弧度 P_load=bus(:,3);Q_load=bus(:,4); S_load=zeros(n,1); S=zeros(n,1); S_gen=zeros(n,1); P_gen=zeros(n,1);Q_gen=zeros(n,1);%生成发电机节点初始量 for k=1:length(gen(:,1))%计算发电机节点数 P_gen(gen(k,1))=gen(k,2);%将P,Q数值赋予各矩阵 Q_gen(gen(k,1))=gen(k,3); end P=zeros(1,n); %P,Q为原始数据,Pi,Qi为计算结果 Q=zeros(1,n); for k=1:n P(k)=P_gen(k)-P_load(k);%生成支路功率 Q(k)=Q_gen(k)-Q_load(k); end [P,Q]=deal(P/baseMVA,Q/baseMVA);%多变量赋值 %% 求导纳矩阵 Ybus=zeros(n,n); Y=creat_Y(mpc); G=real(Y);%G为实部 B=imag(Y);% y=zeros(n,n); for i=1:n for j=1:n if i~=j y(i,j)=-Y(i,j); else y(i,j)=sum(Y(i,:)); end end end for i=1:n if bus(i,2)==2%PV节点数 b=b+1; PV(1,b)=i; end end for i=1:n if bus(i,2) == 1 m=m+1; %PQ节点数 PQ(1,m)=i; end end for i=1:n if bus(i,2)==3%平衡节点数 c=c+1; PH=i; end end a1=sortrows(bus,2);%重新进行排序 bus=a1;%更新节点顺序 U1=bus(:,8)';%求根据PQ节点排序在前的节点矩阵电压幅值 dS=[];%定义功率不平衡量 show_index=input('是否在命令行展示计算过程?1-是,0-否\n'); index=input('请选择潮流计算方法,1-极坐标下牛顿法,2-P-Q分解法\n'); %% 迭代求解潮流 fprintf('节点数:%d\n',n); disp(n); fprintf('PQ节点数:%d\n',m); disp(PQ); fprintf('PV节点数:%d\n',b); disp(PV); fprintf('PH节点数:%d\n',c); disp(PH); disp(bus); it=1;%初始的迭代次数 x=1; indexdiea=input('请输入最大迭代次数\n'); it_max=indexdiea; indexepr=input('请输入迭代收敛精度\n'); epr=indexepr;%迭代收敛精度 %% 计算功率不平衡量 [dP,dQ,Pi,Qi]=Unbalanced(n,m,P,Q,U,G,B,cita,bus); if show_index==1 disp('初始条件:');disp('各节点有功:');disp(P); disp('各节点无功:');disp(Q); disp('各节点电压幅值:');disp(U); cita=(deg2rad(cita)); %角度转换成弧度 disp('各节点电压相角(度):');disp(rad2deg(cita)); %显示依然使用角度 disp('节点导纳矩阵:'); disp(y); disp('有功不平衡量:'); disp(dP); disp('无功不平衡量:'); disp(dQ); end J=zeros(n+m-1,n+m-1); % index=1; while itepr && max(abs(dQ))>epr)) disp('潮流计算不收敛'); else Sij = line_power( n,y,U,cita );%支路功率的计算 Pij=real(Sij); Qij=imag(Sij); S=Pi'+1i*Qi';%各节点有功和无功功率 Bd=branch(:,5); f=0; h=size(branch,1); Sd=zeros(n,n); for i=1:n%各个节点对地电容功率计算 for j=1:n for p=1:h if (i==branch(p,1)&&j==branch(p,2)) f=f+1; Sd(i,j)=1i*Bd(f,1)*(U(1,i)^2)/2; Sd(j,i)=1i*Bd(f,1)*(U(1,j)^2)/2; end end end end S_load=deal(P_load/baseMVA)+deal(Q_load/baseMVA)*1i;%节点负荷功率的提取 k=size(gen,1); for i=1:n%发电机输出功率的提取 for j=1:k if i==gen(j,1) S_gen(i,1)=S(i,1)+S_load(i,1); end end end Sij=sparse(Sij); Sij1=Sij-Sd; S1=Sij+conj(Sij');%先对折相加,然后去对角线上的元素 S1=triu(S1);%算上对地电容求取的支路功率 fprintf('迭代总次数:%d\n', it); disp('节点导纳矩阵:'); disp(y);%节点导纳矩阵 disp('节点电压幅值:'); disp(sparse(U'));%节点电压的幅值 disp('节点电压相角:'); disp(rad2deg(cita)');%节点电压的相角 deg_cita = rad2deg(cita); deg_cita_range = max(deg_cita) - min(deg_cita);%计算极差 disp('相角的极差为:'); disp((deg_cita_range')); disp('节点注入有功计算结果:'); disp(Pi'); disp('节点注入无功计算结果:'); disp(Qi'); Pi_max = max(Pi); Pi_min = min(Pi); disp('有功功率最大值:'); disp(Pi_max); disp('有功功率最小值:'); disp(Pi_min); Qi_max = max(Qi); Qi_min = min(Qi); disp('无功功率最大值:'); disp(Qi_max); disp('无功功率最小值:'); disp(Qi_min); disp('各节点负荷功率:'); disp(sparse(S_load)); disp('各节点发电机功率'); disp(sparse(S_gen)); disp('支路功率计算结果:'); disp(sparse(Sij1))%生成支路功率 disp('网络损耗'); disp(sparse(S1)); disp('对地电容功率'); disp(sparse(Sd)); subplot(2,3,1);%画节点电压图 plot([1:length(U)],U,'.b-','LineWidth',0.8); xlabel('节点号') ylabel('节点电压'); subplot(2,3,2);%画节点相角图 plot([1:length(deg_cita)],deg_cita,'*m-','LineWidth',0.8); xlabel('节点号') ylabel('节点电压相角'); subplot(2,3,3);%画节点有功功率图 plot([1:length(Pi)],Pi,'+k-','LineWidth',0.8); xlabel('节点号') ylabel('节点有功功率'); subplot(2,3,4);%画节点无功功率的图 plot([1:length(Qi)],Qi,'.g-','LineWidth',0.8); xlabel('节点号') ylabel('节点无功功率'); subplot(2,3,5); plot([1:length(dS(:,1))],dS(:,1),'.c-','LineWidth',0.001); xlabel('迭代次数') ylabel('有功功率不平衡量'); subplot(2,3,6); plot([1:length(dS(:,2))],dS(:,2),'.r-','LineWidth',0.001); xlabel('迭代次数') ylabel('无功功率不平衡量'); end