潮流计算文档格式.docx
《潮流计算文档格式.docx》由会员分享,可在线阅读,更多相关《潮流计算文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
4.手算线路潮流
5.编写matlab程序计算潮流
6.完成课程设计报告
划
6月1日,查找相关资料,规划课程设计进度
6月2日,建立等值电路,手算线路潮流
6月3日,编写matlab程序计算潮流
6月4日,完成实验设计报告
考
资
料
[1]何仰赞.温增银.《电力系统分析》(第三版):
华中科技大学,2002
[2]于群.曹娜.《MATLAB/SIMULINK电力系统建模与仿真》(第一版):
机械工业出版社,2013
指导教师签字
教研室主任签字
年月日
学生姓名:
胡国宝学号:
031140722专业(班级):
课程设计题目:
潮流算法的手算以及matlab算法
指导教师评语:
成绩:
信息工程学院课程设计成绩评定表
摘要
潮流计算是电力系统非常重要的分析计算,用以研究系统规划和运行中提出的各种问题。
对规划中的电力系统,通过潮流计算可以检验所提出的电力系统规划方案能否满足各种运行方式的要求;
对运行中的电力系统,通过潮流计算可以预知各种负荷变化和网络结构的改变会不会危及系统的安全,系统中所有母线的电压是否在允许的范围以内,系统中各种元件(线路、变压器等)是否会出现过负荷,以及可能出现过负荷时应事先采取哪些预防措施等。
潮流计算是电力系统分析最基本的计算。
除它自身的重要作用之外,在《电力系统分析综合程序》(PSASP)中,潮流计算还是网损计算、静态安全分析、暂态稳定计算、小干扰静态稳定计算、短路计算、静态和动态等值计算的基础。
传统的潮流计算程序缺乏图形用户界面,结果显示不直接难与其他分析功能集成。
网络原始数据输入工作大量且易于出错。
本文采用MATLAB语言运行WINDOWS操作系统的潮流计算软件。
而采用MATLAB界面直观,运行稳定,计算准确。
关键词:
电力系统潮流计算牛顿-拉夫逊算法MATLAB
目录
1需求分析1
2原理概述2
2.1手算潮流原理2
2.2牛顿-拉夫逊算法2
3详细设计4
3.1等值电路4
3.2手算潮流(手算过程在附页上)4
3.3牛顿拉夫逊算法的MATLAB实现4
3.4程序结果13
4心得体会16
参考文献17
1.需求分析
电力系统潮流计算是电力系统分析中的一种最基本的计算,是对复杂电力系统正常和故障条件下稳态运行状态的计算。
潮流计算的目标是求取电力系统在给定运行状态的计算,即节点电压和功率分布,用以检查系统各元件是否过负荷。
各点电压是否满足要求,功率的分布和分配是否合理以及功率损耗等。
对现有的电力系统的运行和扩建,对新的电力系统进行规划设计以及对电力系统进行静态和稳态分析都是以潮流计算为基础。
实际电力系统的潮流技术那主要采用牛顿—拉夫逊法。
运行方式管理中,潮流是确定电网运行方式的基本出发点;
在规划领域,需要进行潮流分析验证规划方案的合理性;
在实时运行环境,调度员潮流提供了多个在预想操作情况下电网的潮流分布以及校验运行可靠性。
在电力系统调度运行的多个领域问题是研究电力系统稳态问题的基础和前提。
在用数字见算计算机解电力系统潮流问题的开始阶段,普遍采取以节点导纳矩阵为基础的逐次代入法。
这个方法的原理比较简单,要求的数字计算机内存量比较差下,适应50年代电子计算机制造水平和当时电力系统理论水平,但它的收敛性较差,当系统规模变大时,迭代次数急剧上升,在计算中往往出现迭代不收敛的情况。
这就迫使电力系统的计算人员转向以阻抗矩阵为基础的逐次代入法。
阻抗法改善了系统潮流计算问题的收敛性,解决了导纳无法求解的一些系统的潮流计算,在60年代获得了广泛的应用,阻抗法德主要缺点是占用计算机内存大,每次迭代的计算量大。
当系统不断扩大时,这些缺点就更加突出,为了克服这些缺点,60年代中期发展了以阻抗矩阵为基础的分块阻抗法。
这个方法把一个大系统分割为几个小的地区系统,在计算机内只需要存储各个地区系统的阻抗矩阵及它们之间联络的阻抗,这样不仅大幅度的节省了内存容量,同时也提高了计算速度。
克服阻抗法缺点是另一个途径是采用牛顿-拉夫逊法。
这是数学中解决非线性方程式的典型方法,有较好的收敛性。
在解决电力系统潮流计算问题时,是以导纳矩阵为基础的,因此,只要我们能在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿法潮流程序的效率。
自从60年代中期,牛顿法中利用了最佳顺序消去法以后,牛顿法在收敛性。
内存要求。
速度方面都超过了阻抗法,成为了60年代末期以后广泛采用的优秀方法。
2.原理概述
2.1手算潮流原理
过程1解法:
总结为从已知功率、电压端,用齐头并进逐段求解功率和电压。
过程2解法:
总结为“一来、二去”共两步,一来即:
设所有未知电压节点的电压为线路额定电压,用第十章中适当的公式从已知功率端开始逐段求功率,直到推得已知电压点的功率;
二去即:
从已知电压点开始,用推得的功率和已知电压点的电压,选用第十章中适当的公式,往回逐段向未知电压点求电压。
2.2牛顿拉-夫逊算法
牛顿--拉夫逊法(简称牛顿法)在数学上是求解非线性代数方程式的有效方法。
其要点是把非线性方程式的求解过程变成反复地对相应的线性方程式进行求解的过程。
即通常所称的逐次线性化过程。
对于非线性代数方程组:
即
(2-2-1)
在待求量x的某一个初始估计值
附近,将上式展开成泰勒级数并略去二阶及以上的高阶项,得到如下的经线性化的方程组:
(2-2-2)
上式称之为牛顿法的修正方程式。
由此可以求得第一次迭代的修正量
(2-2-3)
将
和
相加,得到变量的第一次改进值
。
接着就从
出发,重复上述计算过程。
因此从一定的初值
出发,应用牛顿法求解的迭代格式为:
(2-2-4)
(2-2-5)
上两式中:
是函数
对于变量x的一阶偏导数矩阵,即雅可比矩阵J;
k为迭代次数。
有上式可见,牛顿法的核心便是反复形式并求解修正方程式。
牛顿法当初始估计值
和方程的精确解足够接近时,收敛速度非常快,具有平方收敛特性。
牛顿潮流算法突出的优点是收敛速度快,若选择到一个较好的初值,算法将具有平方收敛特性,一般迭代4~5次便可以收敛到一个非常精确的解。
而且其迭代次数与所计算网络的规模基本无关。
牛顿法也具有良好的收敛可靠性,对于对以节点导纳矩阵为基础的高斯法呈病态的系统,牛顿法也能可靠收敛。
牛顿法所需的内存量及每次迭代所需时间均较高斯法多。
牛顿法的可靠收敛取决于有一个良好的启动初值。
如果初值选择不当,算法有可能根本不收敛或收敛到一个无法运行的节点上。
对于正常运行的系统,各节点电压一般均在额定值附近,偏移不会太大,并且各节点间的相位角差也不大,所以对各节点可以采用统一的电压初值(也称为平直电压),如假定:
或
(2-2-6)
这样一般能得到满意的结果。
但若系统因无功紧张或其它原因导致电压质量很差或有重载线路而节点间角差很大时,仍用上述初始电压就有可能出现问题。
解决这个问题的办法可以用高斯法迭代1~2次,以此迭代结果作为牛顿法的初值。
也可以先用直流法潮流求解一次以求得一个较好的角度初值,然后转入牛顿法迭代。
3.详细设计
3.1等值电路
潮流计算题目如下:
(a)潮流计算用的电网结构图
化作等值电路
(b)潮流计算等值网络
3.2手算潮流(手算过程在附页上)
3.3牛顿拉夫逊算法的MATLAB实现
(1)主程序
clear
basemva=100;
%基准容量
accuracy=0.0001;
%给定的收敛标准
maxiter=10;
%最大的迭代次数
%节点数据
%IEEE30-BUSTESTSYSTEM(AmericanElectricPower)
%BusBusVoltageAngle---Load-----------Generator-----Injected
%NocodeMag.DegreeMWMvarMWMvarQminQmaxMvar
busdata=[121.050.00.20.00.60.45-110
201.000.00.250.00.00.0000
301.000.00.00.00.00.0000
401.000.00.00.00.00.0000
521.050.00.30.00.360.27-110
601.000.00.250.00.00.0000
721.050.00.00.00.50.31-110
801.000.00.80.00.00.0000
921.050.00.350.00.50.375-110
1001.000.00.050.00.00.0000
1101.000.00.00.00.00.0000
1201.000.150.00.00.00.0000
1311.050.00.00.02.521.56-10100
1401.000.01.20.00.00.0000];
%节点节点电压电压---负荷-----------发电机-----补偿无功
%编号类型模值相角有功无功有功无功无功上限无功下限
%在节点类型中,1表示平衡节点,2表示PV节点,0表示PQ节点
%线路数据
%Linecode
%BusbusRX1/2B=1forlines
%nlnrp.u.p.u.p.u.>
1or<
1tr.tapatbusnl
linedata=[120.0110.26300.909
230.0690.1380.0521
2140.2430.4810.0231
340.0290.65600.909
560.0140.32800.909
680.1210.2410.0121
6140.0690.1380.0271
780.0030.16700.909
980.0030.05400.909
8100.030.03400.909
10110.0260.0520.0011
11120.0030.05300.909
131400.04200.909];
lfybus%formthebusadmittancematrix形成节点导纳矩阵
lfnewton%LoadflowsolutionbyNewton-Raphsonmethod用牛顿拉夫逊法计算潮流
busout%Printsthepowerflowsolutiononthescreen显示计算结果
lineflow%computesanddisplaysthelineflowandlosses计算并显示线路潮流和损耗
(2)%Thisprogramprintsthepowerflowsolutioninatabulatedform
%onthescreen.
%clc
disp(tech)
fprintf('
MaximumPowerMismatch=%g\n'
maxerror)
No.ofIterations=%g\n\n'
iter)
head=['
BusVoltageAngle------Load---------Generation---Injected'
'
No.Mag.DegreeMWMvarMWMvarMvar'
];
disp(head)
forn=1:
nbus
fprintf('
%5g'
n),fprintf('
%7.3f'
Vm(n)),
%8.3f'
deltad(n)),fprintf('
%9.3f'
Pd(n)),
Qd(n)),fprintf('
Pg(n)),
%9.3f'
Qg(n)),fprintf('
%8.3f\n'
Qsh(n))
end
\n'
),fprintf('
Total'
)
Pdt),fprintf('
Qdt),
Pgt),fprintf('
Qgt),fprintf('
%9.3f\n\n'
Qsht)
(3)%PowerflowsolutionbyNewton-Raphsonmethod
%牛顿拉夫逊法计算潮流
ns=0;
ng=0;
Vm=0;
delta=0;
yload=0;
deltad=0;
%平衡节点数目PV节点数目电压幅值相角线路幅值相角
nbus=length(busdata(:
1));
%节点数
fork=1:
nbus%节点数据的代入,存入矩阵
n=busdata(k,1);
kb(n)=busdata(k,2);
Vm(n)=busdata(k,3);
delta(n)=busdata(k,4);
Pd(n)=busdata(k,5);
Qd(n)=busdata(k,6);
Pg(n)=busdata(k,7);
Qg(n)=busdata(k,8);
Qmin(n)=busdata(k,9);
Qmax(n)=busdata(k,10);
Qsh(n)=busdata(k,11);
%分别获得节点矩阵各列的数据,存入相应的列矩阵
ifVm(n)<
=0Vm(n)=1.0;
V(n)=1+j*0;
%当节点电压模值小于0时就赋值为1并把相角赋为0
elsedelta(n)=pi/180*delta(n);
%把角度转换成弧度
V(n)=Vm(n)*(cos(delta(n))+j*sin(delta(n)));
%形成复数型电压
E(n)=Vm(n)*cos(delta(n));
F(n)=Vm(n)*sin(delta(n));
%获得电压的实部和虚部
P(n)=(Pg(n)-Pd(n))/basemva;
Q(n)=(Qg(n)-Qd(n)+Qsh(n))/basemva;
S(n)=P(n)+j*Q(n);
%获得复数型功率
end
ifkb(k)==1ns=ns+1;
else,end%平衡节点数
ifkb(k)==2ng=ng+1;
else,end%PV节点数
ngs(k)=ng;
%已有的PV节点数
nss(k)=ns;
%已有的平衡节点数
Ym=abs(Ybus);
t=angle(Ybus);
%将导纳矩阵转换成相应的模值和相角矩阵
g=Ym.*cos(t);
%得到电导矩阵
b=Ym.*sin(t);
%得到电纳矩阵
ss=2;
sr=nbus-ng+1;
ifkb(k)==1
kc
(1)=1;
Vm1
(1)=Vm(k);
delta1
(1)=delta(k);
Pd1
(1)=Pd(k);
Qd1
(1)=Qd(k);
Pg1
(1)=Pg(k);
Qg1
(1)=Qg(k);
Qmin1
(1)=Qmin(k);
Qmax1
(1)=Qmax(k);
Qsh1
(1)=Qsh(k);
V1
(1)=V(k);
E1
(1)=E(k);
F1
(1)=F(k);
P1
(1)=P(k);
Q1
(1)=Q(k);
S1
(1)=S(k);
ifkb(k)==0
kc(ss)=0;
Vm1(ss)=Vm(k);
delta1(ss)=delta(k);
Pd1(ss)=Pd(k);
Qd1(ss)=Qd(k);
Pg1(ss)=Pg(k);
Qg1(ss)=Qg(k);
Qmin1(ss)=Qmin(k);
Qmax1(ss)=Qmax(k);
Qsh1(ss)=Qsh(k);
V1(ss)=V(k);
E1(ss)=E(k);
F1(ss)=F(k);
P1(ss)=P(k);
Q1(ss)=Q(k);
S1(ss)=S(k);
ss=ss+1;
ifkb(k)==2
kc(sr)=2;
Vm1(sr)=Vm(k);
delta1(sr)=delta(k);
Pd1(sr)=Pd(k);
Qd1(sr)=Qd(k);
Pg1(sr)=Pg(k);
Qg1(sr)=Qg(k);
Qmin1(sr)=Qmin(k);
Qmax1(sr)=Qmax(k);
Qsh1(sr)=Qsh(k);
V1(sr)=V(k);
E1(sr)=E(k);
F1(sr)=F(k);
P1(sr)=P(k);
Q1(sr)=Q(k);
S1(sr)=S(k);
sr=sr+1;
end%对节点进行排序【平衡节点PQ节点PV节点】
%【PV节点数=总结点数-PQ节点数+1】
ifkb(n)==1
ss1=2;
sr1=nbus-ng+1;
fork=1:
Ybus1(1,1)=Ybus(n,k);
Ybus1(1,ss1)=Ybus(n,k);
ss1=ss1+1;
Ybus1(1,sr1)=Ybus(n,k);
sr1=sr1+1;
end%平衡节点导纳数据代入导纳矩阵
ifkb(n)==0
Ybus1(ss,1)=Ybus(n,k);
Ybus1(ss,ss1)=Ybus(n,k);
Ybus1(ss,sr1)=Ybus(n,k);
ss=ss+1;
end%PQ节点导纳数据代入导纳矩阵
ifkb(n)==2
Ybus1(sr,1)=Ybus(n,k);
Ybus1(sr,ss1)=Ybus(n,k);
Ybus1(sr,sr1)=Ybus(n,k);
sr=sr+1;
%PV节点导纳数据代入导纳矩阵
end%重新形成节点导纳矩阵
Ym1=abs(Ybus1);
t1=angle(Ybus1);
g1=Ym1.*cos(t1);
b1=Ym1.*sin(t1);
m=2*nbus-2;
%雅可比矩阵的行数即雅可比矩阵的列数
maxerror=1;
%最大误差
converge=1;
%是否收敛
iter=0;
%迭代次数
%Startofiterations%迭代开始
clearADCJDX
whilemaxerror>
=accuracy&
iter<
=maxiter%Testformax.powermismatch
fori=1:
m
A(i,k)=0;
%InitializingJacobianmatrix初始化雅可比矩阵为全0阵
end,end
iter=iter+1;
nn=n-ns;
%n之前的节点数
%lm=nbus+n-ngs(n)-nss(n)-ns;
%全部PQ节点数+全部PV节点数+n之前的PQ节点数
ln=nbus+n-ns-ns;
%n之前的节点数+全部PQ节点数+全部PV节点数
A11=0;
B22=0;
P11=0;
Q22=0;
%J33=0;
L44=0;
forl=1:
ifl~=n
%ifnl(i)==n|nr(i)==n
%ifnl(i)==n,l=nr(i);
%ifnr(i)==n,l=nl(i);
end%找到与n节点相连的支路
B22=B22+F1(l)*g1(n,l)+E1(l)*b1(n,l);
A11=A11+E1(l)*g1(n,l)-F1(l)*b1(n,l);
%ifkb(n)~=1
%else,end
ifkc(n)~=1&
kc(l)~=1%n和l都不是平衡节点
ll=l-ns;
%l之前的节点数
lk=nbus+l-ns-ns;
%全部PQ节点数+全部PV节点数+l之前节点数
%H阵的非对角线元素
A(nn,ll)=-E1(n)*b1(n,l)+g1(n,l)*F1(n);
%N阵的非对角线元素
A(nn,lk)=E1(n)*g1(n,l)+b1(n,l)*F1(n);
%ifkb(n)==0
%end
ifkc(n)==0
%J阵的非对角线元素
A(ln,ll)=-A(nn,lk);
%L阵的非对角线元素
A(ln,lk)=A(nn,ll);
%ifkb(n)==0&
kb(l)==0
%A(lm,lk)=-Vm(n)*Ym(n,l)*sin(t(n,l)-delta(n)+delta(l));
elsee