电力系统潮流计算程序实现C语言版(动态节点+稀疏技术)

该程序采用牛顿-拉夫逊法,支持动态节点数和稀疏储存技术。程序读取数据文件data.txt,包含节点功率、电压、阻抗等信息,输出节点参数、导纳矩阵和潮流计算结果。节点分为PQ、PV和平衡节点,线路参数包括阻抗、变压器变比和对地充电。程序提供节点参数表、导纳矩阵和潮流计算结果的节点部分,线路部分待完善。
摘要由CSDN通过智能技术生成

概述

  1. 电力系统潮流计算程序采用的是牛顿-拉夫逊法(直角坐标)

  2. 潮流计算程序的系统节点数是可以动态变化的,根据节点大小分配储存空间

  3. 为了减少储存空间和加快计算速度,根据电力系统节点导纳矩阵稀疏的特点,计算程序运用了稀疏储存技术,详细讲解请见参考目录。

  4. 关于本程序的计算原理和流程图均可参考后面参考目录中的图书

源数据格式说明

源数据有功功率、无功功率、电压、阻抗、感抗、对地充电容纳均以标幺值表示。
数据文件必须命名为data.txt且与潮流计算程序放置于同一个文件中。数据文件data.txt包含两类参数:节点参数和线路参数。节点数据块与线路数据块之间用数字0作为间隔,即在节点数据块结束后,另起一行输入0,然后再在后面按格式要求录入线路参数。

1. 节点参数
节点参数包括:系统节点数Node、节点功率(有功P、无功Q),节点电压(有效值V、相角Delta) ,参数组织格式:

  1. 节点数Node 节点数Node写在参数文件的开头,如:4表明为四节点系统。
  2. 功率和电压P/Q/V/Delta
    首先给出节点参数示例: 2 3 0.5 0 1.10 0 第一列数字2表明该节点的类型为2-PV节点;第二列数字3表明该行数据为节点3的参数;后面三列依次为P、Q、V的给定值,给定值为0,表明该项参数未知;第六列为相角δ,非平衡节点的δ即为PQ迭代的初始相角值,平衡节点的即为给定的相角值。 节点功率为各支路输入功率之和,且规定功率流入节点为正,流出为负。故而负荷功率为负值,发电机功率为正值。
  3. 节点类型的判断 根据节点的给定参数可以将节点分为三种类型:
    1)PQ节点:给定P、Q初始值的节点,用数字代码1表示;
    2)PV节点:给定P、V初始值的节点,用数字代码2表示;
    3)平衡节点:没有给定P、Q初始值,仅给定V的初始值,用数字代码3表示;
    注意:数据文件中,节点顺序为PQ、PV、平衡节点

2.线路参数
线路参数包括:线路阻抗(R,X)、变压器变比k和对地充电(接地支路)容纳b。每一条线路包括节点号在内共有6个参数,6个参数缺一不可。

  1. 线路阻抗Z
    首先给出线路参数示例: 1 4 0.12 0.5 1 0.01920 前两列代表线路两端的节点编号,亦即线路编号14(即41);第三四列代表线路阻抗Z=0.12+j0.5;第五列为变压器变比k;最后一列为线路的对地充电电容的一半,即B/2。 k不为0。当k=1则表明该支路为普通支路;否则该支路为变压器支路。普通支路没有任何特殊要求,但对于变压器支路,有以下注意事项。
  2. 变压器支路
    首先给出变压器线路示例: 3 1 0 0.3 0.909091 0
    1)变比k为转换为变压器支路的标准等值电路(如下图)后的变比。
    这里写图片描述
    2)变压器线路的编号31有特定含义:3对应节点p,1对应节点q。即变压器支路的编号对节点顺序有要求,p节点编号在前,q节点在后。
    3)q节点为全系统参考电压侧。
    程序智能化读取线路数据,用户无需刻意对线路参数进行归类、排序,可随意输入,只要每行数据都各自符合格式要求即可。

输出数据说明

1. 节点参数表
节点参数表实际上只是对源数据的重现,用于对源数据的整理以及检验程序是否成功读取原始数据。 其中,节点类型列中,BS代表平衡节点、PQ代表PQ节点、PV代表PV节点。 参数表后紧随的是对各类节点数目的统计结果。 该表属于对原始数据的基本统计处理。

2. 节点导纳矩阵
节点导纳矩阵以上三角方式按照节点编号顺序输出,括号内部逗号前为导纳Gij、逗号后为容纳Bij。下三角部分可由上三角部分对称得到。

3. 潮流计算结果(节点)
该部分计算结果包含PQ迭代次数k和节点参数计算结果。迭代次数k在65535次以内均可正常显示。一般PQ迭代不会达到这个数值,否则可以认为PQ迭代是发散的。
节点参数计算结果表,展示了PQ迭代收敛时的计算结果,包括非平衡节点的电压相角δ、PQ节点的电压V、PV节点的无功功率Q和平衡节点的功率。

4. 潮流计算结果(线路)(该部分暂未编写,请等待后续完善)
线路功率计算结果表,展示了PQ迭代收敛时的线路功率计算结果S,包括线路有功功率P和无功功率Q。

参考文献

  1. 陈亚明.电力系统计算程序.北京:水利电力出版社,1995
  2. 张伯明,陈寿孙,严正.高等电力网络分析(第2版).北京:清华大学出版社,2007

源代码

/*   FUNCTION : POWER FLOW             */ 

/*   WRITTEN BY : ZAHGN CHUN           */ 

/*   LAST EDITED : 2014-12-10          */ 

#include <stdio.h> 
#include <math.h> 
#include<stdlib.h> 
#include<string.h> 
#include<conio.h> 
#include<iostream>
#include<vector>
using namespace std;

/***  子函数声明  ***/ 
void in_data();   /* 读取数据 */ 
void Y_Form();    /* 生成导纳矩阵 */
void chuzhi();    /* 给节点电压赋初值 */   
void B_Form();    /* 生成雅克比矩阵和求解修正方程*/  
void xinzhi();    /*计算新值*/ 
void PrtNode();   /*输出潮流计算结果*/ 
void PrtY();      /*打印Y矩阵*/ 

/***  全局变量声明  ***/ 

int Node;              /*网络节点数*/ 
int Num;               /*网络支路数*/ 
int i,j,k,k1,k2,k5,l,m,ig,i1,i2,i3,i5,t,s;          /*通用下标值*/ 
int J1,J0,J3;
float tmp;            /*临时数据暂存*/ 
FILE *in,*out;        /*输入、输出文件指针*/ 

int  J5;                //雅克比矩阵第i行非零元素的技术单元
int  k0=1;             //导纳矩阵非零互导纳元素的指针
int  FL=0;             //导纳矩阵非零互导纳元素的个数
float   a1,b1,r1,x1,a,r,x,b;       //寄存单元
float   gij,bij,gi,bi,gj,bj;
float A3;            //第i节点电流的实部
float B3;            //第i节点电流的虚部
float P2,Q2,P3,Q3,C3,D3,C5,D5,A5,B5,C6;

float  PG,QG,PL,QL;     //全网功率
float  E,F,PI;

int N0;               //平衡节点的节点号
float U0;           //存平衡节点的给定电压值
int IQ;               //发电机台数
int IP;               //负荷个数
int N1;               //PV节点个数
float UP=1;;             //PQ节点的电压初值
int   it;              //迭代次数
float  am=0;             //节点功率误差的最大绝对值
int    i0;             //节点功率误差绝对值最大的节点号

//声明变长数组
vector<int> IZA(Num);          //存支路状态数
vector<int> IZ1(Num);          //存支路一端的节点号
vector<int> IZ2(Num);          //存支路另一端的节点号
vector<float> Z1(Num);          //存支路正序电阻
vector<float> Z2(Num);          //存支路正序电抗
vector<
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值