电力系统分析大作业报告(C++)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

原创

电力系统分析潮流分析与三相短路计算

年级09级

学院电气与自动化工程学院

专业电气工程及其自动化

程序说明:

本程序实现了从键盘输入各节点参数,各支路参数,进行潮流计算、三相金属性短路计算,并将结果输出到文件中。节点参数的输入顺序与节点序号无关,支路参数参数的输入同样与其头尾结点的序号无关。节点编号从零开始,中间不能出现间断。由于时间紧迫,没能实现有文件输入数据,以及通过键盘输入命令调整节点参数,很是遗憾。

本程序将节点编号(ID)作为作为联系程序各部分的纽带,减小了个部分之间的联系是程序的结构简单化。使用LU解潮流方程,而不是用高斯法,以减少计算量。但关于内存分配还没有优化(毕竟时间紧)。程序中关于函数重载,指针的使用也小有心得。

本程序写了整整两个星期,花了很多精力,后很多收获,对潮流计算又有了更深的理解,同时也耽误了好多时间。有得也有失吧

程序流程图:

程序中参数的意义

1.全局变量

nodes_num(int)节点数目(由外部输入)

branchs_num (int) 支路书目(由外部输入)

pv_num (int) PV节点数目

pq_num (int) PQ节点数目

B_angle_num (int) 与相角有关的电导矩阵阶数

B_u_num (int) 与电压有关的电导矩阵的阶数

array_end (int*) 以某节点为头结点的支路的条数

B (double**) 节点电导矩阵

G (double**) 节点电抗矩阵

b_angle_no (int*) 相角相关矩阵各节点ID数列

b_u_no (int) 电压相关矩阵各节点ID数列

-

NB_angle (double**) 相角相关矩阵'B

-

NB_u (double**) 电压相关矩阵"B

d_angle_angle (double**) 相角变化量数列(其元素为nodes中d_angle_x_u的地址)d_u_u (double**) 电变化量数列(其元素为nodes中d_u的地址)

-的LU分解矩阵

lu_u (double**) "B

-的LU分解矩阵

lu_angle (double**) 'B

d_P (double)

d_Q (double)

fxP (double**) 相角相关矩阵的fx数列(其元素为node中fx_P的地址)

fxQ (double**) 电压相关矩阵的fx数列(其元素为node中fx_Q的地址)

Zf (double**) 短路点所在的节点阻抗矩阵的列(Zf[i][0]=R,Zf[i][1]=X)

Uf (double**) 各节点短路电压矩阵(Uf[i][0]为实部,Zf[i][1]为虚部)

outfile (ofstream) 文件输出流

nodes_array (Node*) 节点数组(以节点ID为序排列)

branchs (Branch**) 支路矩阵(以头结点ID排列)

2.Node

id (int) 节点序号(输入时最小序号为1,内部从0开始)

type (int) 节点类型(平衡节点0,PV节点1,PQ节点2)

u (double) 节点电压

angle (double) 节点电压相角

angle_x_u (double) 相角与电压的乘积

xd (double) 发电机直轴电抗

pi (double) 发电机输出有功与节点流出有功之差

qi (double) 节点流出有功的值

d_u (double) 电压变化量

d_angle_x_u (double) 电压与相角乘积的变化量

P (double) 计算得节点的净流入有功

Q (double) 计算得节点的净流入无功

fx_P (double) (Pi-P)/U

fx_Q (double) (Qi-Q)/U

c_nodes (int[5]) 与本节点相关的节点ID数列(本节点ID为该数列第一个元素)

c_nodes_num (int) 本节点相关节点的数目

3.Branchs

head_id (int) 头结点ID(输入参数)

end_id (int) 尾节点ID(输入参数)

r (double) 线路阻抗(输入参数)

x (double) 线路电抗(输入参数)

b_2 (double) 线路并联电纳(输入参数)

gii (double) 本支路对相关节点自电导的贡献

gij (double) 本支路对相关节点互电导的贡献

bii (double) 本支路对相关节点自电纳的贡献

bij (double) 本支路对相关节点互电导的贡献

程序中函数

void creat_B_angle_u(void) 建立'B

void lu(double **a ,double **lu ,int num) 将线性方程组的系数矩阵进行LU分解

void soving_equations(double **lu,double **x,double **b,int num) 利用LU矩阵进行回代解方程组

void compute_PQ(void) 结算各节点的P、Q

void creat_mat(double***a,int i,int j); 为矩阵分配内存空间

void creat_mat(double***a,int i); 为矩阵分配内存空间

void ini_test(void) 用于测试的参数初始化函数

void ini(void) 从键盘输入的参数初始化函数

void out_mat(double**a,int n1,int n2) 输出矩阵

void out_mat(double**a,int n) 输出矩阵

void out_mat(double *a,int n); 输出数列

void out_paraments(int i) 输出电网潮流结果

void out_const_parament(void) 输出B G矩阵等潮流计算恒定参数

void compute_new_B(void) 计算考虑发电机和负载后的节点导纳矩阵(含B、G)

void compute_Zf(int id) 计算短路点所在的节点阻抗矩阵的列向量(id为短路点序号)void compute_new_BG(void) 计算考虑发电机和负载后的节点导纳矩阵(含B、G)

void a_to_xy(double *a) 将虚数由极坐标表示变为直角坐标表示

void xy_to_a(double *a) 将虚数由表示直角坐标变为极坐标表示

void add_i(double *a,double *b) 虚数加法运算(参数为直角坐标表示,下同)

void add_i(double *c,double *a,double *b) 虚数加法运算

void sub_i(double *a,double *b) 虚数减法运算

void sub_i(double *c,double *a,double *b) 虚数减法运算

void mul_i(double *a,double *b) 虚数乘法运算

void mul_i(double *c,double *a,double *b) 虚数乘法运算

相关文档
最新文档