电力系统潮流计算C语言程序及说明知识分享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验目的
根据所给的电力系统,编制潮流计算程序,通过计算机进行调试,最后完成一个切实可行的电力系统计算应用程序。通过自己设计电力系统计算程序使同学对电力系统分析有进一步理解,同时加强计算机实际应用能力的训练。
程序计算原理
1、概述
应用计算机进行电力系统计算,首先要掌握电力系统相应计算的数学模型;其次是运用合理的计算方法;第三则是选择合适的计算机语言编制计算程序。
建立电力系统计算的相关数学模型,就是建立用于描述电力系统相应计算的有关参数间的相互关系的数学方程式。该数学模型的建立往往要突出问题的主要方面,即考虑影响问题的主要因素,而忽略一些次要因素,使数学模型既能正确地反映实际问题,又使计算不过于复杂。
运用合理的计算方法,就是要求所选用的计算方法能快速准确地得出正确结果,同时还应要求在解算过程中占用内存少,以利提高计算机的解题规模。
选择合适的语言编写程序,就是首先确定用什么计算机语言来编制程序;其次是作出计算的流程图;第三根据流程图用选择的语言编写计算程序。然后上机调试,直到语法上无错误。本程序采用C 语言进行编程。
所编制的程序难免存在逻辑错误,因此先用一个已知结果的系统作为例题进行计算。用程序计算的结果和已知结果相比较,如果结果相差甚远就要逐步分析程序的计算步骤,查出问题的出处;如果结果比较接近,则逐步分析误差来源;直到结果正确为止。
2、电力系统潮流计算的程序算法
潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如母线上的电压(幅值及相角)、网络中的功率分布及功率损耗等。
目前计算机潮流计算的方法主要有牛顿-拉夫逊算法和PQ 分解法。牛顿-拉夫逊算法是数学上求解非线形方程组的有效方法,具有较好的收敛性,曾经是潮流计算中应用比较普遍的方法。PQ 快速分解法是从牛顿-拉夫逊算法演变而来的,是将纯数学的牛顿-拉夫逊算法与电力系统具体特点相结合并进行简化与改进而得出的。PQ 快速分解法比牛顿-拉夫逊算法大大提高了计算速度和节省了内存,故而本程序以PQ 快速分解法进行潮流计算。
1)形成节点导纳矩阵
(1)自导纳的形成
对节点i 其自导纳Y ii 是节点i 以外的所有节点都接地时节点i 对地的总导纳。显然,Y ii
应等于与节点i 相接的各支路导纳之和,即0ii i ij
j
Y y y
=+
∑
式中,y i0为节点i 与零电位节点之间的支路导纳;y ij 为节点i 与节点j 之间的支路导纳。 (2)互导纳的形成
对节点i 与节点k 之间的互导纳是节点i 、k 之间的支路导纳的负值,即ik ik Y y =- 不难理解ki ik Y Y =。若节点i 和k 没有支路直接相连时,便有Y ik =0 (3)含变压器支路的处理
若节点p 、q 间接有变压器,如下图所示,则可作出其∏型等值电路为:
图1 变压器∏型等值电路
则p 、q 的自导纳和节点间的互导纳分别为
221111111
pp qq pq qp k Y kz kz z k Y kz k z k z
Y Y kz
-=
+=-=+===-
2)计算不平衡功率△P 、△Q 并形成修正方程式
对每一个PQ 节点或每一个PV 节点都可以根据下列公式计算出有功功率增量△P
1
(cos sin )(1,2,,1)n
i is i is i j ij ij ij ij j P P P P V V G B i n δδ==-=-+ =-∑V L
而对于每一个PQ 节点还可以根据下面的公式计算出无功功率增量△Q
1
(sin cos )(1,2,,)n
i is i is i j ij ij ij ij j Q Q Q Q V V G B i m δδ==-=-- =∑V L
在有功功率增量和无功功率增量不满足如下约束条件时
{}{
}()()max max k i P k i
Q
P Q
εε
< 利用PQ 分解法则可以形成如下修正方程 1111,111121222,122221,11,21,11111n n n n n n n n n n P B B V V B B B P V V B B B V P V δδδ12----------⎡⎤⎢⎥ B ⎡⎤⎢⎥⎢⎥⎡⎤ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=- ⎢⎥⎢⎥⎢⎥ ⎢⎥ ⎢⎥⎢ ⎥⎢⎥⎣⎦⎢⎥ ⎢⎥⎣⎦ ⎢⎥⎣⎦V L V L V V M M M M M L V V 1111,1121222,222,1,2,m m m m m m m m m Q B B V V B B B Q V V B B B V Q V 12⎡⎤⎢⎥ B ⎡⎤⎢⎥⎢⎥⎡⎤ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=- ⎢⎥⎢⎥⎢⎥ ⎢⎥ ⎢⎥⎢⎥ ⎢⎥⎣⎦ ⎢⎥ ⎢⎥⎣⎦ ⎢⎥⎣⎦ V L V L V V M M M M M L V V 3)利用因子表法求解修正方程 在电网计算中经常遇到这样的问题,对方程组需要反复多次求解,而每次求解仅改变常数项F ,系数矩阵保持不变。按照一般的高斯消去法,对每一改变的常数项,形成包括常数项及系数矩阵在内的增广矩阵,然后消去回代求出其解。可以看出,每次对增广矩阵中A 矩阵元素的消元都是重复的,为了避免这种重复,我们把对相同的系数矩阵重复进行的消去与对不同的常数项进行的消去分开进行,因此对系数矩阵的消去只需进行一次,并在消去的过程中将对常数项进行消去运算的运算因子保存下来,形成所谓因子表,这就是因子表法。因为因子表记录了高斯消去法对常数项进行消去的全部信息,利用它便可对不同常数项进行消去,形成上三角矩阵,最后求出全部未知数。 在使用PQ 分解法时,其系数矩阵是在迭代过程中保持不变的,所以为了节省内存和缩短运算时间我们采取了因子表法。同时由于电网的节点导纳矩阵矩阵是稀疏阵和对称阵,于是我们可以采取只保存系数矩阵的上三角阵来使运算更为简化。 若线性方程组一般形式如下: 111213111222322233333n n n nn n n a a a a x f a a a x f a a x f a x f ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥ =⎢⎥⎢⎥⎢⎥ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥ ⎣⎦⎣⎦⎣ ⎦L L L O M M M 其中111213122232333n n n nn a a a a a a a A a a a ⎡⎤ ⎢⎥ ⎢⎥⎢⎥= ⎢⎥ ⎢⎥⎢⎥ ⎣ ⎦L L L O M 称为系数矩阵,[]123T n X x x x x = L 称为未知数向量, []123T n F f f f f = L 称为常数项向量。将矩阵A 的元素进行如下处理: ()(1)(1)() (1,2,,1;1,2,,)k k k k ij ij ik kj a a a a k i j k k n --=- =- =++L L (1) ()(1)(1,2,,)i i ij i ij ii a a j i i n a --= =++L 得到因子表 111213122232333n n n nn D U U U D U U U D U D ⎡⎤⎢⎥ ⎢ ⎥⎢⎥= ⎢⎥ ⎢⎥⎢⎥ ⎣ ⎦L L L O M 其中 (1)() 1,()i i ii ii ij ij D a U a i j -== <; 再利用因子表进行前代过程,求出每次迭代后的常数项。其前代公式是: ()(1)(1)i i i j j ij i f f U f --=- 求得向量(1) (2) (3) ()123T n n F f f f f ⎡⎤= ⎣⎦L ; 再由因子表与前代得到的向量F ,得到方程组