📄 pst2psat.m
字号:
Tq2 = mac_con(i,15); if Tq2 & Tq1 & Td2, ord = 6; elseif Tq2 & Td2, ord = 5.2; elseif Tq1 & Tq2, ord = 5.1; elseif Tq1, ord = 4; elseif Td1, ord = 3; else, ord = 2; end data = [mac_con(i,[2,3]),kV,60,ord,mac_con(i,[4:15]),2*mac_con(i,16), ... mac_con(i,[17]),0,0,mac_con(i,[22,23]),0]; count = fprintf(fid, [format, '];\n\n\n'],data);end% Induction motor data Mot.con% ------------------------------------------------------------------------if ~isempty(ind_con) & ~isempty(mld_con) & length(ind_con(:,1))==length(mld_con(:,1)) fm_disp('ind_con -> Mot.con') fm_disp(' Some approximations are used for induction motors:') fm_disp(' Check mechanical torque parameters before running the power flow.') nmot = length(ind_con(:,1)); nrow = length(ind_con(1,:)); if nrow < 15, ind_con = [ind_con,zeros(nmot,15-nrow)]; end format = ['%4d %8.4g %8.4g %8.4g %4d %4d %8.4g %8.4g %8.4g ' ... '%8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g']; ind_con = ind_con(mld_con(:,1),:); count = fprintf(fid, 'Mot.con = [ ...\n'); for i = 1:nmot-1 kV = bus(find(bus(:,1)==ind_con(i,2)),13); r2 = ind_con(i,10); x2 = ind_con(i,11); r1 = ind_con(i,4); if r2 | x2, ord = 5; elseif r1, ord = 3; else, ord = 1; end %sup = ind_con(i,15); %if sup, sup = 1; end sup = 1; data = [ind_con(i,[2,3]),kV,60,ord,sup,ind_con(i,[4,5,7,8,10,11,6,9]), ... mld_con(i,3),-mld_con(i,3),mld_con(i,5)]; count = fprintf(fid,[format, ';\n'],data); end i = nmot; kV = bus(find(bus(:,1)==ind_con(i,2)),13); r2 = ind_con(i,10); x2 = ind_con(i,11); r1 = ind_con(i,4); if r2 | x2, ord = 5; elseif r1, ord = 3; else, ord = 1; end sup = ind_con(i,15); if sup, sup = 1; end data = [ind_con(i,[2,3]),kV,60,ord,sup,ind_con(i,[4,5,7,8,10,11,6,9]), ... mld_con(i,3),-mld_con(i,3),mld_con(i,5)]; count = fprintf(fid,[format, '];\n\n\n'],data);end% Polinomial load data Pl.con% ---------------------------------------------------------------------if ~isempty(load_con) fm_disp('load_con -> Pl.con') format = ['%4d %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g ' ... '%8.4g %2d']; P = load_con(:,2); Q = load_con(:,3); Ip = load_con(:,4); Iq = load_con(:,5); idx = find(P+Q+Ip+Iq == 0); if ~isempty(idx) load_con(idx,:) = []; end npol = length(load_con(:,1)); if npol, count = fprintf(fid, 'Pl.con = [ ...\n'); end for i = 1:npol-1 kV = bus(find(bus(:,1)==load_con(i,1)),13); P = 100*load_con(i,2); Q = 100*load_con(i,3); Ip = 100*load_con(i,4); Iq = 100*load_con(i,5); data = [load_con(i,1),mvabas,kV,60,0,Ip,P,0,Iq,Q,1]; count = fprintf(fid, [format, ';\n'],data); end if npol kV = bus(find(bus(:,1)==load_con(npol,1)),13); P = 100*load_con(npol,2); Q = 100*load_con(npol,3); Ip = 100*load_con(npol,4); Iq = 100*load_con(npol,5); data = [load_con(npol,1),mvabas,kV,60,0,Ip,P,0,Iq,Q,1]; count = fprintf(fid, [format, '];\n\n\n'],data); endend% Automatic Voltage Regulator data Exc.con% -------------------------------------------------------------------if ~isempty(exc_con) fm_disp('exc_con -> Exc.con') idx = find(exc_con(:,1) < 3); nexc = length(idx); if nexc < length(exc_con(:,1)) fm_disp(['Model IEEE Type ST3 Exciters are approximated with AVR ' ... 'type III.']) end if nexc ~= 0 fm_disp('Model IEEE Type DC1 and DC2 Exciters are approximated with AVR type II.') end format = '%4d %4d %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g'; count = fprintf(fid, 'Exc.con = [ ...\n'); for i = 1:length(exc_con(:,1))-1 genn = find(mac_con(:,1) == exc_con(i,2)); if exc_con(i,1) < 3 Tf = exc_con(i,17); Te = exc_con(i,11); if ~Te & ~Tf data = [genn,3,exc_con(i,[8,9,4,5,7]),0,0,0,exc_con(i,3),0,0]; else data = [genn,2,exc_con(i,[8,9,4,5,16,17]),0, ... exc_con(i,[11,3]),0.0006,0.9]; end else data = [genn,3,exc_con(i,[8,9]),exc_con(i,[4,6,7]),0,0,0,0,0,0]; end if data(3) < 2.5 fm_disp('Found Vr_max < 2.5 p.u. -> reset to 2.5 p.u.') data(3) = 2.5; end if data(4) > -2.5 fm_disp('Found Vr_min > -2.5 p.u. -> reset to -2.5 p.u.') data(4) = -2.5; end count = fprintf(fid, [format, ';\n'],data); end i = length(exc_con(:,1)); genn = find(mac_con(:,1) == exc_con(i,2)); if exc_con(i,1) < 3 Tf = exc_con(i,17); Te = exc_con(i,11); if ~Te & ~Tf data = [genn,3,exc_con(i,[8,9,4,5,7]),0,0,0,exc_con(i,3),0,0]; else data = [genn,2,exc_con(i,[8,9,4,5,16,17]),0, ... exc_con(i,[11,3]),0.0006,0.9]; end else data = [genn,3,exc_con(i,[8,9]),exc_con(i,[4,6,7]),0,0,0,0,0,0]; end if data(3) < 2.5 fm_disp('Found Vr_max < 2.5 p.u. -> reset to 2.5 p.u.') data(3) = 2.5; end if data(4) > -2.5 fm_disp('Found Vr_min > -2.5 p.u. -> reset to -2.5 p.u.') data(4) = -2.5; end count = fprintf(fid, [format, '];\n\n\n'],data);end% Turbine Governor data Tg.con% ---------------------------------------------------------------------if ~isempty(tg_con) fm_disp('tg_con -> Tg.con') ntg = length(tg_con(:,1)); tg_con(:,4) = 1./tg_con(:,4); format = ['%4d %4d %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g']; count = fprintf(fid, 'Tg.con = [ ...\n'); for i = 1:ntg-1 gen = find(mac_con(:,1) == tg_con(i,2)); data = [gen,1,tg_con(i,[3,4,5]),0,tg_con(i,[6,7,8,9,10])]; count = fprintf(fid, [format, ';\n'],data); end i = ntg; gen = find(mac_con(:,1) == tg_con(i,2)); data = [gen,1,tg_con(i,[3,4,5]),0,tg_con(i,[6,7,8,9,10])]; count = fprintf(fid, [format, '];\n\n\n'],data);end% Power System Stabilizer data Pss.con% --------------------------------------------------------------------if ~isempty(pss_con) fm_disp('pss_con -> Pss.con') npss = length(pss_con(:,1)); format = ['%4d %4d %4d %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g ', ... '%8.4g ... \n %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %4d']; count = fprintf(fid, 'Pss.con = [ ...\n'); for i = 1:npss-1 exc = find(exc_con(:,2) == pss_con(i,2)); Kw = pss_con(i,3)/pss_con(i,4); data = [exc,2,pss_con(i,[1,9,10]),Kw, ... pss_con(i,[4,5,6,7,8]),0,0,0,0,0,0,0,0,0,0,0]; count = fprintf(fid, [format, ';\n'],data); end i = npss; exc = find(exc_con(:,2) == pss_con(i,2)); Kw = pss_con(i,3)/pss_con(i,4); data = [exc,2,pss_con(i,[1,9,10]),Kw, ... pss_con(i,[4,5,6,7,8]),0,0,0,0,0,0,0,0,0,0,0]; count = fprintf(fid, [format, '];\n\n\n'],data);end% Static Var Compensator data Svc.con% ---------------------------------------------------------------------if ~isempty(svc_con) fm_disp('svc_con -> Svc.con') nsvc = length(svc_con(:,1)); format = ['%4d %8.4g %8.4g %8.4g %4d %8.4g %8.4g %8.4g %8.4g ', ... '%8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g']; count = fprintf(fid, 'Svc.con = [ ...\n'); for i = 1:nsvc-1 kV = bus(find(bus(:,1)==svc_con(i,2)),13); Vref = bus(find(bus(:,1)==svc_con(i,2)),2); data = [svc_con(i,[2,3]),kV,60,1,svc_con(i,[7,6]), ... Vref,svc_con(i,[4,5]),0,0,0,0,0,0]; count = fprintf(fid, [format, '; \n'],data); end i = nsvc; kV = bus(find(bus(:,1)==svc_con(i,2)),13); Vref = bus(find(bus(:,1)==svc_con(i,2)),2); data = [svc_con(i,[2,3]),kV,60,1,svc_con(i,[7,6]), ... Vref,svc_con(i,[4,5]),0,0,0,0,0,0]; count = fprintf(fid, [format, ']; \n\n\n'],data);end% Switching operation data Breaker.con & Fault.con% -----------------------------------------------------------------------if ~isempty(sw_con) switch sw_con(2,6) case 5 fm_disp('For describing a loss of load use a perturbation file.') case 4 fm_disp('sw_con -> Breaker.con') format = '%4d %4d %4d %8.4g %8.4g'; linen = find(net_line(:,1) == sw_con(2,2) & ... net_line(:,2) == sw_con(2,3)); if isempty(linen) linen = find(net_line(:,2) == sw_con(2,2) & ... net_line(:,1) == sw_con(2,3)); end if isempty(linen), fm_disp('No line was found with the terminals as specified in sw_con') else kV = bus(find(bus(:,1)==sw_con(2,2)),13); data = [linen, sw_con(2,2),1,sw_con(2,1),sw_con(5,1)+1]; count = fprintf(fid, ['Breaker.con = [',format,'];\n\n\n'],data); end case 6 fm_disp('No fault operations.') otherwise fm_disp('sw_con -> Fault.con') switch sw_con(2,6) case 1 fm_disp('Line-to-ground fault is approximated as a three phase fault.') case 2 fm_disp('Line-to-line-to-ground fault is approximated as a three phase fault.') case 3 fm_disp('Line-to-line fault is approximated as a three phase fault.'), end format = '%4d %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g %8.4g'; kV = bus(find(bus(:,1)==sw_con(2,2)),13); data = [sw_con(2,2),mvabas,kV,60,sw_con(2,1),sw_con(4,1),0, 0]; count = fprintf(fid, ['Fault.con = [',format,'];\n\n\n'],data); end fm_disp('sw_con -> Settings') count = fprintf(fid, ['Settings.t0 = ',num2str(sw_con(1,1)),';\n']); count = fprintf(fid, ['Settings.tf = ',num2str(sw_con(5,1)),';\n']);end% end of operationscount = fclose(fid);fm_disp(['Conversion into data file "',pathname,newfile,'" completed.'])if Settings.beep, beep, end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -