?? basep_qpfc.m
字號:
%請輸入節點數:n=5
%請輸入支路數:nl=5
%請輸入平衡母線節點號:isb=1
%請輸入誤差精度:pr=0.0001
%請輸入由支路參數形成的矩陣:B1=[1 2 0.03i 0 1.05 0
% 2 3 0.08+0.3i 0.5i 1 0
% 2 4 0.1+0.35i 0 1 0
% 3 4 0.04+0.25i 0.5i 1 0
% 3 5 0.015i 0 1.05 1]
%第一列和第二列是節點編號,編號由小到大排列。
%第三列為支路串聯阻抗參數,第四列為支路對地導納參數。
%第五列為含有變壓器參數支路變壓器變比,第六列為是否含有變壓器的參數,其中1為含有變壓器,0為不含變壓器
%請輸入各節點參數形成的矩陣:B2=[0 0 1.05 1.05 0 1
% 0 3.7+1.3i 1.05 0 0 2
% 0 2+1i 1 0 0 2
% 0 1.6+0.8i 1.05 0 0 2
% 5 0 1.05 1.05 0 3]
%第一列為節點注入發電功率參數,第二列為節點負荷功率參數
%第三列為節點電壓參數,
%第六列為節點類型參數,1為平衡節點,2為PQ節點,3為PV節點
%請輸入P-Q節點數:na=3
%%P-Q分解法潮流計算
n=input('請輸入節點數:n=');
nl=input('請輸入支路數:nl=');
isb=input('請輸入平衡母線節點號:isb=');
pr=input('請輸入誤差精度:pr=');
B1=input('請輸入由支路參數形成的矩陣:B1=');
B2=input('請輸入各節點參數形成的矩陣:B2=');
na=input('請輸入P-Q節點數:na=');
Y=zeros(n);YI=zeros(n);%YI是不加接地支路的導納矩陣,Y是追加接地支路的導納矩陣
e=zeros(1,n);f=zeros(1,n);%
V=zeros(1,n);O=zeros(1,n);%
for i=1:nl
if B1(i,6)==0 %不含變壓器支路
p=B1(i,1);q=B1(i,2);
else p=B1(i,2);q=B1(i,1);%含變壓器支路
end
Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));
YI(p,q)=YI(p,q)-1./(B1(i,3));
Y(q,p)=Y(p,q);
YI(q,p)=YI(p,q);
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;
YI(q,q)=YI(q,q)+1./(B1(i,3));
Y(p,p)=Y(p,p)+1./(B1(i,3))+B1(i,4)./2;
YI(p,p)=YI(p,p)+1./(B1(i,3));
end
%求導納矩陣
G=real(Y);B=imag(YI);BI=imag(Y);
for i=1:n %計算功率
S(i)=B2(i,1)-B2(i,2);
BI(i,i)=BI(i,i)+B2(i,5);
end
P=real(S);Q=imag(S);
for i=1:n %賦初值
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);
end
for i=1:n %計算PQ節點電壓幅值和角度
if B2(i,6)==2
V(i)=sqrt(e(i)^2+f(i)^2);
O(i)=atan(f(i)./e(i));
end
end
for i=2:n %形成導納矩陣因子表
if i==n
B(i,i)=1./B(i,i);
else
IC1=i+1;
for j1=IC1:n
B(i,j1)=B(i,j1)./B(i,i);
end
B(i,i)=1./B(i,i);
for k=i+1:n
for j1=i+1:n
B(k,j1)=B(k,j1)-B(k,i)*B(i,j1);
end
end
end
end
p=0;q=0;%p,q重新賦初值0
for i=1:n
if B2(i,6)==2
p=p+1;k=0;
for j1=1:n
if B2(j1,6)==2
k=k+1;
A(p,k)=BI(i,j1);
end
end
end
end
for i=1:na
if i==na
A(i,i)=1./A(i,i);
else
k=i+1;
for j1=k:na
A(i,j1)=A(i,j1)./A(i,i);
end
A(i,i)=1./A(i,i);
for k=i+1:na
for j1=i+1:na
A(k,j1)=A(k,j1)-A(k,i)*A(i,j1);
end
end
end
end
ICT2=1;ICT1=0;kp=1;kq=1;K=1;DET=0;ICT3=1; %
while ICT2~=0|ICT3~=0 %~=表示不等于,|表示或
ICT2=0;ICT3=0;
for i=1:n
if i~=isb
C(i)=0;
for k=1:n
C(i)=C(i)+V(k)*(G(i,k)*cos(O(i)-O(k))+BI(i,k)*sin(O(i)-O(k)));%功率誤差方程
end
DP1(i)=P(i)-V(i)*C(i);
DP(i)=DP1(i)./V(i);
DET=abs(DP1(i));
if DET>=pr
ICT2=ICT2+1;
end
end
end
Np(k)=ICT2;
if ICT2~=0 %
for i=2:n
DP(i)=B(i,i)*DP(i);
if i~=n
IC1=i+1;
for k=IC1:n
DP(k)=DP(k)-B(k,i)*DP(i);
end
else
for LZ=3:i
L=i+3-LZ;
IC4=L-1;
for MZ=2:IC4
I=IC4+2-MZ;
DP(I)=DP(I)-B(I,L)*DP(L);
end
end
end
end
for i=2:n
O(i)=O(i)-DP(i);
end
kq=1;L=0;
for i=1:n
if B2(i,6)==2
C(i)=0;L=L+1;
for k=1:n
C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
end
DQ1(i)=Q(i)-V(i)*C(i);
DQ(L)=DQ1(i)./V(i);
DET=abs(DQ1(i));
if DET>=pr
ICT3=ICT3+1;
end
end
end
else
kp=0;
if kq~=0;
L=0;
for i=1:n
if B2(i,6)==2
C(i)=0;L=L+1;
for k=1:n
C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
end
DQ1(i)=Q(i)-V(i)*C(i);
DQ(L)=DQ1(i)./V(i);
DET=abs(DQ1(i));
end
end
end
end
Nq(K)=ICT3;
if ICT3~=0
L=0;
for i=1:na
DQ(i)=A(i,i)*DQ(i);
if i==na
for LZ=2:i
L=i+2-LZ;
IC4=L-1;
for MZ=1:IC4
I=IC4+1-MZ;
DQ(I)=DQ(I)-A(I,L)*DQ(L);
end
end
else
IC1=i+1;
for k=IC1:na
DQ(k)=DQ(k)-A(k,i)*DQ(i);
end
end
end
L=0;
for i=1:n
if B2(i,6)==2
L=L+1;
V(i)=V(i)-DQ(L);
end
end
kp=1;
K=K+1;
else
kq=0;
if kp~=0
K=K+1;
end
end
end
disp('迭代次數');
disp(K);
disp('每次沒有達到精度要求的有功功率個數為');
disp(Np);
disp('每次沒有達到精度要求的無功功率個數為');
disp(Nq);
for k=1:n
E(k)=V(k)*cos(O(k))+V(k)*sin(O(k))*j;
O(k)=O(k)*180./pi;
end
disp('各節點的電壓標幺值E為(節點號從小到達排列)');
disp(E);
disp('各節點的電壓大小V為(節點號從小到達排列)');
disp(V);
disp('各節點的電壓相角O為(節點號從小到達排列)');
disp(O);
for p=1:n
C(p)=0;
for q=1:n
C(p)=C(p)+conj(Y(p,q))*conj(E(q));
end
S(p)=E(p)*C(p);
end
disp('各節點的功率S為(節點號從小到達排列)');
disp(S);
disp('各條支路的首端功率Si為(順序與B1一樣):');
for i=1:nl
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else
p=B1(i,2);q=B1(i,1);
end
Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));
disp(Si(p,q));
end
disp('各條支路的末端功率Sj為(順序與B1一樣):');
for i=1:nl
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else
p=B1(i,2);q=B1(i,1);
end
Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./(B1(i,3)*B1(i,5))));
disp(Sj(q,p));
end
disp('各條支路的功率損耗DS為(順序與B1一樣):');
for i=1:nl
if B1(i,6)==0
p=B1(i,1);q=B1(i,2);
else
p=B1(i,2);q=B1(i,1);
end
DS(i)=Si(p,q)+Sj(q,p);
disp(DS(i));
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -