设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 1789|回复: 1

求助!!matpower算潮流PV节点转换问题

[复制链接]

该用户从未签到

尚未签到

发表于 2013-1-13 00:20:21 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
现在用matpower工具算潮流,发现一个问题。执行runpf('case××')算得某一个PV节点的无功出力是24.3,然后我修改generator data数据中的Qmax和Qmin,把Qmax改成了24,然后重新用runpf函数来算,可是得到最后的结果,这个PV节点的无功出力还是24.3。; L& \+ k; M' ]" p1 L! G
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~/ M3 q, }. T7 {
这是runpf.m文件中关于无功越界处理的语句,从234行开始:
( p* ?. {$ X( P  %% find gens with violated Q constraints# n! x1 c3 Y: C+ C! h) A
            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );, m. U4 V# L6 K2 g/ y/ Z
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );5 O" @$ B, b: Y- _, D
if ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations- x% b. t4 q5 w) _, u) d( P" N
                if isempty(pv)
1 `' s& y9 R, r: [. F* j1 T5 `5 ~8 R                    if verbose
# d0 g0 t8 L! C. E                        if ~isempty(mx)
' s( D% T3 e7 s, R+ q                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);# {" v3 `4 M9 ]6 B- [6 C
                        else
8 V9 T* X  r- E- n7 d5 y! J                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);- f0 h3 _3 G$ }. Z
                        end
# _7 |* r& H2 v, a2 a3 n2 C                    end( @. e9 v! o- i+ O: n
                    success = 0;0 V5 q& c: G/ ?  g3 |  j2 ^
                    break;
3 r2 y3 o4 h+ G                end% l$ T- \6 v  w4 s7 K( e

$ h8 a8 l% Y* N/ q% b4 Z: B+ V                %% one at a time?- g: c+ Y, D5 g* y
                if qlim == 2    %% fix largest violation, ignore the rest, l8 K% ]* {1 w( ]
                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);* ~: c, z! I: O6 q7 ?8 R
                                     gen(mn, QMIN) - gen(mn, QG)]);
9 r) n' p  t2 P( Y$ v0 l: v6 H                    if k > length(mx)* @. E- ?$ g9 J, n
                        mn = mn(k-length(mx));
, M8 m: a8 C8 w6 U+ Q                        mx = [];0 v1 _& H4 k: e1 X1 ?
                    else2 _4 c5 a/ }- ~( v6 h
                        mx = mx(k);! ?; O' F: \. G0 N
                        mn = [];3 a+ k. ?5 M2 X4 b5 Z- n6 Z% S, ^9 a
                    end; H5 N( f1 l; L5 v2 `0 l
                end: O) h/ X* k+ ~+ X8 u4 e
5 r: }( @* l# G
                if verbose && ~isempty(mx)
# Y) w; e  i5 B/ d4 `8 V- c                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);
) G5 P3 u9 b4 S6 ^3 W1 m# P: y$ c7 }                end
$ g& r* u' j0 d% L- E                if verbose && ~isempty(mn)2 l$ S5 z) ~4 Z+ k
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);
0 P8 u0 Y0 i( O& l8 d4 l- `  I                end
3 e+ m: }6 l+ J) x, s7 A% Y                . F5 _  {6 ~! \( Z: A3 A
                %% save corresponding limit values# a1 Y7 O1 i: F& x5 f+ @
                fixedQg(mx) = gen(mx, QMAX);
; k4 k) t7 b8 D/ E1 h                fixedQg(mn) = gen(mn, QMIN);
. T. ]! m) T: K( s# i                mx = [mx;mn];
% O) J- V7 A1 `( B0 _                : I3 ^# g2 b- E# c* Z/ v5 M
                %% convert to PQ bus9 _; B( J$ t, ^
                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
8 f1 |# N7 s$ U) _! M- C$ _                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,- _0 P5 R  w" [, O' m* m" s
                for i = 1:length(mx)            %% (one at a time, since
6 J& L4 A. t, Y                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)
) R2 `) A+ @* |. r" V" b, l, h* c9 P                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,9 H9 G3 C" s, w9 X
                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
. g/ w& C$ S- ]: X( n% T                end# o$ s# T7 C  L. h' f6 d2 `
                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)- G/ z. U8 o6 ^9 B0 f" E6 N2 X
                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');6 `' Y+ I9 O& s! G$ A
                end, h: t6 U1 V% W; f9 W4 k
                bus(gen(mx, GEN_BUS), BUS_TYPE) = PQ;   %% & set bus type to PQ
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

尚未签到

发表于 2013-3-5 17:02:24 | 显示全部楼层
要想无功限制,必须设置mpoption中的qlim值,当qlim为1时才能无功限制,默认值为0,不进行无功限制。楼主可以看看mpoption.m文件。
( P2 j  o) a( E1 t; b2 {http://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
6 p0 }5 j) D+ T! C# d楼主看看这个课件。
+ M- L' P* Q# P% e希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

GMT+8, 2026-7-3 02:34

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表