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

 找回密码
 立即加入
搜索
查看: 1818|回复: 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。5 m* O3 r/ Y7 A# b# y+ |) J: Q
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~
7 G6 e; N6 ]4 R7 F! T. N这是runpf.m文件中关于无功越界处理的语句,从234行开始:
- Z6 W6 k. @0 d0 t  %% find gens with violated Q constraints/ a5 _5 U2 S, H( B; C; a9 j% Q
            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );5 k. E, T4 R3 E
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );
" b* R. r! c4 gif ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations2 m5 @9 H' p7 A! y/ J+ j6 _
                if isempty(pv)7 r9 a% P  D2 H$ u$ y" m! c8 y
                    if verbose8 P% N/ g' ?7 s# X9 h: {! o
                        if ~isempty(mx) ; z+ T9 q! n/ ]  b
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);4 m$ g. v) X: u7 @& m( K) d
                        else4 ?) O, w( S) C) I
                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);
& L6 @8 B0 d' D+ F% R                        end
) x' {3 n  n3 e0 V                    end4 g! ]" j- m9 d! ~/ P
                    success = 0;
2 n( V8 d( a) [# E, _  y% C                    break;
3 z  s& o/ i2 L; ]                end
$ [4 s: O) P8 q) v2 Q& t6 l
1 U8 p  F: k( L+ i) A9 W2 T                %% one at a time?5 i+ @" B/ ?" f+ e5 c3 S
                if qlim == 2    %% fix largest violation, ignore the rest+ K9 r+ S7 v- E3 T/ J" ]
                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);2 H1 }# d- f) \' w3 a
                                     gen(mn, QMIN) - gen(mn, QG)]);
8 _7 R1 I9 P$ b$ X. I# S- i                    if k > length(mx)' m, N' ]; W& T9 Q
                        mn = mn(k-length(mx));
" h" G% g) `- Z. A- w                        mx = [];4 ~6 C3 z4 i- Q: ]  q
                    else+ d* B! L( a; J6 _! N. }
                        mx = mx(k);
4 m3 I% A8 v* z- j                        mn = [];
7 M0 u6 a4 [* _$ s' a/ I                    end; O1 m& Q2 F  o
                end
! d$ S% H; d: H4 b0 N. V: q4 [  [& L* y" ]1 W6 K3 U
                if verbose && ~isempty(mx)
, o' d# u$ Y( q2 V3 u) b4 S! I' u                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);7 z4 b- ^: I$ j  z+ i' I
                end6 l% b6 j: W% {3 t/ U6 E
                if verbose && ~isempty(mn). l! @# y6 Z' C! w
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);8 G/ W: J, Q' T' J
                end# J9 \$ A4 \+ P9 \+ M! [. G: i
               
$ s6 a; F+ {7 X9 U" X9 g& }6 t. H                %% save corresponding limit values
5 K" Q. c0 i. r7 G9 Q# l# B# q                fixedQg(mx) = gen(mx, QMAX);
2 L- B+ ~. W0 W, e% H' J/ d                fixedQg(mn) = gen(mn, QMIN);% j, G  p% i4 i7 r
                mx = [mx;mn];
8 ?9 g6 Q4 a; Q' x               
: v, Q8 ?- L# r& h  Z                %% convert to PQ bus  a! B2 z! K% E! u( X: v. V
                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
1 d% N% z* Z% n# g) a: j1 n                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,
; d8 \4 z0 o& b                for i = 1:length(mx)            %% (one at a time, since
6 u! G' f/ \$ M  q4 Y& @8 {+ @1 a; `                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)
4 T1 `# s6 G. ?: K! j4 o                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,& }8 u1 i6 K; r% E. S
                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);' ~2 V8 u+ X/ f6 o# I* n
                end
( N& L8 H1 ]. T                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)) S7 q- N5 h. D. h2 N# J- r6 O0 e5 ^
                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');( w) N" m$ _+ `7 P1 B. p
                end; x. c! t+ {: _" ]4 t% o8 g
                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文件。
5 }: i+ C/ t: r6 s! @8 ]; Ehttp://wenku.baidu.com/view/1df27b718e9951e79b89278d.html/ ^* H  w; r1 K% t' [! @( y
楼主看看这个课件。
  b2 d. W' y' i# `* I/ a1 s9 }希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-10-9 05:38

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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