攀枝花学院本科毕业设计(论文) 附录B:潮流计算子程序
+q_input(m);
end
q_input(m,1)=voltage(m,1)*q_input(m,1); end
q_correction=zeros(3,1); q_correction=q(1:3,1)-q_input; %% check for convergence F = [ p_correction;
q_correction ]; normF = norm(F, inf);
if normF < tol
fprintf('\\nNewton''s method power iterations.\\n', iteration);
return;%跳出对电压相角的计算 end
v2=v(1:3,1);
v_correction=zeros(3,1);
v_correction=b2*q_correction./v2;
voltage(1:3,1)=voltage(1:3,1)-v_correction; iteration=iteration+1; end
32
flow converged in %d 攀枝花学院本科毕业设计(论文) 附录C:支路功率计算子程序
附录C:支路传输功率计算子程序
%功能求支路流过的功率
%注明:1)pij和pji在数值上是不同的。2)默认i为z矩阵中的第一列元素,为低压侧数据,即默认branch_p中第一列总是存放:从低压侧到高压侧的支路功率
%以上的默认是对数据的结构体化,对数据的结构体一样固定其格式,便于对程序的优化,从中受益已不止一次。
function [branch_p,branch_q]=branch_s(v,ang,g,b0,y0,node_f,node_e) for m=1:5 %pij i=node_f, j=node_f
%为程序的可读性,设置如下3个中间变量;为方便模拟短线注入功率的求解将pij和qij设置为2*5的格式
n1=node_f(m,1); n2=node_e(m,1);
ang_mid=ang(n1,1)-ang(n2,1); %pij
branch_p(1,m)= v(n1,1)^2*g(n1,n2)-v(n1,1)*v(n2,1)*(g(n1,n2)*sin(ang_mid)+b0 (n1,n2)*sin(ang_mid));
%此处由于网络拓扑数据的特殊,没有电纳,故此处公式为简化后的公式 %qij
branch_q(1,m)=-v(n1,1)^2*(y0(n1,1)+b0(n1,n2))-v(n1,1)*v(n2,1)*(g(n1,n2)*sin (ang_mid)-b0(n1,n2)*cos(ang_mid));
%pji
branch_p(2,m)=v(n2,1)^2*g(n2,n1)-v(n2,1)*v(n1,1)*(g(n1,n2)*cos(-ang_mid)+b0
(n2,n1)*sin(-ang_mid));
%qji
branch_q(2,m)=-v(n2,1)^2*(y0(n2,1)+b0(n2,n1))-v(n2,1)*v(n1,1)*(g(n2,n1)*sin(-
ang_mid)-b0(n2,n1)*cos(-ang_mid));
end
33
攀枝花学院本科毕业设计(论文) 附录C:支路功率计算子程序
end
34
攀枝花学院本科毕业设计(论文) 附录D:支路开断时首末节点注入功率增量计算子函数
附录D:支路开断时首末节点注入功率增量计算子函数
function
[p_inject,q_inject]=simulink_dynamic(p,q,branch_p,branch_q,b0,b1,b2,y0,node_f,node_e)
p_inject=zeros(2,5); q_inject=zeros(2,5); for m=1:3
n1=node_f(m,1); n2=node_e(m,1);
p_inject(:,m)=inv(eye(2)-[-1,1;1,-1]*[b1(n1,n2),b1(n1,n2);b1(n2,n1),b1(n2,n2)]*b1(n1,n2))*branch_p(:,m);
c=1+2*y0(n1,1)/b0(n1,n2);
q_inject(:,m)=inv(eye(2)-[-c,1;1,-c]*[b2(n1,n1),b2(n1,n2);b2(n2,n1),b2(n2,n2)*b0(n1,n2)])*branch_q(:,m);
end
end
35
攀枝花学院本科毕业设计(论文) 附录E:修改节点注入功率子程序
附录E:修改节点注入功率子程序
%输入稳态时,节点注入功率, %输出断线后,节点注入功率
function[p_revise,q_revise]=pq_revise(p,q,p_inject,q_inject,node_f,node_e) p0=p; q0=q; for m=1:3
n1=node_f(m); n2=node_e(m);
p(n1,1)=p(n1,1)+p_inject(1,m); p(n2,1)=p(n2,1)+p_inject(2,m); p_revise(:,m)=p;
q(n1,1)=q(n1,1)+q_inject(1,m); q(n2,1)=q(n2,1)+q_inject(2,m); q_revise(:,m)=q; p=p0; q=q0; end end
36