📄 sl14.m
字号:
clc
clear
% NODE; % TPYE V ANGEL PG QG PL QL SHUNT
% NODE TYPE PQ:1 PV:2 PH:3
% BRANCH; % i j R X B K
NODE=[
3 1.0600 0 0 0 0 0 0
2 1.0450 0 40.0000 0 21.7000 12.7000 0
2 1.0100 0 0 0 94.2000 19.0000 0
1 1.0000 0 0 0 47.8000 -3.9000 0
1 1.0000 0 0 0 7.6000 1.6000 0
2 1.0700 0 0 0 11.2000 7.5000 0
1 1.0000 0 0 0 0 0 0
2 1.0900 0 0 0 0 0 0
1 1.0000 0 0 0 29.5000 16.6000 0.1900
1 1.0000 0 0 0 9.0000 5.8000 0
1 1.0000 0 0 0 3.5000 1.8000 0
1 1.0000 0 0 0 6.1000 1.6000 0
1 1.0000 0 0 0 13.5000 5.8000 0
1 1.0000 0 0 0 14.9000 5.0000 0
];
BRANCH=[
2 1 .01938 .05917 .0264*2 1.000;
3 2 .04699 .19797 .0219*2 1.000;
4 2 .05811 .17632 .0187*2 1.000;
5 1 .05403 .22304 .0246*2 1.000;
5 2 .05695 .17388 .0170*2 1.000;
4 3 .06701 .17103 .0173*2 1.000;
5 4 .01335 .04211 .0064*2 1.000;
6 5 .00000 .25202 .0000 0.932;
7 4 .00000 .20912 .0000 0.978;
8 7 .00000 .17615 .0000 1.000;
9 4 .00000 .55618 .0000 0.969;
9 7 .00000 .11001 .0000 1.000;
10 9 .03181 .08450 .0000 1.000;
11 6 .09498 .19890 .0000 1.000;
12 6 .12291 .15581 .0000 1.000;
13 6 .06615 .13027 .0000 1.000;
14 9 .12711 .27038 .0000 1.000;
11 10 .08205 .19207 .0000 1.000;
13 12 .22092 .19988 .0000 1.000;
14 13 .17093 .34802 .0000 1.000;
] ;
x = size(NODE);
n = x(1);
m = length(find(NODE(:,1)==1));%PQ节点的个数
y = size(BRANCH);
G = zeros(n);
B = zeros(n);
for i=1:y(1)
ST = BRANCH(i,1);
ED = BRANCH(i,2);
R = BRANCH(i,3);
X = BRANCH(i,4);
BB = BRANCH(i,5);
K = 1/BRANCH(i,6);
RX2 = R^2+X^2;
G(ST,ED) = -K*R/RX2;
G(ED,ST) = -K*R/RX2;
B(ST,ED) = K*X/RX2;
B(ED,ST) = K*X/RX2;
G(ST,ST) = G(ST,ST) + R/RX2;
B(ST,ST) = B(ST,ST) - X/RX2;
B(ST,ST) = B(ST,ST) + BB/2;
G(ED,ED) = G(ED,ED) + K^2*R/RX2;
B(ED,ED) = B(ED,ED) - K^2*X/RX2;
B(ED,ED) = B(ED,ED) + BB/2;
end;
for i=1:n
B(i,i) = B(i,i) + NODE(i,8);
end; %求出节点导纳矩阵
Delta_P = zeros(n,1);
Delta_Q = zeros(n,1);
Delta_V_Ample = zeros(n,1);
Delta_V_Angle = zeros(n,1);
PP = find(NODE(:,1)<3); % PQ/PV 节点
QQ = find(NODE(:,1)==1); % PQ 节点
V_Ample = NODE(:,2);
V_Ample(QQ) = 1.0;
V_Angle = zeros(n,1);
Pis = NODE(:,4)/100;
Qis = NODE(:,5)/100;
Pld = NODE(:,6)/100;
Qld = NODE(:,7)/100;
Pis(PP) = Pis(PP) - Pld(PP);
Qis(QQ) = Qis(QQ) - Qld(QQ);
kp = 0;
kq = 0;
ep = 1e-6;
k = 0;
while(~(kp*kq)) %只要非1
k =k + 1;
Delta_V_Angle_ij = V_Angle*ones(1,n) - ( V_Angle*ones(1,n) )'; % 计算相角差矩阵
S = G.*cos(Delta_V_Angle_ij) + B.*sin(Delta_V_Angle_ij); % Sij = Gij *cos(delta_ij) + Bij *sin(delta_ij)
P = V_Ample.*(S*V_Ample); % P为计算出来的母线功率
Delta_P(PP) = Pis(PP) - P(PP); % 有功不平衡量
if max(abs(Delta_P))<ep % 有功不平衡量小于允许范围就做标记
kp = 1;
end;
if kp==0 % 有功不平衡量大于允许范围就作修正
Delta_V_Angle(PP) = -(B(PP,PP)\( Delta_P(PP)./V_Ample(PP) ))./V_Ample(PP); % 解修正方程
V_Angle(PP) = V_Angle(PP) + Delta_V_Angle(PP); % 修正相角
kq = 0; % 这是必须的,认为无功不平衡量还是不满足
end;
Delta_V_Angle_ij = V_Angle*ones(1,n) - ( V_Angle*ones(1,n) )'; % 计算相角差矩阵
T = G.*sin(Delta_V_Angle_ij) - B.*cos(Delta_V_Angle_ij); % Tij = Gij *sin(delta_ij) - Bij *cos(delta_ij)
Q = V_Ample.*(T*V_Ample); % Q为计算出来的母线功率
Delta_Q(QQ) = Qis(QQ) - Q(QQ); % 无功不平衡量
if max(abs(Delta_Q))<ep % 无功不平衡量小于允许范围就做标记
kq = 1;
end;
if kq==0 % 无功不平衡量大于允许范围就作修正
Delta_V_Ample(QQ) = -B(QQ,QQ)\(Delta_Q(QQ)./V_Ample(QQ)); % 解修正方程
V_Ample(QQ) = V_Ample(QQ) + Delta_V_Ample(QQ); % 修正幅值
kp = 0; % 这是必须的,认为有功不平衡量还是不满足
end;
[Delta_P(PP)',Delta_Q(QQ)';V_Ample(QQ)',V_Angle(PP)'*180/pi]; %每次迭代结果
end;
[V_Ample';NODE(:,2)';V_Ample'-NODE(:,2)';V_Angle'*180/pi;NODE(:,3)';V_Angle'*180/pi-NODE(:,3)']';
P = P+Pld;
Q = Q+Qld;
V = [V_Ample,V_Angle*180/pi,P*100,Q*100,Pld*100,Qld*100] % 母线全部信息,幅值、相角、发电有功、发电无功、负荷有功、负荷无功
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -