📄 digsilent2psat
字号:
$kae[$nbus] = assign("ElmTerm",'pZone',1);
$busidxn{$busname[$nbus]} = $busidx[$nbus];
$kvbase{$busidxn{$busname[$nbus]}} = $kvb[$nbus];
}
}
# <$$ElmTr2> data card
# two winding transformer element data
$j = matching("ElmTr2");
if ($j == $n && $flgchk < 0) {
$crd = $n;
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$nline++;
$linename[$nline] = assign("ElmTr2",'typ_id',1);
$busfr[$nline] = assign("ElmTr2",'Station1',);
$bustt[$nline] = assign("ElmTr2",'Station2',);
$tpos[$nline] = assign("ElmTr2",'nntap',1);
$bsfr{$linename[$nline]} = $busfr[$nline];
$bstt{$linename[$nline]} = $bustt[$nline];
unless ($busfr[$nline]|| $bustt[$nline]) { $flgchk++; }
}
}
# <$$ElmTr3> data card
# three winding transformer element data
my (@twbus1,@twbus2,@twbus3);
$j = matching("ElmTr3");
if ($j == $n && $flgchk < 0) {
$crd = $n;
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$ntw++;
$linename[$ntw] = assign("ElmTr3",'typ_id',1);
$bustw1[$ntw] = assign("ElmTr3",'Station1',);
$bustw2[$ntw] = assign("ElmTr3",'Station2',);
$bustw3[$ntw] = assign("ElmTr3",'Station3',);
unless ($bustw1[$ntw] || $bustw2[$ntw] ||
$bustw3[$ntw]) { $flgchk++; }
}
}
# <$$ElmXnet> data card
$j = matching("ElmXnet");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$ElmZone> data card
# zone data
$j = matching("ElmZone");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$nzo++;
$kzonum[$nzo] = assign("ElmZone",'No',1);
$kzoname[$nzo] = assign("ElmZone",'Name',1);
$kzo{$kzoname[$nzo]} = $kzonum[$nzo];
}
}
# <$$IntRef> data card
$j = matching("IntRef");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$Cubicles> data card
$j = matching("Cubicles");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$TriCont> data card
$j = matching("TriCont");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$TypAsmo> data card
$j = matching("TypAsmo");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
}
}
# <$$TypLne> data card
# line type data
$j = matching("TypLne");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$nlpe++;
$linename[$nlpe] = assign("TypLne",'Name',1);
$r[$nlpe] = assign("TypLne",'rline',1);
$x[$nlpe] = assign("TypLne",'xline',1);
$c[$nlpe] = assign("TypLne",'cline',1);
$rate[$nlpe] = assign("TypLne",'sline',1);
$rest{$linename[$nlpe]} = $r[$nlpe] * $lght{$linename[$nlpe]};
$reat{$linename[$nlpe]} = $x[$nlpe] * $lght{$linename[$nlpe]};
# guessing f = 60 Hz.
$susc{$linename[$nlpe]} = 0.002652582937 * $c[$nlpe] *
$lght{$linename[$nlpe]};
$lnerate{$linename[$nlpe]} = $rate[$nlpe];
}
}
# <$$TypLod> data card
# load type data
$j = matching("TypLod");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$nmn++;
$loadtype[$nmn] = assign("TypLod",'Name',1);
$kpu[$nmn] = assign("TypLod",'kpu',0);
$kqu[$nmn] = assign("TypLod",'kqu',0);
$ktep{$loadtype[$nmn]} = $kpu[$nmn];
$kteq{$loadtype[$nmn]} = $kqu[$nmn];
if ($kpu[$nmn] == 0 && $kqu[$nmn] == 0) { $nmn = -1; }
}
}
# <$$TypSym> data card
# sinchronous machine type data
$j = matching("TypSym");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$ndyn++;
$symname[$ndyn] = assign("TypSym",'Name',1);
$pbas[$ndyn] = assign("TypSym",'sgn',100);
$xd[$ndyn] = assign("TypSym",'xd',1.9);
$xq[$ndyn] = assign("TypSym",'xq',1.7);
$xdsss[$ndyn] = assign("TypSym",'xdsss',0.204);
$rstr[$ndyn] = assign("TypSym",'rstr',0);
$xdsat[$ndyn] = assign("TypSym",'xdsat',0);
$satur[$ndyn] = assign("TypSym",'satur',0); # Machine IEC909
$pbase{$symname[$ndyn]} = $pbas[$ndyn];
}
}
# <$$TypTr2> data card
# two winding transformer type data
$j = matching("TypTr2");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$nttf = $nline;
$nttf++;
$linename[$nttf] = assign("TypTr2",'Name',1);
$pbas[$nttf] = assign("TypTr2",'strn',100); # [MVA]
$kv1[$nttf] = assign("TypTr2",'utrn_h',1); # [kV]
$kv2[$nttf] = assign("TypTr2",'utrn_l',1);
$uktr[$nttf] = assign("TypTr2",'uktr',0); # [%]
$pcutr[$nttf] = assign("TypTr2",'pcutr',0); # [kW]
$phs[$nttf] = assign("TypTr2",'nt2ag',0);
# parameters * * short circuit test * *
$inomtr = 1000*$pbas[$nttf]/$kv1[$nttf]; # [A]
$zn = 10*$uktr[$nttf]*$kv1[$nttf]/$inomtr; # [Ohm]
$r[$nttf] = 1000*$pcutr[$nttf]/$inomtr**2; # [Ohm]
$x[$nttf] = sqrt($zn**2 - $r[$nttf]**2); # [Ohm]
# relations
$rest{$linename[$nttf]} = $r[$nttf];
$reat{$linename[$nttf]} = $x[$nttf];
$susc{$linename[$nttf]} = $c[$nttf];
$lnerate{$linename[$nttf]} = $rate[$nttf];
$phsf{$linename[$nttf]} = $phs[$nttf]/30;
$pbase{$linename[$nttf]} = $pbas[$nttf];
}
}
# <$$TypTr3> data card
# three winding transformer type data
$j = matching("TypTr3");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$ntwf++;
$tr3wname[$ntwf] = assign("TypTr3",'Name',1);
$rt3a[$ntwf] = assign("TypTr3",'strn3_h',100);
$rt3b[$ntwf] = assign("TypTr3",'strn3_m',100);
$rt3c[$ntwf] = assign("TypTr3",'strn3_m',100); # [MVA]
$kv1[$ntwf] = assign("TypTr3",'utrn3_h',1); # [kV]
$kv2[$ntwf] = assign("TypTr3",'utrn3_m',1);
$kv3[$ntwf] = assign("TypTr3",'utrn3_l',1);
$uktrh[$ntwf] = assign("TypTr3",'uktr3_h',1); # [%]
$uktrm[$ntwf] = assign("TypTr3",'uktr3_m',1);
$uktrl[$ntwf] = assign("TypTr3",'uktr3_l',1);
$pcuth[$ntwf] = assign("TypTr3",'pcut3_h',1); # [kW]
$pcutm[$ntwf] = assign("TypTr3",'pcut3_m',1);
$pcutl[$ntwf] = assign("TypTr3",'pcut3_l',1);
#$phsf[$ntwf] = assign("TypTr3",'nntap0',1);
# parameters * * short circuit test * *
# currents through the windings
$inomtrh = 1000 * $rt3a[$ntwf]/$kv1[$ntwf]; # [A]
$inomtrm = 1000 * $rt3b[$ntwf]/$kv2[$ntwf];
$inomtrl = 1000 * $rt3c[$ntwf]/$kv3[$ntwf];
# r12,x12
$zn = 10 * ($pbas/$kv1[$ntwf]**2) *
$uktrh[$ntwf] * $kv1[$nttf]/$inomtrh; # [pu]
$r12[$ntwf] = 1000 * ($pbas/$kv1[$ntwf]**2) *
$pcuth[$ntwf]/$inomtrh**2; # [pu]
$x12[$ntwf] = sqrt($zn**2 - $r12[$ntwf]**2); # [pu]
# r23,x23
$zn = 10 * ($pbas/$kv1[$ntwf]**2) *
$uktrm[$ntwf] * $kv1[$nttf]/$inomtrm; # [pu]
$r23[$ntwf] = 1000 * ($pbas/$kv2[$ntwf]**2) *
$pcutm[$ntwf]/$inomtrm**2; # [pu]
$x23[$ntwf] = sqrt($zn**2 - $r23[$ntwf]**2); # [pu]
# r13,x13
$zn = 10 * ($pbas/$kv1[$ntwf]**2) *
$uktrl[$ntwf] * $kv1[$nttf]/$inomtrl; # [pu]
$r13[$ntwf] = 1000 * ($pbas/$kv1[$ntwf]**2) *
$pcutl[$ntwf]/$inomtrl**2; # [pu]
$x13[$ntwf] = sqrt($zn**2 - $r13[$ntwf]**2); # [pu]
$rt3c[$ntwf] / $kv3[$ntwf]**2;
# relations
$r12{$tr3wname[$ntwf]} = $r12[$ntwf];
$x12{$tr3wname[$ntwf]} = $x12[$ntwf];
$r23{$tr3wname[$ntwf]} = $r23[$ntwf];
$x23{$tr3wname[$ntwf]} = $x23[$ntwf];
$r13{$tr3wname[$ntwf]} = $r13[$ntwf];
$x13{$tr3wname[$ntwf]} = $x13[$ntwf];
$rt3a{$tr3wname[$ntwf]} = $rt3a[$ntwf]/$pbas;
$rt3b{$tr3wname[$ntwf]} = $rt3b[$ntwf]/$pbas;
$rt3c{$tr3wname[$ntwf]} = $rt3c[$ntwf]/$pbas;
$susc{$tr3wname[$ntwf]} = $c[$ntwf];
$lnerate{$tr3wname[$ntwf]} = $rate[$ntwf];
}
}
# <$$Graphic>; data card
# graphic data (future versions can include
# simulink model conversion)
$j = matching("Graphic");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$GraphCon>; data card
$j = matching("GraphCon");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$OP_ElmAsm> data card
$j = matching("OP_ElmAsm");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$OP_ElmCoup> data card
$j = matching("OP_ElmCoup");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
}
}
# <$$OP_ElmLod> data card
# load operational data
$j = matching("OP_ElmLod");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$j = pqidx(assign("OP_ElmLod",'Name',1));
if ($j >= 0) {
# add powers if there are multiple
# PQ loads at the same bus
$pqpl[$j] += assign("OP_ElmLod",'plini',1)/$pbas;
$pqql[$j] += assign("OP_ElmLod",'qlini',1)/$pbas;
} else {
$nopq++;
$pqname[$nopq] = assign("OP_ElmLod",'Name',1);
$pqpl[$nopq] = assign("OP_ElmLod",'plini',1)/$pbas;
$pqql[$nopq] = assign("OP_ElmLod",'qlini',1)/$pbas;
}
}
}
# <$$OP_ElmShnt> data card
# shunt operational data
$j = matching("OP_ElmShnt");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
}
}
# <$$OP_ElmSym> data card
# sinchronous machine operational data
$j = matching("OP_ElmSym");
if ($j == $n && $flgchk < 0) {
while (<IN>) {
next if /^\*+/;
next if /^\*+\s+\w+/;
next if /^.$/;
last if /^\$\$/;
@data = mysplit($_);
$j = pvidx(assign("OP_ElmSym",'Name',1));
if ($j >= 0) {
# add powers if there are multiple
# PV generators at the same bus
$pvpg[$j] += assign("OP_ElmSym",'pgini',1)/$pbas;
$pvqg[$j] += assign("OP_ElmSym",'qgini',1)/$pbas;
$pvqt[$j] += assign("OP_ElmSym",'q_min',1)/$pbas;
$pvqb[$j] += assign("OP_ElmSym",'q_max',1)/$pbas;
} else {
$nopv++;
$symname[$nopv] = assign("OP_ElmSym",'Name',1);
$pvsb[$nopv] = $pbase{$symname[$nopv]};
$symstt[$nopv] = assign("OP_ElmSym",'outserv',1);
$opmode[$nopv] = assign("OP_ElmSym",'iv_mode',99);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -