当前位置:首页 > 电力系统潮流程序开发
第6章 牛拉法潮流计算程序开发
6.1概述
电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态,即各母线的电压,各元件中流过的功率,系统的功率损耗等等。在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量的分析比较供电方案或运行方式的合理性、可靠性和经济性。此外电力系统潮流计算也是计算系统动态稳定和静态稳定的基础。所以潮流计算是研究电力系统的一种最基本和最重要的计算。
电力系统潮流计算分为离线计算和在线计算,前者主要用于系统规划设计、安排系统的运行方式,后者则用于正在运行系统的实时监视和实时控制。本质上离线和在线潮流计算原理是相同的,都应满足如下几点要求:
1. 计算方法可靠,收敛性好。 2. 占用较少的计算机内存。 3. 计算速度高。
4. 用户界面友好,方便使用。
6.2 牛顿-拉夫逊法计算潮流
6.2.1 计算不平衡功率和电压误差
电力网络运行中各个节点电压、各输电线路的功率电流传输过程中有功率损耗和电压降落,所以产生了不平衡量。
节点功率方程式:
??YijUj?0 Pi?jQi?Uij?1n**其中:
Pi,Qi分别为第 i节点的注入有功功率和无功功率。
Pi?PGi?PLi,PGi,PLi分别为发电机及负荷的有功功率; Qi?QGi?QLi,QGi,QLi分别为发电机及负荷的无功功率。
??e?jf本程序采用直角坐标的牛顿-拉夫逊法潮流计算方法,即节点电压表示为:Uiii功率方程可分成实部和虚部两个方程:
Pi?ei??Gijej?Bijfj??fi??Gijfj?Bijej??0j?1nj?1nnnQi?fi??Gijej?Bijfj??ei??Gijfj?Bijej??0j?1j?1
Gij,Bij为节点导纳矩阵元素Yij的实部和虚部Pi?PG?PLQi?QG?QL
double CountUnevenpower()//计算不平衡功率和电压误差,并返回最大值
{
int nl=0;//不平衡矢量下标 double dtMax=0.0;
for(int i=0;i //MessageBox(NULL,_T(\错误\ PNode *Node=OpNodeArray[i]; //节点i的电压实部和虚部 double Uiv=Node->GetVoltageP(); double Uid=Node->GetVoltageD(); int count=0;//YUArray的下标 if(Node->GetNodeType()==0)//PQ节点,先计算无功不平衡功率 { count=0; //先赋初值 DT[nl]=Node->GetS2();//无功 //与对角线元素有关的不平衡功率 DT[nl]=DT[nl]+YDArray[i].b*(Uid*Uid+Uiv*Uiv);//无功 //与导纳矩阵下三角部分有关的不平衡功率,但导纳矩阵下三角元素存在上三角部分的对称位置 for(int k=0;k for(int j=count;j if(YJArray[j]==i) { int nj=k;//上三角对应的下三角元素的列号 PNode *Nodej=OpNodeArray[nj]; double Ujv=Nodej->GetVoltageP(); double Ujd=Nodej->GetVoltageD(); DT[nl]=DT[nl]-Uid*(YUArray[j].g*Ujv-YUArray[j].b*Ujd)+Uiv*(YUArray[j].g*Ujd+YUArray[j].b*Ujv); break; } } count=count+YIArray[k]; } //与上三角部分有关的不平衡功率 for(int j=count;j int nj=YJArray[j];//YU中第j个元素的列号 PNode *Nodej=OpNodeArray[nj]; double Ujv=Nodej->GetVoltageP(); double Ujd=Nodej->GetVoltageD(); DT[nl]=DT[nl]-Uid*(YUArray[j].g*Ujv-YUArray[j].b*Ujd)+Uiv*(YUArray[j].g*Ujd+YUArray[j].b*Ujv); } if(abs(DT[nl])>dtMax)dtMax=abs(DT[nl]); nl++; } else if(Node->GetNodeType()==1)//PV节点,计算电压误差 { //MessageBox(NULL,_T(\错误\ DT[nl]=Node->GetS2()*Node->GetS2(); DT[nl]=DT[nl]-(Uiv*Uiv+Uid*Uid);//电压幅值平方 nl++; } count=0;//YUArray的下标 //计算有功不平衡功率 //先赋初值 DT[nl]=Node->GetS1();//有功 //与对角线元素有关的不平衡功率 DT[nl]=DT[nl]-YDArray[i].g*(Uiv*Uiv+Uid*Uid);//有功 //与导纳矩阵下三角部分有关的不平衡功率,但导纳矩阵下三角元素存在上三角部分的对称位置 for(int k=0;k for(int j=count;j if(YJArray[j]==i) { int nj=k;//上三角对应的下三角元素的列号 PNode *Nodej=OpNodeArray[nj]; double Ujv=Nodej->GetVoltageP(); double Ujd=Nodej->GetVoltageD(); DT[nl]=DT[nl]-Uiv*(YUArray[j].g*Ujv-YUArray[j].b*Ujd)-Uid*(YUArray[j].g*Ujd+YUArray[j].b*Ujv); break; } } count=count+YIArray[k]; } //与上三角部分有关的不平衡功率 for(int j=count;j int nj=YJArray[j];//YU中第j个元素的列号 PNode *Nodej=OpNodeArray[nj]; double Ujv=Nodej->GetVoltageP(); double Ujd=Nodej->GetVoltageD(); DT[nl]=DT[nl]-Uiv*(YUArray[j].g*Ujv-YUArray[j].b*Ujd)-Uid*(YUArray[j].g*Ujd+YUArray[j].b*Ujv); } if(abs(DT[nl])>dtMax)dtMax=abs(DT[nl]); nl++; } return dtMax; } 6.2.2消去运算 网络方程是一组线性方程。矩阵的对角元素是一行中的主元素,即其绝对值最大。因此,解网络方程时,不必增加选择主元素步骤,可以直接采用按行消去,按行回代的高斯消去法来解网络方程。下面讨论按行小消去,按行回代的高斯消去法的具体步骤 int count=0; for(int i=0;i if(JT[i]!=0.0) { for(int j=count;j int nj=JJ[j]; JT[nj]=JT[nj]-JU[j]*JT[i]; } DT[nl]=DT[nl]-DT[i]*JT[i]; } count=count+JI[i]; } //规格化,并保存 count=0; for(int i=nl+1;i<2*Npq+2*Npv;i++) { if(JT[i]!=0.0) { count++; JT[i]=JT[i]/JT[nl];
共分享92篇相关文档