版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《自動(dòng)控制裝置語(yǔ)言程序設(shè)計(jì)》</p><p> 題 目: 電力系統(tǒng)潮流計(jì)算的程序設(shè)計(jì)</p><p> 系 別: 自動(dòng)化學(xué)院 </p><p> 專 業(yè): 07電氣工程及其自動(dòng)化</p><p> (低壓電力智能控制方向)</p><p>
2、;<b> 前 言</b></p><p> 潮流計(jì)算是研究電力系統(tǒng)穩(wěn)態(tài)運(yùn)行情況的一種基本電氣計(jì)算,常規(guī)潮流計(jì)算的任務(wù)是根據(jù)給定的運(yùn)行條件和網(wǎng)路結(jié)構(gòu)確定整個(gè)系統(tǒng)的運(yùn)行狀態(tài),如各母線上的電壓(幅值及相角)、網(wǎng)絡(luò)中的功率分布以及功率損耗等。潮流計(jì)算的結(jié)果是電力系統(tǒng)穩(wěn)定計(jì)算和故障分析的基礎(chǔ)。 </p><p> 具體表現(xiàn)在以下方面: </p><p
3、> (1)在電網(wǎng)規(guī)劃階段,通過(guò)潮流計(jì)算,合理規(guī)劃電源容量及接入點(diǎn),合理規(guī)劃網(wǎng)架,選擇無(wú)功補(bǔ)償方案,滿足規(guī)劃水平的大、小方式下潮流交換控制、調(diào)峰、調(diào)相、調(diào)壓的要求。 </p><p> (2)在編制年運(yùn)行方式時(shí),在預(yù)計(jì)負(fù)荷增長(zhǎng)及新設(shè)備投運(yùn)基礎(chǔ)上,選擇典型方式進(jìn)行潮流計(jì)算,發(fā)現(xiàn)電網(wǎng)中薄弱環(huán)節(jié),供調(diào)度員日常調(diào)度控制參考,并對(duì)規(guī)劃、基建部門提出改進(jìn)網(wǎng)架結(jié)構(gòu),加快基建進(jìn)度的建議。 </p><
4、p> (3)正常檢修及特殊運(yùn)行方式下的潮流計(jì)算,用于日運(yùn)行方式的編制,指導(dǎo)發(fā)電廠開(kāi)機(jī)方式,有功、無(wú)功調(diào)整方案及負(fù)荷調(diào)整方案,滿足線路、變壓器熱穩(wěn)定要求及電壓質(zhì)量要求。 </p><p> (4)預(yù)想事故、設(shè)備退出運(yùn)行對(duì)靜態(tài)安全的影響分析及作出預(yù)想的運(yùn)行方式調(diào)整方案。 </p><p> 總結(jié)為在電力系統(tǒng)運(yùn)行方式和規(guī)劃方案的研究中,都需要進(jìn)行潮流計(jì)算以比較運(yùn)行方式或規(guī)劃供電方案的
5、可行性、可靠性和經(jīng)濟(jì)性。同時(shí),為了實(shí)時(shí)監(jiān)控電力系統(tǒng)的運(yùn)行狀態(tài),也需要進(jìn)行大量而快速的潮流計(jì)算。因此,潮流計(jì)算是電力系統(tǒng)中應(yīng)用最廣泛、最基本和最重要的一種電氣運(yùn)算。在系統(tǒng)規(guī)劃設(shè)計(jì)和安排系統(tǒng)的運(yùn)行方式時(shí),采用離線潮流計(jì)算;在電力系統(tǒng)運(yùn)行狀態(tài)的實(shí)時(shí)監(jiān)控中,則采用在線潮流計(jì)算。</p><p> 隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展和普及,電子計(jì)算機(jī)已成為分析計(jì)算復(fù)雜電力系統(tǒng)各種運(yùn)行情況的主要工具。</p><
6、p><b> 目錄</b></p><p><b> 目錄1</b></p><p> 一、課程設(shè)計(jì)目的和任務(wù)2</p><p> 二、設(shè)計(jì)主要儀器設(shè)備和材料3</p><p> 三、牛頓法潮流計(jì)算的步驟及計(jì)算程序框圖4</p><p><b&g
7、t; 四、程序代碼7</b></p><p><b> 五、計(jì)算結(jié)果24</b></p><p> 六、小結(jié)與展望24</p><p><b> 七、致謝25</b></p><p> 八、主要參考文獻(xiàn)25</p><p> 一、課程設(shè)計(jì)目的
8、和任務(wù)</p><p> 設(shè)計(jì)目的:通過(guò)對(duì)電力系統(tǒng)分析的學(xué)習(xí),了解電力系統(tǒng)的運(yùn)行和能量管理,計(jì)算電力系統(tǒng)潮流分布以及有功和無(wú)功功率的分點(diǎn),掌握電力系統(tǒng)環(huán)網(wǎng)(牛頓-拉夫遜法、P-Q分解法)的計(jì)算方法。并熟練使用計(jì)算機(jī)編程。</p><p> 設(shè)計(jì)任務(wù):如圖所示電力系統(tǒng)節(jié)點(diǎn)潮流及阻抗、導(dǎo)納分布圖,用直角坐標(biāo)牛頓拉夫遜法(極坐標(biāo)牛頓-拉夫遜法、P-Q分解法)計(jì)算機(jī)編程計(jì)算各線路潮流分布。寫(xiě)出
9、編程思想及流程框圖。并附錄原程序。</p><p> 圖1 IEEE 9節(jié)點(diǎn)電力系統(tǒng)線路圖</p><p> IEEE9節(jié)點(diǎn)電力系統(tǒng)原始數(shù)據(jù):圖中GEN1節(jié)點(diǎn)為平衡節(jié)點(diǎn),V1=1.04,GEN2和GEN3為PV節(jié)點(diǎn),V2=1.025,P2=1.63,V3=1.025,P3=0.85,其他節(jié)點(diǎn)為PQ節(jié)點(diǎn),S7=1.25+j0.5,S8=0.9+j0.3,S9=1.0+j0.35。<
10、;/p><p> 表1 系統(tǒng)基本參數(shù)數(shù)據(jù)</p><p> 表2 系統(tǒng)線路原始參數(shù)(標(biāo)幺值)</p><p> 表3 節(jié)點(diǎn)功率、電壓數(shù)據(jù)(標(biāo)幺值)</p><p> 二、設(shè)計(jì)主要儀器設(shè)備和材料</p><p> 表4 設(shè)計(jì)主要設(shè)備</p><p> 三、牛頓法潮流計(jì)算的步驟及計(jì)算
11、程序框圖</p><p> 牛頓法潮流計(jì)算的求解過(guò)程大致可以分為以下幾步:</p><p> (1)輸入系統(tǒng)的原始數(shù)據(jù),包括系統(tǒng)的信息,各線路和變壓器所在節(jié)點(diǎn)的編號(hào)和等值電路中的參數(shù);各負(fù)荷所在節(jié)點(diǎn)的編號(hào)及其所取用的有功功率和無(wú)功功率;作為PQ節(jié)點(diǎn)的發(fā)電機(jī)所在節(jié)點(diǎn)和編號(hào)及所給定的有功功率和無(wú)功功率,PV節(jié)點(diǎn)的編號(hào)和所接發(fā)電機(jī)的有功功率和電壓有效值的給定值,平衡節(jié)點(diǎn)的編號(hào)和給定的電壓有效
12、值。</p><p> ?。?)形成節(jié)點(diǎn)導(dǎo)納矩陣。</p><p> ?。?)給定各PQ節(jié)點(diǎn)的電壓初值和除平衡節(jié)點(diǎn)外各節(jié)點(diǎn)電壓相位的初值并組成待求量的初始向量和。</p><p> ?。?)置迭代次數(shù)k=0。</p><p> ?。?)應(yīng)用、及PV節(jié)點(diǎn)和平衡節(jié)點(diǎn)所給定的電壓,按式1:</p><p> 計(jì)算各PQ節(jié)點(diǎn)
13、的有功功率誤差和無(wú)功功率誤差以及各PV節(jié)點(diǎn)的有功功率誤差,并組成功率誤差向量和。</p><p><b> ?。?)按式2:</b></p><p> 中的收斂判據(jù)判斷最大的功率誤差是否小于容許值,如果滿足則轉(zhuǎn)到第(11)步,否則進(jìn)行下一步。</p><p> ?。?)應(yīng)用、按式3和式4:</p><p> 計(jì)算雅可
14、比矩陣元素,并形成式5中的雅可比矩陣。</p><p> ?。?)解修正方程式5,得出和。</p><p><b> ?。?)應(yīng)用式6:</b></p><p> 計(jì)算各節(jié)點(diǎn)電壓和相位的修正值,即新的初值。</p><p> ?。?0)置k=k+1返回第(5)步繼續(xù)進(jìn)行下一輪迭代。</p><p&g
15、t;<b> ?。?1)按式7:</b></p><p> 計(jì)算平衡節(jié)點(diǎn)的發(fā)電機(jī)(或注入)有功功率和無(wú)功功率,并按式8:</p><p> 計(jì)算各PV節(jié)點(diǎn)發(fā)電機(jī)(或注入)的無(wú)功功率;按式9和式10:</p><p> 計(jì)算各元件兩端的功率和損耗,最后輸出計(jì)算結(jié)果。</p><p> 與上述步驟相對(duì)應(yīng)的計(jì)算程序框圖
16、如下圖所示:</p><p><b> 四、程序代碼</b></p><p> // 文件一,NEquation.h: interface for the NEquation class.//</p><p> ////////////////////////////////////////////////////////////////
17、//////</p><p> #if !defined(AFX_NEQUATION_H__7D6DCBC7_B370_4F2E_A720_4FB8BA7B55D9__INCLUDED_)</p><p> #define AFX_NEQUATION_H__7D6DCBC7_B370_4F2E_A720_4FB8BA7B55D9__INCLUDED_</p><p&
18、gt; #if _MSC_VER > 1000</p><p> #pragma once</p><p> #endif// _MSC_VER > 1000</p><p> #define CHECKERROR</p><p> class NEquation </p><p><
19、;b> {</b></p><p><b> public:</b></p><p> NEquation();</p><p> virtual ~NEquation();</p><p><b> public:</b></p><p> v
20、oidSetSize(int size);</p><p> double&Data(int lhs, int rhs);</p><p> double&Value(int lhs);</p><p> intRun();</p><p> protected:</p><p&g
21、t; intm_nNumber;</p><p> double*m_nDataBuffer;</p><p> double*m_nValue;</p><p> voidFactorial();</p><p> voidForward();</p><p> voidBack
22、ward();</p><p> virtual doubleZEROD();</p><p> virtual doubleZEROV();</p><p><b> };</b></p><p> NEquation::NEquation()</p><p><b>
23、 {</b></p><p> m_nDataBuffer=NULL;</p><p> m_nValue=NULL;</p><p> m_nNumber=0;</p><p><b> }</b></p><p> NEquation::~NEquatio
24、n()</p><p><b> {</b></p><p> if(m_nDataBuffer != NULL) delete []m_nDataBuffer;</p><p> if(m_nValue != NULL) delete []m_nValue;</p><p><b> }</b&
25、gt;</p><p> double NEquation::ZEROD(){return 0.0;}</p><p> double NEquation::ZEROV(){return 0.0;}</p><p> void NEquation::SetSize(int size)</p><p><b> {</b
26、></p><p> if(size < 1)return; </p><p> if(m_nDataBuffer != NULL) delete []m_nDataBuffer;</p><p> if(m_nValue != NULL) delete []m_nValue;</p><p> m_nDataBuffer
27、 = new double[size * size];</p><p> m_nValue = new double[size];</p><p> for(int i=0; i< size*size; i++)m_nDataBuffer[i] = ZEROD();</p><p> for(i=0; i< size; i++)m_nValue[i
28、] = ZEROV();</p><p> m_nNumber = size;</p><p><b> }</b></p><p> double & NEquation::Data(int lhs, int rhs)</p><p><b> {</b></p>&
29、lt;p> #if defined(CHECKERROR)</p><p> if((lhs<m_nNumber)&&(lhs>=0)&&(rhs<m_nNumber)&&(rhs>=0))</p><p><b> #endif</b></p><p> r
30、eturn m_nDataBuffer[lhs * m_nNumber + rhs];</p><p> #if defined(CHECKERROR)</p><p><b> else</b></p><p> printf("Error");</p><p> return m_nDat
31、aBuffer[0];</p><p><b> #endif</b></p><p><b> }</b></p><p> double & NEquation::Value(int lhs)</p><p><b> {</b></p>&l
32、t;p> #if defined(CHECKERROR)</p><p> if((lhs<m_nNumber)&&(lhs>=0))</p><p><b> #endif</b></p><p> return m_nValue[lhs];</p><p> #if def
33、ined(CHECKERROR)</p><p><b> else</b></p><p> printf("Error");</p><p> return m_nValue[0];</p><p><b> #endif</b></p><p&g
34、t;<b> }</b></p><p> int NEquation::Run()</p><p><b> {</b></p><p> Factorial();</p><p> Forward();</p><p> Backward();</p&g
35、t;<p><b> return 1;</b></p><p><b> }</b></p><p> double reverse( double ff){return (double)1.0/ff;};</p><p> void NEquation::Factorial()</p>
36、<p><b> {</b></p><p> int i, j, k;</p><p> for(i=0; i<m_nNumber; i++)</p><p><b> {</b></p><p> //規(guī)格化format line;</p><
37、p> Data(i, i) = reverse(Data(i, i));</p><p> for(j = i+1; j< m_nNumber; j++) Data(i, j) = Data(i, i) * Data(i, j);</p><p><b> //消去</b></p><p> for(j = i+1; j&
38、lt;m_nNumber; j++)</p><p><b> {</b></p><p> for(k=i+1; k<m_nNumber; k++)</p><p><b> {</b></p><p> Data(j,k) = Data(j, k) - Data(j,i) * Da
39、ta(i, k);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void NEquation::
40、Forward()</p><p><b> {</b></p><p><b> int i, j;</b></p><p> for(i=0; i< m_nNumber; i++)</p><p><b> {</b></p><p>
41、 Value(i) = Data(i, i) * Value(i);</p><p> for(j = i+1; j < m_nNumber; j++)</p><p> Value(j) = Value(j) - Data(j, i) * Value(i);</p><p><b> }</b></p><p
42、><b> }</b></p><p> void NEquation::Backward()</p><p><b> {</b></p><p><b> int i, j;</b></p><p> for(i = 1; i < m_nNumber;
43、 i++)</p><p><b> {</b></p><p> for(j = 1; j < i+1; j++)</p><p> Value(m_nNumber - i -1) -= Data(m_nNumber -i-1, m_nNumber -j) * Value(m_nNumber -j); </p>&l
44、t;p><b> }</b></p><p><b> }</b></p><p> #endif// !defined(AFX_NEQUATION_H__7D6DCBC7_B370_4F2E_A720_4FB8BA7B55D9__INCLUDED_)</p><p> //////////文件二,LF.h
45、//////////////</p><p> #ifndef _LF_LCR_</p><p> #define _LF_LCR_</p><p> #include "DataDesign.h"</p><p> int MakeY( int nB, int nL, Line* sL, double** YG,
46、 double** YB );</p><p> int CalDeltaPQ( int npv, int npq, Bus* bus, double** YG, double** YB, int* p_Jtobus, double* deltaf );</p><p> int FormJacobian( int npv, int npq, Bus* bus, double** YG
47、, double** YB, int* p_Jtobus, double** Jac );</p><p> #endif//_LF_LCR_</p><p> ////////文件三,數(shù)據(jù)設(shè)計(jì),DataDesign.h //////////</p><p> #ifndef _DATA_LCR_INCLUDE_</p><p>
48、#define _DATA_LCR_INCLUDE_</p><p> struct Line</p><p><b> {</b></p><p> int Num,NumI,NumJ,Type;</p><p> double R,X,B,K;</p><p><b> }
49、;</b></p><p> struct Bus</p><p><b> {</b></p><p><b> int Num ;</b></p><p> double Volt,Phase,GenP,GenQ,LoadP,LoadQ;</p><p&g
50、t;<b> int Type;</b></p><p><b> };</b></p><p> struct Shunt</p><p><b> {</b></p><p> int Num,NumI;</p><p> double
51、G,B;</p><p><b> };</b></p><p> #endif//_DATA_LCR_INCLUDE_</p><p> /////文件四,F(xiàn)ormF.cpp //////////</p><p> #include <math.h></p><p> #
52、include <fstream.h></p><p> #include "LF.h"</p><p> #include "DataDesign.h"</p><p> #include <stdio.h></p><p> //form delta p and de
53、lta q</p><p> int CalDeltaPQ( int npv, int npq, Bus* bus, double** YG, double** YB, int* p_Jtobus, double* deltaf )</p><p><b> {</b></p><p> int i,j;//循環(huán)變量</p>
54、;<p> int k;//節(jié)點(diǎn)修正變量</p><p> double i1,i2;</p><p> double dphase;</p><p> for(i=0;i<npv+npq+npq;i++)</p><p><b> {</b></p><p>
55、 if(i<npv+npq) //form deltaP</p><p><b> {</b></p><p><b> i1=0;</b></p><p> k=p_Jtobus[i];</p><p> for(j=0;j<npv+npq+1;j++)<
56、;/p><p><b> {</b></p><p> dphase=bus[k].Phase-bus[j].Phase;</p><p> i1+=bus[j].Volt*(YG[k][j]*cos(dphase)+YB[k][j]*sin(dphase));</p><p><b> }</b&g
57、t;</p><p> deltaf[i]=bus[k].GenP-bus[k].LoadP-bus[k].Volt*i1;</p><p><b> }</b></p><p><b> else</b></p><p> { //form delta
58、Q</p><p><b> i2=0;</b></p><p> k=p_Jtobus[i];</p><p> for(j=0;j<npv+npq+1;j++)</p><p><b> {</b></p><p> dphase=bus[k].Phase
59、-bus[j].Phase;</p><p> i2+=bus[j].Volt*(YG[k][j]*sin(dphase)-YB[k][j]*cos(dphase));</p><p><b> }</b></p><p> deltaf[i]=bus[k].GenQ-bus[k].LoadQ-bus[k].Volt*i2;</p&
60、gt;<p><b> }</b></p><p><b> }</b></p><p> for(i=0;i<npv+npq*2;i++)</p><p> deltaf[i]*=(-1);</p><p><b> return 1;</b>&
61、lt;/p><p><b> }</b></p><p> /////文件五,計(jì)算雅可比矩陣,F(xiàn)ormJ.cpp ///////////</p><p> #include <math.h></p><p> #include <fstream.h></p><p>
62、 #include "LF.h"</p><p> #include "DataDesign.h"</p><p> #include <malloc.h></p><p> #include <string.h></p><p> //////////////生成雅可比
63、矩陣///////////////////</p><p> int FormJacobian( int npv, int npq, Bus* bus, double** YG, double** YB, int* p_Jtobus, double** Jac )</p><p><b> {</b></p><p><b>
64、int i,j;</b></p><p> int np = npv+npq;</p><p> double dphase;</p><p> ////////生成 H 矩陣////////////</p><p> double** H;</p><p> H = (double**)new
65、char[(np)*sizeof(void*)];</p><p> for( i=0;i<np;i++ )</p><p><b> {</b></p><p> H[i]=new double[np];</p><p> memset(H[i],0,sizeof(double)*(np) );//清零
66、</p><p><b> }</b></p><p> for(i=0;i<np;i++)</p><p><b> {</b></p><p> double temp=0;</p><p> for(j=0;j<np;j++)</p>
67、<p><b> {</b></p><p><b> if(i!=j)</b></p><p><b> {</b></p><p> dphase=bus[i+1].Phase-bus[j+1].Phase;</p><p> H[i][j]=bus[
68、i+1].Volt*bus[j+1].Volt*(YG[i+1][j+1]*sin(dphase)-YB[i+1][j+1]*cos(dphase));</p><p> temp+=H[i][j];</p><p><b> }</b></p><p><b> }</b></p><p>
69、 double dphase1=bus[i].Phase-bus[0].Phase;</p><p> H[i][i]=temp*(-1)-bus[i+1].Volt*bus[0].Volt*(YG[i+1][0]*sin(dphase1)-YB[i+1][0]*cos(dphase));</p><p><b> }</b></p><p&
70、gt; ofstream fout1("out.txt",ios::app);</p><p> /////////生成 L 矩陣////////////</p><p> double** L;</p><p> L = (double**)new char[(np)*sizeof(void*)];</p><p&g
71、t; for( i=0;i<np;i++ )</p><p><b> {</b></p><p> L[i]=new double[np];</p><p> memset(L[i],0,sizeof(double)*(np) );</p><p><b> }</b></p
72、><p> for(i=npv;i<np;i++)</p><p><b> {</b></p><p> for(j=npv;j<np;j++)</p><p><b> {</b></p><p><b> if(i!=j)</b>
73、</p><p><b> {</b></p><p> L[i][j]=H[i][j];</p><p><b> }</b></p><p><b> }</b></p><p> L[i][i]=-1*H[i][i]-2*bus[i+1]
74、.Volt*bus[i+1].Volt*YB[i+1][i+1];</p><p><b> }</b></p><p> /////////////生成 J 矩陣///////////////////</p><p> double** J;</p><p> J = (double**)new char[(n
75、p)*sizeof(void*)];</p><p> for( i=0;i<np;i++ )</p><p><b> {</b></p><p> J[i]=new double[np];</p><p> memset(J[i],0,sizeof(double)*(np) );</p>
76、<p><b> }</b></p><p> for(i=npv;i<np;i++)</p><p><b> {</b></p><p> double temp=0;</p><p> for(j=0;j<np+1;j++)</p><p&g
77、t;<b> {</b></p><p><b> if(i!=j)</b></p><p><b> {</b></p><p> dphase=bus[i+1].Phase-bus[j+1].Phase;</p><p> J[i][j]=-1*bus[i+1].
78、Volt*bus[j+1].Volt*(YG[i+1][j+1]*cos(dphase)+YB[i+1][j+1]*sin(dphase));</p><p> temp+=-1*J[i][j];</p><p><b> }</b></p><p><b> }</b></p><p>
79、J[i][i]=temp;</p><p><b> }</b></p><p> /////////////////生成 N 矩陣 /////////////////</p><p> double** N;</p><p> N = (double**)new char[(np)*sizeof(void*)]
80、;</p><p> for( i=0;i<np;i++ )</p><p><b> {</b></p><p> N[i]=new double[np];</p><p> memset(N[i],0,sizeof(double)*(np) );</p><p><b>
81、; }</b></p><p> for(i=0;i<np;i++)</p><p><b> {</b></p><p> for(j=npv;j<np;j++)</p><p><b> {</b></p><p><b>
82、if(i!=j)</b></p><p><b> {</b></p><p> N[i][j]=-1*J[i][j];</p><p><b> }</b></p><p><b> }</b></p><p> N[i][i]=
83、J[i][i]+2*bus[i+1].Volt*bus[i+1].Volt*YG[i+1][i+1];</p><p><b> }</b></p><p> for(i=0;i<np;i++)</p><p> for(j=0;j<np;j++)</p><p> Jac[i][j]=H[i][j]
84、;</p><p> for(i=np;i<np+npq;i++)</p><p> for(j=0;j<np;j++)</p><p> Jac[i][j]=J[i-np+2][j];</p><p> for(i=0;i<np;i++)</p><p> for(j=np;j<np
85、+npq;j++)</p><p> Jac[i][j]=N[i][j-np+2];</p><p> for(i=np;i<np+npq;i++)</p><p> for(j=np;j<np+npq;j++)</p><p> Jac[i][j]=L[i-np+2][j-np+2];</p><p&
86、gt; //////////////////輸出雅可比矩陣///////////////////////</p><p> ofstream fout("out.txt",ios::app);</p><p> static int dd=0; dd++;</p><p> fout << "----------
87、----"<<"第"<<dd<<"次迭代后的"<<"雅可比矩陣--------------------" << endl;</p><p> for(i=0; i<np+npq; i++)</p><p><b> {</b>&l
88、t;/p><p> for(j=0; j<np+npq; j++ )</p><p> fout << Jac[i][j] << "\t";</p><p> fout << endl;</p><p><b> }</b></p><
89、p> fout.close();</p><p><b> return 1;</b></p><p><b> }</b></p><p> /////////////文件六,節(jié)點(diǎn)導(dǎo)納矩陣的計(jì)算,MakeY.cpp /////////////</p><p> #include &
90、lt;math.h></p><p> #include <fstream.h></p><p> #include "LF.h"</p><p> #include <stdio.h></p><p> #include<iomanip.h></p><
91、;p> int MakeY( int nB, int nL, Line* sL, double** YG, double** YB )</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<nB;i++)</p>&
92、lt;p> for(j=0;j<nB;j++)</p><p><b> {</b></p><p> YG[i][j]=0.0;</p><p> YB[i][j]=0.0;</p><p><b> };</b></p><p> for(i=0;
93、i<nL;i++)</p><p><b> {</b></p><p> int start,end;</p><p> double r,x,b,k,g,b1;</p><p> start=sL[i].NumI;</p><p> end=sL[i].NumJ;</p&
94、gt;<p> r=sL[i].R;</p><p> x=sL[i].X;</p><p> b=sL[i].B;</p><p> k=sL[i].K;</p><p> g=r/(r*r+x*x);</p><p> b1=-x/(r*r+x*x);</p><p&g
95、t; if(sL[i].Type==2)//線路中含有變壓器</p><p><b> {</b></p><p> YG[start][end]=-1*g/k;</p><p> YG[end][start]=-1*g/k;</p><p> YB[start][end]=-1*b1/k;</p>
96、;<p> YB[end][start]=-1*b1/k;</p><p> YG[start][start]+=g/k/k;</p><p> YG[end][end]+=g;</p><p> YB[start][start]+=0.5*b+b1/k/k;</p><p> YB[end][end]+=0.5*b+
97、b1;</p><p><b> continue;</b></p><p><b> }</b></p><p> if(sL[i].Type==1)//線路中不含變壓器</p><p><b> {</b></p><p> YG[sta
98、rt][end]=-1*g;</p><p> YG[end][start]=-1*g;</p><p> YB[start][end]=-1*b1;</p><p> YB[end][start]=-1*b1;</p><p> YG[start][start]+=g;</p><p> YG[end][e
99、nd]+=g;</p><p> YB[start][start]+=0.5*b+b1;</p><p> YB[end][end]+=0.5*b+b1;</p><p><b> continue;</b></p><p><b> }</b></p><p>
100、printf("Error Input !\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> /////////////輸出節(jié)點(diǎn)導(dǎo)納矩陣/////////////////</p><p> ofstre
101、am fout("out.txt");</p><p> fout << "--------------節(jié)點(diǎn)導(dǎo)納矩陣--------------------" << endl;</p><p> for(i=0;i<nB;i++)</p><p><b> {</b>&
102、lt;/p><p> for(j=0;j<nB;j++)</p><p> fout <<setw(2)<< YG[i][j] << "+j" << YB[i][j] <<" ";</p><p> fout << endl;<
103、/p><p><b> }</b></p><p> fout.close();</p><p><b> return 1;</b></p><p><b> }</b></p><p> //////////////文件七,基于牛頓法的潮流計(jì)算
104、程序,LF.cpp ///////////////</p><p> #include <stdio.h></p><p> #include <malloc.h></p><p> #include <string.h></p><p> #include <math.h></p
105、><p> #include <fstream.h></p><p> #include "NEquation.h"</p><p> #include "LF.h"</p><p> int main( int argc, char* argv[] )</p><p
106、><b> {</b></p><p> ///////////////////讀入數(shù)據(jù)///////////////////////</p><p> int nB, nL, nSH;</p><p> char filename[64];</p><p> printf("請(qǐng)輸入原始數(shù)據(jù)的文
107、件名:(0 for default value)\n");</p><p> scanf("%s", filename);</p><p> if( strcmp(filename,"0")==0 )</p><p><b> {</b></p><p> str
108、cpy( filename, "in.txt" );</p><p><b> }</b></p><p> ifstream fin;</p><p> fin.open(filename);</p><p> char buffer[128];</p><p>
109、fin.getline(buffer,128);</p><p> fin >> nB >> nL >> nSH;//讀入系統(tǒng)的節(jié)點(diǎn)數(shù)、線路數(shù)和分支數(shù)</p><p> double** YG, **YB;</p><p> YG = (double**)new char[(nB)*sizeof(void*)];<
110、/p><p> for( int i=0;i<nB;i++ )</p><p><b> {</b></p><p> YG[i]=new double[nB];</p><p> memset(YG[i],0,sizeof(double)*(nB) );</p><p><b&g
111、t; }</b></p><p> YB = (double**)new char[(nB)*sizeof(void*)];</p><p> for( i=0;i<nB;i++ )</p><p><b> {</b></p><p> YB[i]=new double[nB];</p
112、><p> memset(YB[i],0,sizeof(double)*(nB) );</p><p><b> }</b></p><p> Line* line;</p><p> line = new Line[nL];</p><p><b> Bus* bus;</
113、b></p><p> bus = new Bus[nB];</p><p> Shunt* shunt;</p><p> shunt = new Shunt[nSH];</p><p> fin.getline(buffer,128);</p><p> fin.getline(buffer,128
114、);</p><p> int npv=0, npq=0;</p><p> for( i=0; i<nB; i++ )</p><p><b> {</b></p><p> ///讀入系統(tǒng)的節(jié)點(diǎn)號(hào)、節(jié)點(diǎn)類型、節(jié)點(diǎn)電壓、相角、節(jié)點(diǎn)負(fù)載有功功率、節(jié)點(diǎn)負(fù)載無(wú)功率、節(jié)點(diǎn)輸入有功功率、節(jié)點(diǎn)輸入無(wú)功功率///<
115、;/p><p> fin >> bus[i].Num >> bus[i].Type >> bus[i].Volt >> bus[i].Phase >> bus[i].LoadP >> bus[i].LoadQ >> bus[i].GenP >> bus[i].GenQ;</p><p> bus
116、[i].Phase =bus[i].Phase*3.141592/180.0;</p><p> bus[i].Num -=1;</p><p> if( bus[i].Type==2)</p><p><b> npv++;</b></p><p> if( bus[i].Type==1)</p>
117、<p><b> npq++;</b></p><p><b> };</b></p><p> fin.getline(buffer,128);</p><p> fin.getline(buffer,128);</p><p> for( i=0; i<nL; i++
118、 )</p><p><b> {</b></p><p> /////////////讀入系統(tǒng)線路標(biāo)號(hào)、線路起始節(jié)點(diǎn)、線路終止節(jié)點(diǎn)、線路類型、線路電阻、線路電抗、線路對(duì)地導(dǎo)納///////////////</p><p> fin >> line[i].Num >> line[i].NumI>> li
119、ne[i].NumJ >> line[i].Type >> line[i].R >> line[i].X >> line[i].B>> line[i].K;</p><p> line[i].NumI--;</p><p> line[i].NumJ--;</p><p><b> }<
120、;/b></p><p> fin.getline(buffer,128);</p><p> fin.getline(buffer,128);</p><p> for( i=0; i<nSH; i++ )</p><p><b> {</b></p><p><b&g
121、t; }</b></p><p> fin.close();</p><p> ////////////組成節(jié)點(diǎn)導(dǎo)納矩陣////////////////</p><p> MakeY( nB, nL, line, YG, YB );</p><p> /////////////////內(nèi)存分配//////////////
122、/////</p><p> double* deltaf = new double[npv+npq*2];</p><p> int* p_Jtobus = new int[npv+npq+npq];</p><p><b> int nJ=0;</b></p><p> for( i=0; i<npv+
123、npq+1; i++ )</p><p><b> {</b></p><p> if( bus[i].Type==2 )//PV 節(jié)點(diǎn)</p><p><b> {</b></p><p> p_Jtobus[nJ]=i;</p><p><b> n
124、J++;</b></p><p><b> }</b></p><p><b> }</b></p><p> for( i=0; i<npv+npq+1; i++ )</p><p><b> {</b></p><p>
125、if( bus[i].Type==1 )//PQ 節(jié)點(diǎn)</p><p><b> {</b></p><p> p_Jtobus[nJ]=i;</p><p><b> nJ++;</b></p><p><b> }</b></p><p>
126、<b> }</b></p><p> for( i=0; i<npv+npq+1; i++ )</p><p><b> {</b></p><p> if( bus[i].Type==1 )//PQ 節(jié)點(diǎn)</p><p><b> {</b></p&
127、gt;<p> p_Jtobus[nJ]=i;</p><p><b> nJ++;</b></p><p><b> }</b></p><p><b> }</b></p><p> double** Jac;</p><p>
128、; Jac = (double**)new char[(nJ)*sizeof(void*)];</p><p> for( i=0;i<nJ;i++ )</p><p><b> {</b></p><p> Jac[i]=new double[nJ];</p><p> memset(Jac[i],0,
129、sizeof(double)*(nJ) );</p><p><b> }</b></p><p> double* deltaX;</p><p> deltaX = new double[nJ];</p><p> double mdelta=0;</p><p><b>
130、 int it=0;</b></p><p><b> do</b></p><p><b> {</b></p><p><b> it++;</b></p><p> mdelta = 0.0;</p><p> //form
131、delta p and delta q</p><p> CalDeltaPQ( npv, npq, bus, YG, YB, p_Jtobus, deltaf );</p><p> /////////////形成雅可比矩陣////////////////</p><p> FormJacobian( npv, npq, bus, YG, YB, p_Jto
132、bus, Jac );</p><p> //////////////計(jì)算負(fù)載潮流/////////////////</p><p> NEquation equ;</p><p> equ.SetSize(nJ);</p><p> for( i=0; i<nJ; i++ )</p><p><b
133、> {</b></p><p> equ.Value(i) = deltaf[i];</p><p> for( int j=0; j<nJ; j++ )</p><p> equ.Data(i,j) = Jac[i][j];</p><p><b> }</b></p>
134、<p> equ.Run();</p><p> /////////////修正電壓幅值和電壓相角///////////</p><p> for( i=0; i<nJ; i++ )</p><p><b> {</b></p><p> deltaX[i] = equ.Value(i);<
135、;/p><p> int busi = p_Jtobus[i];</p><p> if( i<npv+npq )</p><p> bus[busi].Phase -= equ.Value(i);</p><p><b> else</b></p><p> bus[busi].Vo
136、lt -= equ.Value(i)*bus[busi].Volt;</p><p> if( fabs(equ.Value(i))>fabs(mdelta) )</p><p> mdelta = equ.Value(i);</p><p><b> }</b></p><p> }while( fabs
137、(mdelta)>1e-5 );//精度控制</p><p> //////////////////系統(tǒng)潮流計(jì)算///////////////// </p><p> /////////////////各線路潮流計(jì)算////////////////</p><p> double* p_Pij, *p_Qij, *p_Pji, *p_Qji;<
138、/p><p> p_Pij = new double[nL];</p><p> p_Qij = new double[nL];</p><p> p_Pji = new double[nL];</p><p> p_Qji = new double[nL];</p><p> for( i=0; i<nL
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力系統(tǒng)潮流計(jì)算的matlab輔助程序設(shè)計(jì)-潮流計(jì)算程序
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)課程設(shè)計(jì)-- 潮流計(jì)算
- 電力系統(tǒng)課程設(shè)計(jì)-----潮流計(jì)算
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)
- 基于matlab電力系統(tǒng)潮流計(jì)算程序設(shè)計(jì)
- 電力系統(tǒng)課程設(shè)計(jì)--潮流計(jì)算
- 課程設(shè)計(jì)--電力系統(tǒng)設(shè)計(jì)潮流計(jì)算
- 電力系統(tǒng)分析潮流計(jì)算課程序設(shè)計(jì)及其matlab程序設(shè)計(jì)
- 電力系統(tǒng)穩(wěn)態(tài)潮流計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)穩(wěn)態(tài)課程設(shè)計(jì)--潮流計(jì)算
- 電力系統(tǒng)潮流短路計(jì)算課程設(shè)計(jì)
- 電力系統(tǒng)潮流計(jì)算課程設(shè)計(jì)報(bào)告
- 電力系統(tǒng)自動(dòng)化課程設(shè)計(jì)--電力系統(tǒng)短路故障的計(jì)算機(jī)算法程序設(shè)計(jì)
- 潮流計(jì)算課程設(shè)計(jì)--基于matlab的電力系統(tǒng)潮流計(jì)算
- 電力系統(tǒng)分析課程設(shè)計(jì)-- 電力系統(tǒng)潮流計(jì)算
評(píng)論
0/150
提交評(píng)論