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

 找回密码
 立即加入
搜索
查看: 1722|回复: 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。' V7 i+ a+ m9 H6 u8 p
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~: C. ^$ {% g' n8 t: z, V$ f# ?8 ~
这是runpf.m文件中关于无功越界处理的语句,从234行开始:! M( w0 n- ^# [
  %% find gens with violated Q constraints+ [7 U! l' l" q
            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );
5 k3 i4 A# P6 |, F( L# K( `% b1 ^* l            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );& K+ I3 g; o5 n) e1 f( p1 A5 E" _0 r
if ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations" z$ X, `# E9 u- O9 D5 \- y7 |
                if isempty(pv)
) Q- B, G1 d! K" P7 A4 j0 j                    if verbose
# I' K/ d9 b1 x                        if ~isempty(mx)   N- s0 L  ]7 z  j, C! y. p
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);
6 F0 \( {3 ]% J                        else# W/ z  U- F5 [1 v+ O
                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);
0 [1 b, n7 Y% n                        end
* C, }0 r0 c4 }/ ?* f6 d. p0 R                    end
8 Q) d9 [9 w! @$ j                    success = 0;" _, [0 g! C- ~
                    break;
6 r& D% d' y. u; t7 _                end
1 h2 D  }8 d. E; ]. b6 V
) `# o$ q0 S) F( p. a; E; m3 {                %% one at a time?
9 T/ D$ M- W) @, X                if qlim == 2    %% fix largest violation, ignore the rest
" f# s2 F* S" }& @- \                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);3 x2 J& G& {  D9 i6 E- h$ L
                                     gen(mn, QMIN) - gen(mn, QG)]);0 F# \, j. h5 R
                    if k > length(mx)" B5 G; }. D: A. A% L& U
                        mn = mn(k-length(mx));
+ g7 g; v% t* Y( S# z                        mx = [];& y4 ^4 G0 C6 _% F: D6 Z
                    else% Z0 u; K7 D% o( V' g# w% e3 t/ i
                        mx = mx(k);; z" V2 b% p( w5 O" y
                        mn = [];) G' C* w7 e9 O
                    end. W/ U7 A0 v% l! c% U' E' E8 R
                end
4 ^. T5 u" }) ]6 U
4 R: H: {% L! B8 B% {                if verbose && ~isempty(mx)/ Y6 }& t; R/ J
                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);6 B% V3 U+ G2 s* `; s
                end: [1 z" s- q4 z1 w# o: x4 L* l
                if verbose && ~isempty(mn); G  A' G  y9 A
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);
: @7 w2 [2 Q: x! x4 |( O" C                end
6 ~4 }& `$ q! K$ D                + `6 |5 Q9 R3 N( H; w
                %% save corresponding limit values0 \" m/ |: C/ r, i" v( Y
                fixedQg(mx) = gen(mx, QMAX);
9 i, l+ P8 h2 |4 R: V- \, L1 y6 ]                fixedQg(mn) = gen(mn, QMIN);
  G0 J: p& Q: v; B7 g4 T                mx = [mx;mn];
) D8 g' P, K) {& k4 V3 v, r               
$ K5 z* k, h& n2 n                %% convert to PQ bus
9 _& w; \" h& W1 U                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
/ R: r8 t% @9 Q8 v4 N+ y4 `                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,5 `8 l# d' [+ w" d: T# E7 D" |4 t
                for i = 1:length(mx)            %% (one at a time, since( O: H+ k& j' O& l% Q3 }1 z1 F
                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)4 v% R+ N& h3 \* l6 p: j. V* R- q$ C
                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,
8 }' l5 B& }+ m& n                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
5 G. K* z* x; E) Y, |                end
& c6 C" u* v1 i7 h: R. n. a                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)" ~' D1 b9 Y! D: ~
                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');+ o3 C# a8 e$ U) [+ o: j$ @
                end
( i5 W! ]* G2 N% G' o% }5 A                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文件。
. A  J% N7 I8 i* _8 b+ Jhttp://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
* K! b6 t9 [) g楼主看看这个课件。- U( ~! e* Q) Q3 @  V7 ~& A3 b
希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-3-16 12:44

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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