自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx

上传人:b****6 文档编号:20647612 上传时间:2023-01-24 格式:DOCX 页数:32 大小:309.63KB
下载 相关 举报
自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx_第1页
第1页 / 共32页
自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx_第2页
第2页 / 共32页
自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx_第3页
第3页 / 共32页
自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx_第4页
第4页 / 共32页
自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx

《自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。

自动控制装置课程设计电力系统潮流计算的程序设计Word格式文档下载.docx

写出编程思想及流程框图。

并附录原程序。

图1IEEE9节点电力系统线路图

IEEE9节点电力系统原始数据:

图中GEN1节点为平衡节点,V1=1.04,GEN2和GEN3为PV节点,V2=1.025,P2=1.63,V3=1.025,P3=0.85,其他节点为PQ节点,S7=1.25+j0.5,S8=0.9+j0.3,S9=1.0+j0.35。

表1系统基本参数数据

节点总数

基准电压(KV)

基准功率(MW)

平衡节点

PV节点

PQ节点

计算精度

9

345

100

GEN1

GEN2,3

4~9

10(-1~-14)

表2系统线路原始参数(标幺值)

标号

起始节点i

终止节点j

电阻(R)

电抗(jX)

对地导纳(B/2)

1

2

5

0.000

0.063

0.019

0.072

0.075

3

6

0.012

0.101

0.105

4

0.059

8

0.039

0.170

0.179

0.017

0.092

0.079

7

0.032

0.161

0.153

0.010

0.085

0.088

0.058

表3节点功率、电压数据(标幺值)

节点I

P

Q

V

1.000

1.040

1.630

1.025

0.850

-1.250

-0.500

-0.900

-0.300

-1.000

-0.350

二、设计主要仪器设备和材料

表4设计主要设备

序号

名称

主要用途

计算机

程序编写

三、牛顿法潮流计算的步骤及计算程序框图

牛顿法潮流计算的求解过程大致可以分为以下几步:

(1)输入系统的原始数据,包括系统的信息,各线路和变压器所在节点的编号和等值电路中的参数;

各负荷所在节点的编号及其所取用的有功功率和无功功率;

作为PQ节点的发电机所在节点和编号及所给定的有功功率和无功功率,PV节点的编号和所接发电机的有功功率和电压有效值的给定值,平衡节点的编号和给定的电压有效值。

(2)形成节点导纳矩阵。

(3)给定各PQ节点的电压初值和除平衡节点外各节点电压相位的初值

并组成待求量的初始向量

(4)置迭代次数k=0。

(5)应用

及PV节点和平衡节点所给定的电压,按式1:

计算各PQ节点的有功功率误差

和无功功率误差

以及各PV节点的有功功率误差

,并组成功率误差向量

(6)按式2:

中的收敛判据判断最大的功率误差是否小于容许值,如果满足则转到第(11)步,否则进行下一步。

(7)应用

按式3和式4:

 

计算雅可比矩阵元素,并形成式5中的雅可比矩阵

(8)解修正方程式5,得出

(9)应用式6:

计算各节点电压和相位的修正值,即新的初值。

(10)置k=k+1返回第(5)步继续进行下一轮迭代。

(11)按式7:

计算平衡节点的发电机(或注入)有功功率和无功功率,并按式8:

计算各PV节点发电机(或注入)的无功功率;

按式9和式10:

计算各元件两端的功率和损耗,最后输出计算结果。

与上述步骤相对应的计算程序框图如下图所示:

四、程序代码

//文件一,NEquation.h:

interfacefortheNEquationclass.//

//////////////////////////////////////////////////////////////////////

#if!

defined(AFX_NEQUATION_H__7D6DCBC7_B370_4F2E_A720_4FB8BA7B55D9__INCLUDED_)

#defineAFX_NEQUATION_H__7D6DCBC7_B370_4F2E_A720_4FB8BA7B55D9__INCLUDED_

#if_MSC_VER>

1000

#pragmaonce

#endif//_MSC_VER>

#defineCHECKERROR

classNEquation

{

public:

NEquation();

virtual~NEquation();

voidSetSize(intsize);

double&

Data(intlhs,intrhs);

Value(intlhs);

intRun();

protected:

intm_nNumber;

double*m_nDataBuffer;

double*m_nValue;

voidFactorial();

voidForward();

voidBackward();

virtualdoubleZEROD();

virtualdoubleZEROV();

};

NEquation:

:

NEquation()

m_nDataBuffer=NULL;

m_nValue=NULL;

m_nNumber=0;

}

~NEquation()

if(m_nDataBuffer!

=NULL)delete[]m_nDataBuffer;

if(m_nValue!

=NULL)delete[]m_nValue;

doubleNEquation:

ZEROD(){return0.0;

ZEROV(){return0.0;

voidNEquation:

SetSize(intsize)

if(size<

1)return;

m_nDataBuffer=newdouble[size*size];

m_nValue=newdouble[size];

for(inti=0;

i<

size*size;

i++)m_nDataBuffer[i]=ZEROD();

for(i=0;

size;

i++)m_nValue[i]=ZEROV();

m_nNumber=size;

double&

NEquation:

Data(intlhs,intrhs)

#ifdefined(CHECKERROR)

if((lhs<

m_nNumber)&

&

(lhs>

=0)&

(rhs<

(rhs>

=0))

#endif

returnm_nDataBuffer[lhs*m_nNumber+rhs];

else

printf("

Error"

);

returnm_nDataBuffer[0];

Value(intlhs)

returnm_nValue[lhs];

returnm_nValue[0];

intNEquation:

Run()

Factorial();

Forward();

Backward();

return1;

doublereverse(doubleff){return(double)1.0/ff;

Factorial()

inti,j,k;

m_nNumber;

i++)

{

//规格化formatline;

Data(i,i)=reverse(Data(i,i));

for(j=i+1;

j<

m_nNumber;

j++)Data(i,j)=Data(i,i)*Data(i,j);

//消去

j++)

{

for(k=i+1;

k<

k++)

{

Data(j,k)=Data(j,k)-Data(j,i)*Data(i,k);

}

}

}

Forward()

inti,j;

Value(i)=Data(i,i)*Value(i);

j<

Value(j)=Value(j)-Data(j,i)*Value(i);

Backward()

for(i=1;

i<

for(j=1;

i+1;

Value(m_nNumber-i-1)-=Data(m_nNumber-i-1,m_nNumber-j)*Value(m_nNumber-j);

#endif//!

//////////文件二,LF.h//////////////

#ifndef_LF_LCR_

#define_LF_LCR_

#include"

DataDesign.h"

intMakeY(intnB,intnL,Line*sL,double**YG,double**YB);

intCalDeltaPQ(intnpv,intnpq,Bus*bus,double**YG,double**YB,int*p_Jtobus,double*deltaf);

intFormJacobian(intnpv,intnpq,Bus*bus,double**YG,double**YB,int*p_Jtobus,double**Jac);

#endif//_LF_LCR_

////////文件三,数据设计,DataDesign.h//////////

#ifndef_DATA_LCR_INCLUDE_

#define_DATA_LCR_INCLUDE_

structLine

intNum,NumI,NumJ,Type;

doubleR,X,B,K;

structBus

intNum;

doubleVolt,Phase,GenP,GenQ,LoadP,LoadQ;

intType;

structShunt

intNum,NumI;

doubleG,B;

#endif//_DATA_LCR_INCLUDE_

/////文件四,FormF.cpp//////////

#include<

math.h>

fstream.h>

LF.h"

stdio.h>

//formdeltapanddeltaq

intCalDeltaPQ(intnpv,intnpq,Bus*bus,double**YG,double**YB,int*p_Jtobus,double*deltaf)

inti,j;

//循环变量

intk;

//节点修正变量

doublei1,i2;

doubledphase;

i<

npv+npq+npq;

i++)

if(i<

npv+npq)//formdeltaP

i1=0;

k=p_Jtobus[i];

for(j=0;

j<

npv+npq+1;

j++)

dphase=bus[k].Phase-bus[j].Phase;

i1+=bus[j].Volt*(YG[k][j]*cos(dphase)+YB[k][j]*sin(dphase));

deltaf[i]=bus[k].GenP-bus[k].LoadP-bus[k].Volt*i1;

else

{//formdeltaQ

i2=0;

i2+=bus[j].Volt*(YG[k][j]*sin(dphase)-YB[k][j]*cos(dphase));

deltaf[i]=bus[k].GenQ-bus[k].LoadQ-bus[k].Volt*i2;

for(i=0;

npv+npq*2;

deltaf[i]*=(-1);

return1;

/////文件五,计算雅可比矩阵,FormJ.cpp///////////

malloc.h>

string.h>

//////////////生成雅可比矩阵///////////////////

intFormJacobian(intnpv,intnpq,Bus*bus,double**YG,double**YB,int*p_Jtobus,double**Jac)

intnp=npv+npq;

////////生成H矩阵////////////

double**H;

H=(double**)newchar[(np)*sizeof(void*)];

for(i=0;

np;

i++)

H[i]=newdouble[np];

memset(H[i],0,sizeof(double)*(np));

//清零

doubletemp=0;

for(j=0;

if(i!

=j)

dphase=bus[i+1].Phase-bus[j+1].Phase;

H[i][j]=bus[i+1].Volt*bus[j+1].Volt*(YG[i+1][j+1]*sin(dphase)-YB[i+1][j+1]*cos(dphase));

temp+=H[i][j];

doubledphase1=bus[i].Phase-bus[0].Phase;

H[i][i]=temp*(-1)-bus[i+1].Volt*bus[0].Volt*(YG[i+1][0]*sin(dphase1)-YB[i+1][0]*cos(dphase));

ofstreamfout1("

out.txt"

ios:

app);

/////////生成L矩阵////////////

double**L;

L=(double**)newchar[(np)*sizeof(void*)];

L[i]=newdouble[np];

memset(L[i],0,sizeof(double)*(np));

for(i=npv;

for(j=npv;

L[i][j]=H[i][j];

L[i][i]=-1*H[i][i]-2*bus[i+1].Volt*bus[i+1].Volt*YB[i+1][i+1];

/////////////生成J矩阵///////////////////

double**J;

J=(double**)newchar[(np)*sizeof(void*)];

J[i]=newdouble[np];

memset(J[i],0,sizeof(double)*(np));

np+1;

J[i][j]=-1*bus[i+1].Volt*bus[j+1].Volt*(YG[i+1][j+1]*cos(dphase)+YB[i+1][j+1]*sin(dphase));

temp+=-1*J[i][j];

J[i][i]=temp;

/////////////////生成N矩阵/////////////////

double**N;

N=(double**)newchar[(np)*sizeof(void*)];

N[i]=newdouble[np];

memset(N[i],0,sizeof(double)*(np));

N[i][j]=-1*J[i][j];

N[i][i]=J[i][i]+2*bus[i+1].Volt*bus[i+1].Volt*YG[i+1][i+1];

Jac[i][j]=H[i][j];

for(i=np;

np+npq;

Jac[i][j]=J[i-np+2][j];

for(j=np;

Jac[i][j]=N[i][j-np+2];

Jac[i][j]=L[i-np+2][j-np+2];

//////////////////输出雅可比矩阵///////////////////////

ofstreamfout("

static

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1