?? dycom.m
字號:
function dycompensation
clear all;
n=0;
fid=fopen('DATAmax.txt');
while feof(fid)==0 % 文件定位器不在文件結尾
line=fgetl(fid); % 讀出定位器所在行
if double(line(1))>=48&&double(line(1))<=57||double(line(1))==43||double(line(1))==45
n=n+1;
if n==1
PQ=line;
PQ=sscanf(PQ,'%f'); %列向量PQ中下標為奇數的元素表示P,為偶數的表示Q
n1=size(PQ)/2;
numPQ=n1(1); %每行PQ節點個數計數
for j=1:numPQ;
PQre(n,j)=PQ(2*j-1);
PQim(n,j)=PQ(2*j);
end
end
if n==2
S=line;
S=sscanf(S,'%f'); %列向量S中下標為奇數的元素表示P,為偶數的表示Q
n2=size(S)/2;
numS=n2(1); %平衡節點S個數計數
for j=1:numS
Sre(1,j)=S(2*j-1);
Sim(1,j)=S(2*j);
end
end
if n>=3
Yb=line;
Yb=sscanf(Yb,'%f');
n3=size(Yb)/2;
numYB=n3(1);
for j=1:numYB %節點導納矩陣行元素個數計數
YBre(n-2,j)=Yb(2*j-1); %節點導納矩陣實部
YBim(n-2,j)=Yb(2*j); %節點導納矩陣虛部
end
end
end
end
%///上面為讀取原始數據,形成節點導納矩陣程序;下面為低壓集中補償后潮流計算程序///
EEcopy=zeros(9);
PQcopy=zeros(2*numPQ,1);
PQcopy=PQ;
Qccopy=[0.00026 0.00038 4.723e-005 0.00113 6.762e-005 0.00052 5.407e-005 0.00046 0.00010] %低壓集中補償時各節點對應補償容量
flowoutput=fopen('dycompensationresult.txt','wt'); %創建補償后潮流計算結果dycompensationresult.txt文件
fprintf(flowoutput,'低壓集中無功補償方式下補償后潮流計算結果分析\n');
for m=2:10
fprintf(flowoutput,'選擇補償點為節點%g\n',m);
if m~=3&&m~=5&&m~=7&&m~=9
PQ((m-1)*2)= PQ((m-1)*2)+Qccopy(m-1);
else
if m==3
PQ(20)=0;
elseif m==5
PQ(22)=0;
PQ(24)=0;
PQ(26)=0;
PQ(28)=0;
PQ(30)=0;
else
if m==7
PQ(32)=0;
PQ(34)=0;
PQ(36)=0;
else
PQ(38)=0;
end
end
end
QP=zeros(2*numPQ,1);
for j=1:numPQ
QP(2*j-1)=PQ(2*j);
QP(2*j)=PQ(2*j-1);
end
E=ones(numPQ,1); %PQ節點的電壓和相位賦初值
F=zeros(numPQ,1);
P=zeros(numPQ,1);
Q=zeros(numPQ,1);
epQP=zeros(2*numPQ,1); %存放P、Q的不平衡量
epEF=zeros(2*numPQ,1); %存放PQ節點的節點電壓和相位的不平衡量
E1=1.12; %平衡節點1的節點電壓幅值和相位
F1=0;
k=0; %存放迭代次數
while k<=20
k=k;
for j=2:numPQ+1
sumP=E(j-1)*[YBre(j,1)*E1-YBim(j,1)*F1]+F(j-1)*[YBre(j,1)*F1+YBim(j,1)*E1];
sumQ=F(j-1)*[YBre(j,1)*E1-YBim(j,1)*F1]-E(j-1)*[YBre(j,1)*F1+YBim(j,1)*E1];
n=2;
while n<=numPQ+1
sumP=sumP+E(j-1)*[YBre(j,n)*E(n-1)-YBim(j,n)*F(n-1)]+F(j-1)*[YBre(j,n)*F(n-1)+YBim(j,n)*E(n-1)];
sumQ=sumQ+F(j-1)*[YBre(j,n)*E(n-1)-YBim(j,n)*F(n-1)]-E(j-1)*[YBre(j,n)*F(n-1)+YBim(j,n)*E(n-1)];
n=n+1;
end
P(j-1)=sumP;
Q(j-1)=sumQ;
epQP(2*(j-1)-1)=QP(2*(j-1)-1)-sumQ;
epQP(2*(j-1))=QP(2*(j-1))-sumP;
end
epQP=epQP;
if max(abs(epQP))<=1e-5
fprintf(flowoutput,'補償后各節點的電壓\n');
fprintf(flowoutput,'%g\n',E);
fprintf(flowoutput,'\n');
break;
else
B=[-1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -