電力系統(tǒng)潮流計算C語言程序及說明_第1頁
電力系統(tǒng)潮流計算C語言程序及說明_第2頁
電力系統(tǒng)潮流計算C語言程序及說明_第3頁
電力系統(tǒng)潮流計算C語言程序及說明_第4頁
電力系統(tǒng)潮流計算C語言程序及說明_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

實驗目的

根據(jù)所給的電力系統(tǒng),編制潮流計算程序,通過計算機進行調(diào)試,最后完成一個切實可行的電力系

統(tǒng)計算應用程序。通過自己設計電力系統(tǒng)計算程序使同學對電力系統(tǒng)分析有進一步理解,同時加強計算

機實際應用能力的訓練。

程序計算原理

1、概述

應用計算機進行電力系統(tǒng)計算,首先要掌握電力系統(tǒng)相應計算的數(shù)學模型;其次是運用合理的計算

方法;第三那么是選擇適宜的計算機語言編制計算程序。

建立電力系統(tǒng)計算的相關數(shù)學模型,就是建立用于描述電力系統(tǒng)相應計算的有關參數(shù)間的相互關系

的數(shù)學方程式。該數(shù)學模型的建立往往要突出問題的主要方面,即考慮影響問題的主要因素,而忽略一

些次要因素,使數(shù)學模型既能正確地反映實際問題,又使計算不過于復雜。

運用合理的計算方法,就是要求所選用的計算方法能快速準確地得出正確結果,同時還應要求在解

算過程中占用內(nèi)存少,以利提高計算機的解題規(guī)模。

選擇適宜的語言編寫程序,就是首先確定用什么計算機語言來編制程序;其次是作出計算的流程圖;

第三根據(jù)流程圖用選擇的語言編寫計算程序。然后上機調(diào)試,直到語法上無錯誤。本程序采用C語言進

行編程。

所編制的程序難免存在邏輯錯誤,因此先用一個結果的系統(tǒng)作為例題進行計算。用程序計算的結果

和結果相比擬,如果結果相差甚遠就要逐步分析程序的計算步驟,查出問題的出處:如果結果比擬接近,

那么逐步分析誤差來源;直到結果正確為止。

2、電力系統(tǒng)潮流計算的程序算法

潮流計算是電力系統(tǒng)分析中的一種最根本的計算,它的仟務是對給定的運行條件確定系統(tǒng)的運行狀

態(tài),如母線上的電壓(幅值及和角)、網(wǎng)絡中的功率分布及功率損耗等。

目前計算機潮流計算的方法主要有牛頓-拉夫遜算法和PQ分解法。牛頓-拉夫遜算法是數(shù)學上求解

非線形方程組的有效方法,具有較好的收斂性,曾經(jīng)是潮流計算中應用比擬普遍的方法。PQ快速分解

法是從牛頓-拉夫遜算法演變而又的,是將純數(shù)學的牛頓-拉夫遜算法與電力系統(tǒng)具體特點相結合并進行

筒化與改良而得出的。PQ快速分解法比牛頓-拉夫遜算法大大提高了計算速度和節(jié)省了內(nèi)存,故而本程

序以PQ快速分解法進行潮流計算。

1)形成節(jié)點導納矩陣

(1)自導納的形成

對節(jié)點i其自導納丫訂是節(jié)點i以外的所有節(jié)點都接地時節(jié)點i對地的總導納。顯然,丫訕應等于與節(jié)

點i相接的各支路導納之和,即%=,。+2為

J

式中,yio為節(jié)點i與零電位節(jié)點之間的支路導納;〉看為節(jié)點i與節(jié)點j之間的支路導納。

(2)互導納的形成

對節(jié)點i與節(jié)點k之間的互導納是節(jié)點i、k之間的支路導納的負值,即%.二-%

小難理解%=%。假設節(jié)點i和k沒有支路直接相連時,使有Yik=O

(3)含變壓器支路的處理

假設節(jié)點p、q間接有變壓器,如以下圖所示,那么可作巴其n型等值電路為:

圖1變壓器n型等值電路

那么p、q的自導納和節(jié)點間的互導納分別為

2)計算不平衡功率AP、△()并形成修正方程式

對每一個PQ節(jié)點或每一個PV節(jié)點都可以根據(jù)以下公式計算出有功功率增量4P

而對于每一個PQ節(jié)點還可以根據(jù)下面的公式計算出無功功率增量4Q

在有功功率增量和無功功率增量不滿足如下約束條件時

利用PQ分解法那么可以形成如下修正方程

3)利用因子表法求解修正方程

在電網(wǎng)計算中經(jīng)常遇到這樣的問題,對方程組需要反復屢次求解,而每次求解僅改變常數(shù)項F,系

數(shù)矩陣保持不變。按照?般的高斯消去法,對每?改變的常數(shù)項,形成包括常數(shù)項及系數(shù)矩陣在內(nèi)的增

廣矩陣,然后消去回代求出其解??梢钥闯觯看螌υ鰪V矩陣中A矩陣元素的消元都是重復的,為了防

止這種重復,我們把對相同的系數(shù)矩陣重復進行的消去與對不同的常數(shù)項進行的消去分開進行,因此對

系數(shù)矩陣的消去只需進行一次,并在消去的過程中將對常數(shù)項進行消去運算的運算囚子保存下來,形成

所謂因子表,這就是因子表法。因為因子表記錄了高斯消去法對常數(shù)項進行消去的全部信息,利用它便

可對不同常數(shù)項進行消去,形成上三角矩陣,最后求出全部未知數(shù)。

在使用PQ分解法時,其系數(shù)矩陣是在迭代過程中保持不變的,所以為了節(jié)省內(nèi)存和縮短運算時間

我們采取了因子表法。同時由于電網(wǎng)的節(jié)點導納矩陣矩陣是稀疏陣和對稱陣,于是我們可以采取只保存

系數(shù)矩陣的上三角陣來使運算更為簡化。

假設線性方程組一般形式如下:

%al2%…

a22a23…

其中4=%3稱為系數(shù)矩陣,X=[%/芻-NJ'稱為未知數(shù)向量,

F=[f\f2f3?,/「稱為常數(shù)項向量。將矩陣A的元素進行如下處理:

得到因子表

其中&=1/4),4=碎(/</);

再利用因子表進行前代過程,求出每次迭代后的常數(shù)項。其前代公式是:

求得向量產(chǎn)二[力⑴力⑵力⑶一廣")了;

再由因子表與前代得到的向量E得到方程組

求解出此方程即可■得到線性方程組的解向量X=[%%七毛丫。

4)屢次迭代最終求得V和b以及全線路功率

利用上面所介紹的方法求解修正方程組

可以求得=A%▲匕…▲匕J和▲名也工維丁。

再利用葉=3尸+.0產(chǎn),匕“包=匕⑷+3匕⑷求得每次迭代后的結果。屢次迭代當其滿足約束

條件max{4'<j,和max{L2“[}<%時,迭代結束。迭代結束后即可得到各節(jié)點的V和鼠再

根據(jù)V、b來計算PV節(jié)點的無功功率Q和平衡節(jié)點的功率以及網(wǎng)絡中的功率分布。

PV節(jié)點及平衡節(jié)點無功功率計算公式為:

平衡節(jié)點有功功率計算公式為:

以以下圖所標示的正方向,輸電線路功率的計算公式如下:

圖2支路功率計算

對其進行實部虛部進行分解可.得P、Q計算公式為:

程序及說明

1、主要變量說明

1)結構體類型說明

(1)節(jié)點功率結構體

structNodetypc

(

floatRQ;

};

其中,P為節(jié)點的有功功率,Q為無功功率。節(jié)點功率不區(qū)分負荷功率和發(fā)電機功率,其值為本節(jié)

點連接的各支路輸入功率及節(jié)點所接負荷、發(fā)電機功率之和,且規(guī)定功率流入節(jié)點為正,流出為負。詳

細說明參見下一章“算例及結果”的第二節(jié)“源數(shù)據(jù)格式說明”。

(2)線路參數(shù)結構體

structLinetype

(

floatG,B,B0,k;

I;

其中,G、B為線路的導納和容納;B0為線路的考慮變壓器n型等值電路后的對地充電容納的?半

Bc/2;k為折算到標準變壓器支路后的變壓器變比。詳細說明參見下一章“算例及結果”的第二節(jié)“源

數(shù)據(jù)格式說明”。

2)變量說明

表2程序主要變量說明

主要變量類型含義

Nodeint系統(tǒng)總節(jié)點數(shù)

NPintPV+PQ節(jié)點數(shù),即非平衡節(jié)點數(shù)

NQintPQ節(jié)點數(shù)

Numint*原始節(jié)點編號與程序表示編號映射數(shù)組

NostructNodelype*節(jié)點功率數(shù)組

Vfloat*節(jié)點電壓有效值數(shù)紐

Ditafloat*節(jié)點電壓相角數(shù)組

YstructLinetype**線路參數(shù)矩陣

圖4迭代局部流程圖

4、程序代碼

/*FUNCTION:POWERFLOW*/

/*WRITTENBY:HUANG&YANG&TONG*/

/*LASTEDITED:2008-11-24*/

#include<stdio.h>

#include<math.h>

/***宏定義***/

#defineeP0.000()1

#defineeQ0.00001

#dcfineY_(ij)(*(*(Y+i)-i+j))

#dcfincYij(*(Yiij))

#defineYji(*(*(Y+j)-j+i))

#definePjiYji.G*cos(tmp)+Yji.B*sin(tmp)

#definePijYij.G*cos(tmp)4-Yij.B*sin(tmp)

#defineQjiYji.G*sin(tmp)-Yji.B*cos(tmp)

#defineQijYij.G*sin(tmp)-Yij.B*cos(tmp)

/***結構體變量定義***/

structNodetype/*節(jié)點功率*/

(

iloaiP,Q;

};

structLinetype/*線路類型*/

floatGB,B0,k;

};

/***子函數(shù)聲明***/

voidin_node();/*讀節(jié)點功率*/

voidin_line();/*讀線路參數(shù)號

voidB_Form();/*生成BP、BQ矩陣*/

voidfactor();/*求因子表*/

voidsolve(float**B,float*X,intN);/*解方程組*/

voidPrtNodeO;/*打印節(jié)點參數(shù)*/

voidErrorMsg(intFlag);/*錯誤提示信息*/

/***全局變量聲明***/

intNode;/*節(jié)點數(shù)*/

int*Num;/*保存原始節(jié)點序號*/

intNP,NQ=0;/*PV+PQ、PQ節(jié)點數(shù)*/

structNodetype*No;/*節(jié)點數(shù)據(jù)*/

structLinetype**Y;/*線路參數(shù)號

float**BP,**BQ;/*有功、無功簡化雅克比矩陣B*/

float*V;/*節(jié)點電壓有效值*/

float*Dita;/*節(jié)點電壓相角值*/

unsignedintcount=0;/*迭代計數(shù)*/

int/*通用下標值*/

floattmp;/*臨時數(shù)據(jù)暫存*/

char*Type;/*節(jié)點類型*/

FILE*in,*out;/*輸入、輸出文件指針*/

/******************主函數(shù)******************/

/**I****I****I**主函數(shù)**I****I****I**/

intmain(void)

(

intkp=l,kq=l;/*P.Q精度判斷:1-不滿足,0-滿足精度要求力

float*dP,*dPi,*dQ,*dQi;/*AP、AQ*/

floatDltai;

structLinetype*Yi;

structNodetype*Noi;

lloattP,tQ;

if((in=fopen("Data.txt',,"r"))==NULL)ErrorMsg(l);

if((out=fopen(',out.txt';"w"))==NULL)ErrorMsg(2);

in_node();/*讀取節(jié)點參數(shù)并統(tǒng)計PQ、PV節(jié)點數(shù)*/

in」ine();/*讀取線路參數(shù)并形成Y矩陣*/

B_Form();/*形成B(BP&BQ)矩陣為

factor();/*求B因子式(仍保存于BP&BQ)*/

for(i=0;i<NQ;i++)*(V+i)=1;產(chǎn)對PQ節(jié)點電壓V賦初值*/

dP=(float*)malloc(sizeof(float)*NP);/*AP*/

dQ=dP;產(chǎn)△Q不〃#AP、AQ不同時存在,故而可共用空間,

loop:/****開始迭代****/

if(kp==0&&kq==0)gotoloopEnd;

count++;/*迭代次數(shù)加一*/

if(count==65535)ErrorMsg(99);/*不收斂,退出*/

kp=0;

tbr(i=0;i<NP;i++)

(

dPi=dP+i;

Yi=*(Y+i)-i;

Dltai=*(Dlta+i);

*dPi=0;

for(j=0;j<Node;j++)

(

tmp=Dltai-*(Dlta+j);/*tmp即8ij*/

if(i>j)*dPi+=*(V+j)*(Pji);

else*dPi+=*(V+j)*(Pij);

}/*注意到Y矩陣為上三角矩陣,i習時要交換下標*/

*dPi*=*(V+i);

*dPi=(*(No+i)).P-*dPi;/*求得APi*/

if(fabs(*dPi)>Ox8fffffff)ErrorMsg(99);/*不收斂,退出*/

if(fabs(*dPi)>eP)kp=l;/*有不滿足精度的AP即令kp=l*/

*dPi/=*(V+i);/*求得常數(shù)項△Pi/Vi*/

)

if(kp==0)gotoloopQ;

solve(BP,dP,NP);

for(i=0;ivNP;i++)*(Dlta+i)+=(*{dP+i)/(*(V+i)));/*修正相角6+=A8*/

IcopQ:

if(kp==O&&kq==O)gotoloopEntl;

kq=O;

for(i=0;i<NQ;i++)

dQi=dQ+i;

Yi=*(Y+i)-i;

Dltai=*(Dlta+i);

*dQi=0;

for(j=0;j〈Node;j++)

|

tmp=Dltai-*(Dlta+j);/*tmp即6ij*/

if(i>j)*dQi+=*(V+j)*(Qji);

else*dQi+=*(V+j)*(Qij);

}/*注意到Y矩陣為上三角矩陣,i>j時要交換下標*/

*dQi*=*(V+i);

*dQi=(*(No+i)).Q-*dQi;/*求得AQi*/

if(fabs(*dQi)>0x8fffffff)ErrorMsg(99);/*不收斂,退出*/

if(fabs(*dQi)>cQ)kq=l;/*有不滿足精度的AQ即令kq=l*/

*dQV=%(V+i);嚴求得常數(shù)項△Qi/Vi*/

}

if(kq==0)gotoloop;

solve(BQ,dQ,NQ);

tbr(i=0;i<NQ;i++)*(V+i)+=*(dQ+i);/*修正PQ節(jié)點電壓V+=AV*/

gotoloop;/*無功迭代,那么必定需要下一輪回迭代判斷*/

IcopEnd:/****迭代結束****/

free(dP);/*釋放內(nèi)存空間*/

/****計算PV節(jié)點和平衡節(jié)點的無功功率

tbr(i=NQ;i<Node;i++)

(

Noi=No+i;

Yi=*(Y+i)-i;

Dltai=*(Dlta+i);

for(j=0;j<Node;j++)

{

tmp=Dltai-*(Dlta+j);/*tmp即8ij*/

if(i>j)(*Noi).Q+=*(V+j)*(Qji);

else(*Noi).Q+=*(V+j)*(Qij);

}/*注意到Y矩陣為上三角矩陣,i習時要交換下標*/

(*Noi).Q*=*(V+i);

)

產(chǎn)***計算平衡節(jié)點的有功功率

i=NP;

Noi=No+i;

Dltai=*(Dlta+i);

lbr(j=0;j<Node;j++)

tmp=Dltai-*(Dlta+j);/*tmp即8ij*/

(*Noi).P+=*(V+j)*(Pji);

}/*注意到Y矩陣為上三角矩陣,i>j時要交換下標*/

(*Noi).P*=*(V+i);

/****輸出最終結果****/

fprintf(out,"\n\n[潮流計算結果(節(jié)點)】(迭代次數(shù)k=%3d)\n",count-l);

PrtNode();

/****計算全部線路功率****/

fprintf(out,"\n\n[潮流計算結果(線路)]\n");

fPrintf(out,"線路PQ\n");

tbr(k=0;k<Node;k++)

{

i=*(Num+k);

Yi=*(Y+i)-i;

Dltai=*(Dlta+i);

Noi=No+i;

for(m=0;m<Node;m++)

{

j=*(Num+m);

if(j==i)continue;

tmp=Dltai-*(Dlta+j);/*tmp即6ij*/

if(j<i)

{

if(Yji.B=0)continue;/*假設Bij=O,那么節(jié)點i、j無直接聯(lián)系可

tp=*(v+j)*(Pji);

tP=*(V+i)*Yji.G-(P;

tP*=*(V+i);

tQ=-*(V+j)*(Qji);

tQ.=*(v+i)*(Yji.B-Yji.BO/Yji.k);

tQ*=*(V+i);

1

else

(

if(Yij.B==0)continue;/*假設Bij=O,那么節(jié)點i、j無直接聯(lián)系*/

tP=*(V+j)*(Pij);

tP=*(V+i)*Yij.G-tP;

tP*=*(V+i);

tQ=-*(V+j)*(Qij);

tQ.=*(v+i)*(Yij.B-Yij.BO);

tQ*=*(V+i);

)

fprintf(out:'S[%d,%d]=(%IO.6f,%J0.6f)\nH,k+l,m+L-tP,-tQ);

}

lclose(out);

system("cmd/cstartout.txt");

return(O);

/**?****]****?**主函數(shù)**t****f****?**/

/*******水*木***木木木木*二is函?婁攵*木****求*東*****求木**/

/****************子函數(shù):讀節(jié)點數(shù)據(jù)***************東/

voidin_node()

(

structNodetype*Noi;/*臨時變量*/

fscanf(in;'%d%d”,&Node,&k);/*讀取節(jié)點數(shù)Node*/

NP=Nodc-l;/*PVtPQ節(jié)點數(shù),即非平衡節(jié)點數(shù)口*/

Num=(int*)nialloc(sizeof(int)*Node);/*JFNode個空間,每節(jié)點?個*/

V=(float*)malloc(sizeof(float)*Node);/*電壓*/

Dlta=(float*)malloc(sizeof(float]*Node);/*電壓相角*/

No=(structNodetype*)malloc(sizeof(structNodetype)*Node);/*節(jié)點功率*/

j=h

while(k!=0)/*假設k=0,說明節(jié)點數(shù)據(jù)讀取完畢*/

(

switch(k)

(

case1:k=NQ;NQ++;break;/*NQ統(tǒng)計PQ節(jié)點個數(shù)列

case2:k=NP-j;j++;break;/*從NP-1個空間倒著保存PV節(jié)點”

case3:k=NP;break;/*平衡節(jié)點*/

dcfault:ErrorMsg(3);

}

Noi=No+k;

fscanf(in,n%d%f%f%f%f',&i,&(*Noi).R&(*Noi).Q,V4-k,Dlta+k);

i-;/*節(jié)點編號減一,以和程序表達方式兼容為

*(Num+i尸k;/*第i個Num兀素中存放i節(jié)點在No中的下標*/

fscanf(in,"%d”,&k);產(chǎn)讀取節(jié)點類型*/

)

if(NQ+j!=Node)ErrorMsg(4);/穌僉驗節(jié)點數(shù)據(jù)個數(shù)是否夠Node個*/

fprintf(out,"[節(jié)點參數(shù)表]\n");

PrtNode();

fprintf(out,"總節(jié)點:%d\nPQ節(jié)點:%d\nPV節(jié)點:%d\n".Node,NQ,NP-NQ);

)

/************子函數(shù):讀線路數(shù)據(jù),并形成節(jié)點導納矩陣Y************/

voidin」ine()

(

structLinetype*Yi;

tloatR,X,k,B;

m=sizeof(structLinetype);

Y=(structLinetype**)malloc(m*Node);/*先開Node行,每一個節(jié)點一行*/

for(i=0;i<Node;i++)/*再在第i行上面開辟Node-i列*/

{/*即以上三角存儲Y矩陣*/

*(Y+i)=(structLinetype*)malloc(m*(Node-i));

Yi=*(Y+i)-i;

for(j=i;j<Node:j++){Yij,G=YijB=YijB0=Yij.k=0;}/*初始化*/

)

while(feof(in)==0)/*文件指針至lj文件末*/

(

fscanf(in,"%d%d%f%f%f%f

i=*(Num+i);/*轉(zhuǎn)換節(jié)點號為該節(jié)點在程序中的儲存編號*/

j=*(Num+j);

(*(*(Y+i))).B+=B;/*將對地充電導納累加到自導納3t7

(*(*(Yij))).B+=B;

if(k!=1.0)

{

X*=k;R=O:

tmp=(l-k)/X;

(*(*(Y+i))).B+=tmp;/*將變壓器的對地充電容納累加到自導納力

(*(*(Y+j))).B+=-(tmp/k);

B=tinp;

k=-k;

)

if(i>j){tmp=i;i=ju=tmp;k=l/k;B*=k;}

Yi=*(Y+i)-i;/*以Yi代替*(Y+i)-i,簡化表達式并防止重復計算*/

Yij.BO=B;/*保存ijO>jiO對地充電電容到BijO*/

Yij.k=k;/*且有B()ji=B()ij/k*/

tmp=R*R+X*X;

R/=tmp;

X/=tmp;

Yij.G=-R;/*生成互導納*/

Yij.B=X;

(*(*(Y+i))).G+=R;/*將線路互導納累加到自導納*/

(*(*(Y+i))).B+=-X;

(*(*(Y+j))).G+=R;

(*(*(Y+j))).B+=-X;

)

tclose(in);

fprintf(out;'\n(節(jié)點導納矩陣Y]\n");

for(k=0;k<Node;k++)

(

i=k;

i=*(Num+i);/*查取第i節(jié)點在程序中存儲序號*/

for(j=0;j<k;j++)fprintf(out,"\t\t'.t");

for(m=k;m<Node;m++)

j=*(Num+m);/*查取第j節(jié)點在程序中存儲序號*/

if(i<j)fprintfCout/X%10.6f,%l0.6f)",Y_(i,j).GY_(i,j).B);

elsefprintf(out,',(%i0.6f,%lC'.6r)",Y_(j,i).G,Y_(jj).B);

fprint^out/'Vn");

/*******求*木*木****子函數(shù).4:成BP、BQ矩陣*求*******長木*求***/

voidB_Form()

float*BPi,*BQi;

structLinetype*Yi;

intsize=sizcof(float);

BP=(float:t:fe)malloc(sizc:f:NP);戶以上三角存儲刃

tbr(i=O:i<NP;i++)*(BP+i)=(float*)malloc(size*(NP-i));

tbr(i=O;i<NP;i++)

BPi=*(BP+i)-i;/*以BPi代替*(BP+i)-i,防止重復計算*/

Yi=*(Y+i)-i;

for(j=i;j<NP;j++)*(BPi+j尸Yij.B;/*(BPi+j)即相當于BP[i][j]*/

I

BQ=BP;/*BP包含BQ,BP左上角的NQ*NQ子陣即BQ*/

/****木木***木****木*子函數(shù).求因子表***木木木木木*木*求****/

voidfactor()

float*BPi,*BPk,*BQi;

for(i=0;i<NP;i++)

(

BPi=*(BP+i)-i;

for(k=0;k<i;k++)

{

BPk=*(BP+k)-k;

tmp=(*(BPk+i))/(*(BPk+k));

for(j=i;j<NP;j++)(*(BPi+j))-=tmp*(*(BPk+j));

}

*(BPi+i)=l/(*(BPi+i));

for(j=i+1;j<NP;j++)*(BPi+j)*=*(BPi+i);

/****************子函數(shù):解方程組****************/

voidsolve(float**B,float*X,intN)

(

float*Bi,*Xi;

for(i=0;ivN;i++)*(X+i)=-*(X+i);/*對常數(shù)項取負*/

產(chǎn)***對常數(shù)列進行前代****/

for(i=0;i<N;i++)

(

Bi=*(B+i)-i;

Xi=X+i;

for(j=i+l;j<N;j++)*(X+j)-=*(Bi+j)**Xi;

*Xi*=*(Bi+i);

)

/****回代以求解方程組***以

for(i=N-l;i>=O;i-)

(

Bi=*(B+i)-i;

Xi=X+i;

for(j=N-l;j>i;j-)*Xi-=*(Bi+j產(chǎn)*(X+j);

)

了***打印節(jié)點參數(shù)****/

voidPrtNode()

structNodetype*Noi;

fprintf(out,"節(jié)點類型PQV8\n");

for(i=0;i<Node;)

{

j=*(Num+i);尸壹取第i節(jié)點在程序中存儲序號

Noi=No+j;

if(j<NQ)Type="PQ";elseType="PV";

if(j==NP)Type=,,BS";

fprintf(out,"%3d%s%10.6f%10.6f%10.6f%10.6f\n",

++i,Type,(*Noi).P,(*Noi),Q,*(V+j),*(Dlta+j)/0.017453);

/木*木木木木*木*木*木木木木木子函數(shù):錯誤信息木*木木*木木木木木***木木*/

voidErrorMsg(intFlag)

(

switch(Flag)

(

casel:printf("\n\tError(l):FailedtoOpenFile\"Data.txt\W);break;

case2:printf("\n\(Error(2):FailedtoCreatFile\"out.txt\"!");break;

case3:printf("\n\tEiTor(3):NodeDataError,PleaseCheck!");break;

case4:printf("\n\tError(4):LackNodeData,PleaseCheck!*');break;

case99:printf("k=%d\n\tError(99):It'sEmanative!",count);break;

)

gelch();

fclose(out);

exit(Flag);

算例及結果

1、原始數(shù)據(jù)

程序編寫過程中,采用了《電力系統(tǒng)分析》教材的4節(jié)點、IEEE9節(jié)點參數(shù)進行了驗證,本說明書

中僅列出4節(jié)點驗算過程。

4節(jié)點測試數(shù)據(jù)來源于參考文獻中的《電力系統(tǒng)分析》(下冊)第61頁例11-5,用于檢驗程序正確

性的參考計算結果見67頁。對其根本情況總結如下。

1)網(wǎng)絡連接圖

圖6算例電力系統(tǒng)網(wǎng)絡圖

2)節(jié)點參數(shù)

表4算例節(jié)點參數(shù)表

節(jié)點類型節(jié)點編號有功功率P無功功率Q電壓V電壓相角6

11-0.30-0.1800

12-0.55-0.1300

230.501.100

34001.050

3)線路參數(shù)

表5算例線路參數(shù)表

節(jié)點1節(jié)點2阻抗R感抗X變壓器變比k充電容納Rc/2

120.10.410.01528

140.120.510.01920

240.080.410.01413

3100.30.9090910

4)數(shù)據(jù)文件data.txt

4

34001.050

q

20.501.100

11-0.3()-0.1800

12-0.55-0.1300

0

120.10.410.01528

3100.30.9090910

140.120.510.01920

240.080.410.01413

圖7數(shù)據(jù)文件格式

2、源數(shù)據(jù)格式說明

源數(shù)據(jù)有功功率、無功功率、電壓、阻抗、感抗、對地充電容納均以標幺值表示。

數(shù)據(jù)文件必須命名為data.txt且與潮流計算程序放置于同一個文件中。數(shù)據(jù)文件data.txt包含兩類參

數(shù):節(jié)點參數(shù)和線路參數(shù)。節(jié)點數(shù)據(jù)塊與線路數(shù)據(jù)塊之間用數(shù)字。作為間隔,即在節(jié)點數(shù)據(jù)塊結束后,

另起一行輸入0,然后再在后而按格式要求錄入線路參數(shù)

1)節(jié)點參數(shù)

節(jié)點參數(shù)包括:系統(tǒng)節(jié)點數(shù)Node、節(jié)點功率(有功P、無功Q),節(jié)點電壓(有效值V、相角Delta)

參數(shù)組織格式:

(1)節(jié)點數(shù)Node

節(jié)點數(shù)Node寫在參數(shù)文件的開頭,如:4說明為四節(jié)點系統(tǒng)。

(2)功率和電壓P/Q/V7Delta

首先給出節(jié)點參數(shù)例如:

230.501.100

第一列數(shù)字2說明該節(jié)點的類型為2-PV節(jié)點;第二列數(shù)字3說明該行數(shù)據(jù)為節(jié)點3的參數(shù);后面

三列依次為P、Q、V的給定值,給定值為0,說明該項參數(shù)未知;第六列為相角5,非平衡節(jié)點的6即

為PQ迭代的初始相角值,平衡節(jié)點的即為給定的相角值。

節(jié)點功率為各支路輸入功率之和,且規(guī)定功率流入節(jié)點為正,流出為負。故而負荷功率為負值,發(fā)

電機功率為正值。

(3)節(jié)點類型的判斷

根據(jù)節(jié)點的給定參數(shù)可以將節(jié)點分為三種類型:

1)PQ節(jié)點:給定P、Q初始值的節(jié)點,用數(shù)字代碼1表示;

2)PV節(jié)點:給定P、V

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論