⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psse2psat

📁 用于电力系统的一个很好的分析软件
💻
📖 第 1 页 / 共 3 页
字号:
	    $stt[$nline] = $data[15];	    print $ratio[$nline] . "\n";	}    } else {	$ratio[$nline] = 0;         # additional shunt admittance at "from" bus	if ($data[9] != 0 || $data[10] != 0) { 	    $nsh++;	    $idxsh[$nsh] = extended($data[0]);	    $psh[$nsh] = $data[9];		    $qsh[$nsh] = $data[10];			    $shu[$nsh] = ididx($idxsh[$nsh]);	}	# additional shunt admittance at "to" bus	if ($data[11] != 0 || $data[12] != 0) {	    $nsh++;	    $idxsh[$nsh] = extended($data[1]);	    $psh[$nsh] = $data[11];		    $qsh[$nsh] = $data[12];			    $shu[$nsh] = ididx($idxsh[$nsh]);	}	       	         }}   # transformer data PSS/E V29 and V30my (@data1,@data2,@data3,@data4,@data5);my (@bustw1,@bustw2,@bustw3,@twu);my ($ntw,$three_winding);my (@r12,@r23,@r13,@x12,@x23,@x13,@rt1a,@rt1b,@rt1c,    @rt2a,@rt2b,@rt2c,@rt3a,@rt3b,@rt3c);my ($nltc,@ltc_busfr,@ltc_busto,@ltc_busct,@ltc_r,@ltc_dm,    @ltc_x,@ltc_bas,@ltc_vma,@ltc_vmi,@ltc_ctr,@ltc_ref,@ltcu);my ($nphs,@phs_busfr,@phs_busto,@phs_r,@phs_x,@phs_bas,    @phs_vma,@phs_vmi,@phs_ref,@phsu);$ntw = -1;$nltc = -1;$nphs = -1;while ($flag_version >= V29) {    # read first line    $three_winding = 0;    $_ = <IN>;     chomp;    @data1 = mysplit($_);     # check for end of transformer data    if (extended($data1[0]) == 0) { last; }      # read second line    $_ = <IN>;    chomp;    @data2 = mysplit($_);    # read third line    $_ = <IN>;    chomp;    @data3 = mysplit($_);    # read fourth line    $_ = <IN>;    chomp;    @data4 = mysplit($_);    # check for three-winding transformers    if (int($data1[2]) != 0) {	$three_winding = 1;	$_ = <IN>;	chomp;	@data5 = mysplit($_);    }    if ($three_winding == 0) {	if (1) {	    # standard transformer PSS/E V29 and V30	    $nline++;	    $ntr++;	    $busfr[$nline] = extended($data1[0]);	    $bustt[$nline] = extended($data1[1]);            $stt[$nline] = ididx($busfr[$nline])*ididx($bustt[$nline]);	    if (abs($data3[6]) == 4) {		printf "DC line control for transformer #" . 		    $ntr . " is ignored.\n";	    }	    if ($flag_version >= V29) { 	        $stt[$nline] *= $data1[11]; 	    } else {	        $stt[$nline] *= $data[15];	    }	    $rest[$nline] = $data2[0];	    $reat[$nline] = $data2[1];	    $susc[$nline] = $data1[8];	    if ($data1[4] == 1) {		$ratio[$nline] = $data3[0];		if ($ratio[$nline] == 1) {		    if ($data4[0] != 0) {			$ratio[$nline] = $data4[0];		    }		}	    } else {		$ratio[$nline] = 1;			    }	    $phas[$nline] = 0.175*$data3[2];	    if ($data1[5] == 1) {		$lbas[$nline] = $pbas;		$ratea[$nline] = $data3[3]/$pbas;		$rateb[$nline] = $data3[4]/$pbas;		$ratec[$nline] = $data3[5]/$pbas;	    } elsif ($data1[5] == 2) {		$lbas[$nline] = $data2[2];		$ratea[$nline] = $data3[3]/$data2[2];		$rateb[$nline] = $data3[4]/$data2[2];		$ratec[$nline] = $data3[5]/$data2[2];	    } else {		$lbas[$nline] = $data2[2];		if ($data3[1] == 0) {		    $j = $kvbase{$busfr[$nline]};		} else {		    $j = $data3[1];				}		$h = $data2[2]*$data2[2]/3/$j/$j;		$rest[$nline] = $rest[$nline]/$h;		$ratea[$nline] = $data3[3]/$data2[2];		$rateb[$nline] = $data3[4]/$data2[2];		$ratec[$nline] = $data3[5]/$data2[2];		    }	} elsif (abs($data3[6]) == 3) {	    # phase shifting transformer PSS/E V29 and V30	    $nphs++;	    $phs_busfr[$nphs] = extended($data1[0]);	    $phs_busto[$nphs] = extended($data1[1]);	    $phs_r[$nphs] = $data2[0];	    $phs_x[$nphs] = $data2[1];	    $phs_vma[$nphs] = 0.175*$data3[8];	    $phs_vmi[$nphs] = 0.175*$data3[9];            $phsu[$nphs] = ididx($phs_busfr[$nphs])*ididx($phs_busto[$nphs]);	    if ($flag_version == V29) { 	        $phsu[$nphs] *= $data1[11]; 	    } else {	        $phsu[$nphs] *= $data[15];	    }	    if ($data1[5] == 1) {		$phs_bas[$nphs] = $pbas;	    } elsif ($data1[5] == 2) {		$phs_bas[$nphs] = $data2[2];	    } else {		$phs_bas[$nphs] = $data2[2];		if ($data3[1] == 0) {		    $j = $kvbase{$phs_busfr[$nphs]};		} else {		    $j = $data3[1];				}		$h = $data2[2]*$data2[2]/3/$j/$j;		$phs_r[$nphs] = $phs_r[$nphs]/$h;	    }   		    $phs_ref[$nphs] = 0.5*($data3[10]+$data3[11])/$phs_bas[$nphs];	} elsif (abs($data3[6]) == 1 || abs($data3[6]) == 2) {	    # under load tap changer PSS/E V29 and V30	    $nltc++;	    $ltc_busfr[$nltc] = extended($data1[0]);	    $ltc_busto[$nltc] = extended($data1[1]);	    $ltc_busct[$nltc] = extended($data3[7]);	    if ($ltc_busct[$nltc] == 0) {		$ltc_busct[$nltc] = $ltc_busto[$nltc];		    }	    $ltc_ctr[$nltc] = abs($data3[6]);	    if ($ltc_busct[$nltc] != $ltc_busfr[$nltc] || 		$ltc_busct[$nltc] != $ltc_busto[$nltc]) {		$ltc_ctr[$nltc] = 3;	    	    }	    $ltc_r[$nltc] = $data2[0];	    $ltc_x[$nltc] = $data2[1];	    $ltc_vma[$nltc] = $data3[8];	    $ltc_vmi[$nltc] = $data3[9];            $ltcu[$nphs] = ididx($ltc_busfr[$nltc])*ididx($ltc_busto[$nltc]);	    if ($flag_version == V29) { 	        $ltcu[$nltc] *= $data1[11]; 	    } else {	        $ltcu[$nltc] *= $data[15];	    }	    if (int($data3[12]) == 0) {		$ltc_dm[$nltc] = 0;	    } else {		$ltc_dm[$nltc] = 0; #($data3[8]-$data3[9])/$data3[12];	    }	    $ltc_ref[$nltc] = 0.5*($data3[10]+$data3[11]);	    if ($data1[5] == 1) {		$ltc_bas[$nltc] = $pbas;	    } elsif ($data1[5] == 2) {		$ltc_bas[$nltc] = $data2[2];	    } else {		$ltc_bas[$nltc] = $data2[2];		if ($data3[1] == 0) {		    $j = $kvbase{$ltc_busfr[$nltc]};		} else {		    $j = $data3[1];				}		$h = $data2[2]*$data2[2]/3/$j/$j;		$ltc_r[$nltc] = $ltc_r[$nltc]/$h;	    }    	    	}	    } else {	# three-winding transformer PSS/E V29 and V30	$ntw++;	$bustw1[$ntw] = extended($data1[0]);	$bustw2[$ntw] = extended($data1[1]);	$bustw3[$ntw] = extended($data1[2]);	$twu[$ntw] = $data1[11];	$x12[$ntw] = $data2[1]*$pbas/$data2[2];	$x23[$ntw] = $data2[4]*$pbas/$data2[5];	$x13[$ntw] = $data2[7]*$pbas/$data2[8];	if ($twu[$ntw] == 2) {	  $x12[$ntw] = 1000000;	  $x23[$ntw] = 1000000;	  $twu[$ntw] = 1;	}	if ($twu[$ntw] == 3) {	  $x13[$ntw] = 1000000;	  $x23[$ntw] = 1000000;	  $twu[$ntw] = 1;	}	if ($twu[$ntw] == 4) {	  $x13[$ntw] = 1000000;	  $x12[$ntw] = 1000000;	  $twu[$ntw] = 1;	}	if ($data1[5] == 3) {	    $j = $kvbase{$bustw1[$ntw]};	    $h = $data2[2]*$data2[2]/3/$j/$j;	    $r12[$ntw] = $data2[0]/$h;	    $j = $kvbase{$bustw2[$ntw]};	    $h = $data2[5]*$data2[5]/3/$j/$j;	    $r23[$ntw] = $data2[3]/$h;	    $j = $kvbase{$bustw3[$ntw]};	    $h = $data2[8]*$data2[8]/3/$j/$j;	    $r13[$ntw] = $data2[6]/$h;	} else {	    $r12[$ntw] = $data2[0]*$pbas/$data2[2];	    $r23[$ntw] = $data2[3]*$pbas/$data2[5];	    $r13[$ntw] = $data2[6]*$pbas/$data2[8];	}	$rt1a[$ntw] = $data3[3]/$pbas;	$rt1b[$ntw] = $data3[4]/$pbas;	$rt1c[$ntw] = $data3[5]/$pbas;	$rt2a[$ntw] = $data4[3]/$pbas;	$rt2b[$ntw] = $data4[4]/$pbas;	$rt2c[$ntw] = $data4[5]/$pbas;	$rt3a[$ntw] = $data5[3]/$pbas;	$rt3b[$ntw] = $data5[4]/$pbas;	$rt3c[$ntw] = $data5[5]/$pbas;   }}if ($flag_version <= V26) {     # for PSS/E V23-V26:    # under load tap changer and phase shifting transformer     while (<IN>) {	@data = mysplit($_);	last if /^\s*0/;            }}# area data all formats (PSS/E V23 - V30)while (<IN>) {    chomp;    @data = mysplit($_);    last if /^\s*0/;    $narea++;     $areaidx[$narea] = int($data[0]);    $areabus[$narea] = extended($data[1]);    $areapdes[$narea] = $data[2]/$pbas;    $areaptol[$narea] = $data[3]/$pbas;    $data[4] =~ s/\W$//;    $areaname[$narea] = $data[4];}# two terminal DC data all formats (PSS/E V23 - V30)while (<IN>) {   @data = mysplit($_);   last if /^\s*0/;        }if ($flag_version >= V29) { # PSS/E V29 and V30    # VSC DC line data     while (<IN>) {	@data = mysplit($_);	last if /^\s*0/;            }}# switched shunt data all formats (PSS/E V23 - V30)while (<IN>) {    @data = mysplit($_);    last if /^\s*0/;      #next if (ididx(int($data[0])));    #$j = pvidx(int($data[0]));    # add SVC only if there is no PV at the same bus    #if ($j) {    #printf "SVC at PV bus " . $data[0] . " will be ignored.\n" ;    #} elsif ($data[1] == 0) { # fixed SVCs are treated as a shunt    if ($flag_version >= V29 || $flag_version == V23) {	if ($data[6] =~ m/\'/) {	    # likely PSS/E V30 ...	    $flag_version = V30;	    $data[6] = $data[5];	}	if ($data[6] != 0) {	    $nsh++;	    $idxsh[$nsh] = extended($data[0]);	    $psh[$nsh] = 0;	    $qsh[$nsh] = $data[6]/$pbas;		    $shu[$nsh] = ididx($idxsh[$nsh]);	}    } elsif ($flag_version == V24)  {	if ($data[7] != 0) { 	    $nsh++;	    $idxsh[$nsh] = extended($data[0]);	    $psh[$nsh] = 0;		    $qsh[$nsh] = $data[5]/$pbas;		    $shu[$nsh] = ididx($idxsh[$nsh]);	}    }}# transformer impedance correction tableswhile (<IN>) {    @data = mysplit($_);    last if /^\s*0/;        }# multi-terminal dc line datawhile (<IN>) {    @data = mysplit($_);    last if /^\s*0/;        }# multisection line grouping datawhile (<IN>) {    @data = mysplit($_);    last if /^\s*0/;        }# zone datawhile (<IN>) {    chomp;    @data = mysplit($_);    last if /^\s*0/;    $nzone++;     $zoneidx[$nzone] = int($data[0]);    $data[1] =~ s/\W$//;    $zonename[$nzone] = $data[1];}# -----------------------------------------------------------------------# close input data file# -----------------------------------------------------------------------close(IN) || die "cannot close $ARGV[0]: $!\n";# -----------------------------------------------------------------------# open output data file# -----------------------------------------------------------------------print "Writing PSAT file \"$ARGV[1]\"...\n";carret();open(OUT,">$ARGV[1]") || die "cannot open $ARGV[1]: $!\n";# -----------------------------------------------------------------------# write output data file# -----------------------------------------------------------------------print OUT "% File generated by PSAT from PSS/E data file.\n";print OUT "% "."-" x 78 . "\n";print OUT "% Author:   Federico Milano\n";print OUT "% E-mail:   fmilano\@thunderbox.uwaterloo.ca\n";print OUT "% Web-site: http://thunderbox.uwaterloo.ca/~fmilano\n";print OUT "% Coauthor: Juan Carlos Morataya\n";print OUT "% E-mail:   jc.morataya\@ieee.org\n";print OUT "% "."-" x 78 . "\n";print OUT "% $title1\n";print OUT "% $title2\n";print OUT "% "."-" x 78 . "\n\n";# -----------------------------------------------------------------------# write Bus.con# -----------------------------------------------------------------------if ($nbus >= 0) {    print OUT "Bus.con = [ ...\n";    $format = "%4d %8.2f %8.5f %8.5f %2d %2d;\n";    for ($i = 0; $i <= $nbus; $i++) {	printf OUT $format,$busidx[$i],$kvb[$i],$ein[$i],$ang[$i],	$kae[$i],$kzo[$i];    }    print OUT "   ];\n\n";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -