VB潮流计算及算例
本帖最后由 chancechang 于 2010-11-17 09:55 编辑自己编写的VB潮流计算及算例。 1 输入1.1支路数据输入格式:支路数据采用一个(NB 5)的矩阵存储,其每一行的输入格式为:节点号n,节点号m,支路电阻R,支路电抗X,对地电纳BC/2或变压器非标准变比k。其中,变压器非标准变比k所对应的节点号取负。1.2节点数据输入格式:节点数据采用一个(NN 5)的矩阵存储,其每一行的输入格式为:节点号n,发电机有功PG,发电机无功QG,负荷有功PL,负荷无功QL。1.3PV节点数据输入格式:PV节点数据采用一个(NPV 2)的矩阵存储,其每一行的输入格式为:节点号n,节点电压幅值。1.4程序中的原始数据存储在input文件中。input文件输入格式:input文件的第1行输入如下数据:NB,NN,NPV,NS,NM,ES;input文件的第2行至第(NB+1)行输入支路数据;input文件的第(NB+2)行至第(NN+NB+1)行输入节点数据;input文件的第(NN+NB+2)行至第(NPV+NN+NB+1)行输入PV节点数据。2潮流计算程序结构设计潮流计算程序采用直角坐标形式的牛顿—拉夫逊法编写,其设计思路是:(1)定义潮流计算中用到的变量和数值。(2)调用give_code子程序,按PQ节点→PV节点→平衡节点的顺序进行节点编号。(3)调用squence子程序:对支路数据、节点数据和PV节点数据分别按节点号由小到大进行排序。(4)调用initialize子程序,对各节点电压和注入功率赋初值。(5)调用get_Y子程序,形成节点导纳矩阵。(6)令初始循环次数为0.(7)循环次数加1,若循环次数大于15,则计算结束,输出结果,否则继续循环。(8)调用getPQ子程序,求出各节点注入有功和无功功率。(9)调用getDPQU子程序,得到△P、△Q、△U2,若最大误差满足精度要求,则终止循环,否则继续循环。(10)调用get_J子程序,形成雅克比矩阵。(11)调用getDU子程序,利用高斯消元法求解方程组,得到各节点电压的增量。(12)调用get_newV,得到各节点电压的新值。转到第(6)步。(13)调用getPQ子程序,得到各节点最终注入有功和无功功率。(14)调用get_BP子程序:得到各支路两端功率及系统有功、无功网损。3程序中的主要变量KG:发电机节点数;KT:变压器支路数;KQ:电容器无功补偿节点数;KN:控制变量总个数;NB:系统支路数;NN:系统节点数;NPV:PV节点数(含平衡节点);NS:平衡节点编号;NM:最大节点编号;ES:潮流计算精度误差;GBC:发电机端电压步长;GGC:发电机端电压干长;GZC:发电机端电压枝长;TBC:变压器主变变比步长;TGC:变压器主变变比干长;TZC:变压器主变变比枝长;QBC:电容器无功补偿容量步长;QGC:电容器无功补偿容量干长;QZC:电容器无功补偿容量枝长;CSM:最小值重复出现最大次数;DG:发电机端电压每档调节量;DT:变压器主变变比每档调节量;DQC:电容器无功补偿每组投切量;GVS:发电机端电压上限;GVX:发电机端电压下限;TS:变压器主变变比上限;TX:变压器主变变比下限;QCS:电容器无功补偿容量上限;QCX:电容器无功补偿容量下限;CS:主程序中最小值重复出现次数;DM:主程序中最小值的个数;MG:发电机端电压调节档数;MT:变压器主变抽头调节档数;MC:电容器无功补偿容量分组总数;fmin:网损的最小值;f0:网损的初始值;VS:负荷节点电压上限;VX:负荷节点电压下限;SZS:生长点集内的无功优化可行解个数;SJ:每一次循环利用随机数产生器产生的随机数;Ploss:系统有功功率损耗。4程序中的主要数组ZB(5*(NB+1)):存储支路数据;PQ(5*(NN+1)):存储节点数据;PV(2*(NPV+1)):存储PV节点数据;GJD(KG):发电机节点号集合;TJD(KT):变压器支路号集合;QJD(KQ):电容器无功补偿节点号集合;QG(KG):存储各发电机无功出力;QGS(KG):存储各发电机无功出力上限;QGX(KG):存储各发电机无功出力下限;VV(NN+1):存储各负荷节点电压幅值;GBII(4*(NN+1)):存储节点导纳阵对角元素;GBIJ(3*(NB+1)):存储节点导纳阵非对角元素;V(2*(NN+1)):存储各节点电压实部及虚部;F(2*(NN+1)):存储各节点注入有功及无功;SG(2*NN,KN):存储树干上的各生长点;Xmin(30,KN):存储各目标函数最小值;JDJ(1001,KN):存储每一次循环的基点;CZ(KN):存储无功优化初始可行解;DJ(KN):存储无功优化各控制变量;GZ(2*KN):存储树干上无功优化各可行解的目标函数值;SZZ(50 + 2 * KN):存储树枝上无功优化各可行解的目标函数值;SZD(50 + 2 * KN, KN):存储树干及树枝上所有无功优化可行解;XD(2 * KN, KN):存储每一次循环新产生的生长点;PP(50 + 2 * KN):存储生长点集内各可行解的形态素浓度值;KJ(50 + 2 * KN):存储生长点集内各可行解的状态空间值;XZ(2*KN):存储各新生长点的目标函数值;Neww(NM):存储新节点号;old(NM):存储旧节点号;P(2*(NN+1)):存储各节点注入有功及无功;UJ(4 * NN * NN):存储雅克比矩阵中的各元素;DV(2*(NN+1)):存储各节点电压实部及虚部增量。变量说明:(1)如若程序中的一些已定义变量在潮流计算中暂不需要使用,使用时不用理会,使用过程中没有任何影响。Input中数据为某县中压网数据,可作为参考数据。《电力系统稳态分析》例4-3数据也已在input1中给出,仅供参考。(2)程序窗体中command2控件原为程序深入计算时,为方便调用潮流计算子程序而已预设。虽不在窗体显示,但已在程序中使用,不影响程序计算。如若需增加command控件,在添加后command控件后,修改command编号便可正常使用。5程序说明(1)PQ,PV节点经程序排列后,顺序为从PQ到PV节点。如《电力系统稳态分析》例4-3中,平衡节点1经排序后成为5号节点,PQ节点2,3,4,5,经排序后成为1,2,3,4号节点。注意排序后的节点号码变化,方便对照计算结果。(2)部分程序段针对简单的潮流计算暂不需用,分别为Sub zhuanxing,Sub xiuzheng,Sub yuexian,Sub paixu,用户在进行深入研究时可以借用。(3)此程序为牛顿--拉夫逊法潮流计算的计算机算法,按照此法的计算步骤分段编程。其中求解电压变化量程序段为数学方程解法,用户可参考相关资料。 很牛B 牛啊,看看 笑纳了,O(∩_∩)O~,向楼主学习 很不错,不懂的话还希望向楼主请教 楼主你太厉害了,顶你! 回复 1# chancechang
学习 牛人啊
psasp
psasp
页:
[1]