实验目的
根据所给的电力系统,编制潮流计算程序,通过计算机进行调试,最后完成一个切实可
行的电力系统计算应用程序。通过自己设计电力系统计算程序使同学对电力系统分析有进一
步理解,同时加强计算机实际应用能力的训练。
程序计算原理
1、概述
应用计算机进行电力系统计算,首先要掌握电力系统相应计算的数学模型;其次是运用
合理的计算方法;第三则是选择合适的计算机语言编制计算程序。
建立电力系统计算的相关数学模型,就是建立用于描述电力系统相应计算的有关参数间
的相互关系的数学方程式。该数学模型的建立往往要突出问题的主要方面,即考虑影响问题
的主要因素,而忽略一些次要因素,使数学模型既能正确地反映实际问题,又使计算不过于
复杂。
运用合理的计算方法,就是要求所选用的计算方法能快速准确地得出正确结果,同时还
应要求在解算过程中占用内存少,以利提高计算机的解题规模。
选择合适的语言编写程序,就是首先确定用什么计算机语言来编制程序;其次是作出计
算的流程图;第三根据流程图用选择的语言编写计算程序。然后上机调试,直到语法上无错
误。本程序采用 C 语言进行编程。
所编制的程序难免存在逻辑错误,因此先用一个已知结果的系统作为例题进行计算。用
程序计算的结果和已知结果相比较,如果结果相差甚远就要逐步分析程序的计算步骤,查出
问题的出处;如果结果比较接近,则逐步分析误差来源;直到结果正确为止。
2、电力系统潮流计算的程序算法
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系
统的运行状态,如母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
目前计算机潮流计算的方法主要有牛顿-拉夫逊算法和 PQ 分解法。牛顿-拉夫逊算法是
数学上求解非线形方程组的有效方法,具有较好的收敛性,曾经是潮流计算中应用比较普遍
的方法。PQ 快速分解法是从牛顿-拉夫逊算法演变而来的,是将纯数学的牛顿-拉夫逊算法
与电力系统具体特点相结合并进行简化与改进而得出的。PQ 快速分解法比牛顿-拉夫逊算法
大大提高了计算速度和节省了内存,故而本程序以 PQ 快速分解法进行潮流计算。
1)形成节点导纳矩阵
(1)自导纳的形成
对节点 i 其自导纳 Yii 是节点 i 以外的所有节点都接地时节点 i 对地的总导纳。显然,Yii
应等于与节点 i 相接的各支路导纳之和,即
Y
ii
y
i
0
j
y
ij
式中,yi0 为节点 i 与零电位节点之间的支路导纳;yij 为节点 i 与节点 j 之间的支路导纳。
(2)互导纳的形成
Y
对节点 i 与节点 k 之间的互导纳是节点 i、k 之间的支路导纳的负值,即 ik
y
ik
Y
不难理解 ki
Y 。若节点 i 和 k 没有支路直接相连时,便有 Yik=0
ik
(3)含变压器支路的处理
若节点 p、q 间接有变压器,如下图所示,则可作出其∏型等值电路为:
图 1 变压器∏型等值电路
则 p、q 的自导纳和节点间的互导纳分别为
1
kz
1
kz
Y
qp
Y
qq
Y
Y
pp
pq
1
z
1
2
k z
1
k
kz
1
k
2
k z
1
kz
2)计算不平衡功率△P、△Q 并形成修正方程式
对每一个 PQ 节点或每一个 PV 节点都可以根据下列公式计算出有功功率增量△P
P P
i
is
P P V
i
i
is
n
j
1
(
V G
ij
j
cos
ij
B
ij
sin
ij
)
(
i
1,2,
,
n
1)
而对于每一个 PQ 节点还可以根据下面的公式计算出无功功率增量△Q
Q Q Q Q V
i
is
is
i
i
n
j
1
(
V G
ij
j
sin
ij
B
ij
cos
ij
)
(
i
1,2,
,
m
)
在有功功率增量和无功功率增量不满足如下约束条件时
max
max
(
P
i
(
Q
i
k
)
k
)
P
Q
利用 PQ 分解法则可以形成如下修正方程
1
B
1,
B
2,
B
n
B
22
B
n
1,2
1,1
B
11
B
21
B
n
n
1
n
1
1,
n
1
1
P
1
V
1
P
2
V
2
P
n
V
1
n
Q
1
V
1
Q
2
V
2
Q
m
V
m
V
1
V
2
V
n
1
1
2
n
1
m
B
1,
B
2,
B
m m
B
22
B
m
,2
m
,1
,
B
11
B
21
B
m
V
1
V
2
V
m
3)利用因子表法求解修正方程
在电网计算中经常遇到这样的问题,对方程组需要反复多次求解,而每次求解仅改变常
数项 F,系数矩阵保持不变。按照一般的高斯消去法,对每一改变的常数项,形成包括常数
项及系数矩阵在内的增广矩阵,然后消去回代求出其解。可以看出,每次对增广矩阵中 A
矩阵元素的消元都是重复的,为了避免这种重复,我们把对相同的系数矩阵重复进行的消去
与对不同的常数项进行的消去分开进行,因此对系数矩阵的消去只需进行一次,并在消去的
过程中将对常数项进行消去运算的运算因子保存下来,形成所谓因子表,这就是因子表法。
因为因子表记录了高斯消去法对常数项进行消去的全部信息,利用它便可对不同常数项进行
消去,形成上三角矩阵,最后求出全部未知数。
在使用 PQ 分解法时,其系数矩阵是在迭代过程中保持不变的,所以为了节省内存和缩
短运算时间我们采取了因子表法。同时由于电网的节点导纳矩阵矩阵是稀疏阵和对称阵,于
是我们可以采取只保存系数矩阵的上三角阵来使运算更为简化。
若线性方程组一般形式如下:
n
n
a
a
a
a
11
12
13
1
a
a
a
22
23
2
a
a
33
3
a
nn
n
x
1
x
2
x
3
x
n
2
f
1
f
f
3
f
n
其中
A
22
a
a
12
11
a
a
13
a
23
a
a
1
a
2
a
33
3
a
n
n
n
nn
x x x
1
3
2
称为系数矩阵,
X
2
称为未知数向量,
x
n
T
F
f
1
f
2
f
3
称为常数项向量。将矩阵 A 的元素进行如下处理:
f
T
n
)
(
k
a
ij
(
k
a
ij
1)
(
k
a
ik
1)
)
(
k
a
kj
k
(
1,2,
,
i
1;
k
j
1,
k
2,
, )
n
( 1)
i
a
ij
( )
i
a
ij
( 1)
i
a
ii
得到因子表
(
j
i
1,
i
2,
, )
n
U
n
n
U
D U U
1
11
12
13
U
D U
23
22
U
D
3
33
D
nn
2
n
(
i
其中
D
ii
1
( 1)
i
a
ii
,
U
ij
( )
i
a
ij
;
j
)
再利用因子表进行前代过程,求出每次迭代后的常数项。其前代公式是:
f
( )
i
j
f
( 1)
i
j
U f
ij
i
( 1)
i
求得向量
F
f
(1)
1
f
(2)
2
f
(3)
3
( )
n
n
f
T
;
再由因子表与前代得到的向量 F,得到方程组
2
n
n
n
12
U
U U
13
1
U
U
23
U
3
x
1
x
2
x
3
x
n
(1)
f
1
(2)
f
f
(3)
2
3
( )
n
n
f
求解出此方程即可得到线性方程组的解向量
X
x x x
1
3
2
4)多次迭代最终求得 V 和以及全线路功率
利用上面所介绍的方法求解修正方程组
。
x
n
T
P
1
V
1
P
2
V
2
P
n
V
n
1
1
B
1,
B
2,
B
n
B
22
B
n
1,2
1,1
B
11
B
21
B
n
n
1
n
1
1,
n
1
V
1
V
2
V
n
1
1
2
n
1
3
Q
1
V
1
Q
2
V
2
Q
m
V
m
m
B
1,
B
2,
B
m m
B
22
B
m
,2
m
,1
,
B
11
B
21
B
m
V
1
V
2
V
m
可以求得
V
V V
1
2
V
V
3
m
T
和
1
n
1
2
3
T
。
)
k
(
i
P
i
(
i
(
k
)
max
其满足约束条件
再利用 (
i
k
1)
k
)
,
V
i
(
k
1)
(
k
)
V
i
V
i
(
k
)
(
k
)
求得每次迭代后的结果。多次迭代当
Q
时,迭代结束。迭代结束后即可得
P
和
max
Q
i
到各节点的 V 和,再根据 V、来计算 PV 节点的无功功率 Q 和平衡节点的功率以及网络
中的功率分布。
PV 节点及平衡节点无功功率计算公式为:
P V
i
i
n
j
1
V G
ij
(
j
平衡节点有功功率计算公式为:
Q V
i
i
n
j
1
V G
ij
(
j
cos
B
ij
ij
sin
ij
)
sin
B
ij
ij
cos
ij
)
以下图所标示的正方向,输电线路功率的计算公式如下:
*
S
ij
P
ij
*
jQ V I
i
ij
ij
*
V y
i
2
ij
0
*
*
V V V y
i
ij
(
)
i
j
图 2 支路功率计算
对其进行实部虚部进行分解可得 P、Q 计算公式为:
B
ij
sin
(
P V G VV G
ij
ij
j
)
B
Q
ij
ij
cos
VV G
i
ij
ij
2
(
V B
i
ij
i
ij
(
i
2
0
j
sin
ij
ij
)
B
ij
cos
ij
)
程序及说明
4
1、主要变量说明
1)结构体类型说明
(1)节点功率结构体
struct Nodetype
{
float P,Q;
};
其中,P 为节点的有功功率,Q 为无功功率。节点功率不区分负荷功率和发电机功率,
其值为本节点连接的各支路输入功率及节点所接负荷、发电机功率之和,且规定功率流入节
点为正,流出为负。详细说明参见下一章“算例及结果”的第二节“源数据格式说明”。
(2)线路参数结构体
struct Linetype
{
float G,B,B0,k;
};
其中,G、B 为线路的导纳和容纳;B0 为线路的考虑变压器Π型等值电路后的对地充电
容纳的一半 Bc/2;k 为折算到标准变压器支路后的变压器变比。详细说明参见下一章“算例
及结果”的第二节“源数据格式说明”。
2)变量说明
表 2 程序主要变量说明
主要变量
类型
Node
NP
NQ
Num
No
V
Dlta
Y
BP、BQ
count
eP、eQ
kp、kq
dP、dQ
int
int
int
int *
struct Nodetype *
float *
float *
struct Linetype **
float **
unsigned int
const
int
float *
3、程序流程图
含义
系统总节点数
PV+PQ 节点数,即非平衡节点数
PQ 节点数
原始节点编号与程序表示编号映射数组
节点功率数组
节点电压有效值数组
节点电压相角数组
线路参数矩阵
有功、无功简化雅克比矩阵 B’、B”
PQ 迭代次数
有功、无功迭代精度控制
有功、无功迭代结束标志
有功、无功不平衡量数组
5
开始
读取节点数据
读取线路数据并形成 Y 矩阵
形成矩阵 B’及 B’’并求取因子表
设定 PQ 节点电压初值及各节点电压相角的初值
迭代计算
计算平衡节点功率及全部线路功率
结束
图 3 程序主流程图
6
开始
Kp=1,Kq=1
Kp=0 且 Kq=0
Count++
Kp=0
计算△P,△P/N
Kp=0 ?
求△δ
δ+=△δ
Kp=0 且 Kq=0
Kq=0
计算△Q、△Q/N
Kq=0?
求△V
V+=△V
图 4 迭代部分流程图
7
结束