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

 找回密码
 立即加入
搜索
查看: 1609|回复: 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。
( k8 o0 s6 B% M# N/ ?我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~! W# q" k# Y& k, f3 G& f. C' p3 @
这是runpf.m文件中关于无功越界处理的语句,从234行开始:1 y+ w# u% c/ I8 k$ F1 i
  %% find gens with violated Q constraints
) ^& |, _# C+ k  o& N            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );$ g% Y4 W* C" r
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );8 N+ T* z/ }# |9 d- M4 `, j8 ]
if ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations2 X7 Y7 K* o# S; l4 ]* V+ Q
                if isempty(pv)
3 b/ v  }: |- l2 ~2 M/ h( e( f; v. m1 n                    if verbose8 K' I3 t9 J8 M, o  E; S! i# m! ~
                        if ~isempty(mx) 0 |1 q0 h: O% L+ m
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);
4 N6 M9 z4 D6 j- p( |6 C6 F, i' ~                        else
7 B( u7 X4 E9 w2 A& K                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);2 R1 A& ?% ]8 H& d% a  k3 N3 W
                        end  g3 P# Q+ b6 d, G0 M
                    end
" O; A- I2 U! n8 j# Z! j, c                    success = 0;* S* P$ K, J3 r0 Y8 r7 ^
                    break;, N) G) Q( P8 y
                end
& R; ^9 }" S! x9 b1 T) L' L7 s' t! _) R# v
                %% one at a time?) D+ H, g2 b5 x; E- t! z" t
                if qlim == 2    %% fix largest violation, ignore the rest
4 a. Y9 o! R$ x/ J0 r; T6 Z3 x                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);/ J" l( |6 u. F
                                     gen(mn, QMIN) - gen(mn, QG)]);
6 q9 y. ^  C3 Z5 a: w+ `                    if k > length(mx)
' ^) V7 V: J7 S: f7 F$ E' U0 U                        mn = mn(k-length(mx));0 s2 A1 h0 ?$ _' g
                        mx = [];
# u: j( N3 X+ A8 r( V% m$ ]1 Y8 B                    else
4 E$ S* A" z/ k7 g6 C2 a- v  t                        mx = mx(k);
( ~$ ^# W% ~2 \. {; s) Q                        mn = [];* O( z+ g$ L$ H2 B' f& s% [# r
                    end7 M& [: c8 V. s  G
                end
9 w2 O9 D0 W! R- h/ i6 q0 X" s9 X. ~' O2 t4 @+ p/ Z% L# Q
                if verbose && ~isempty(mx)
6 I' q5 `2 C( n8 q$ T( _7 ^* d                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);: \2 j0 e4 W* d
                end
- W2 f9 e- L) t, T3 J1 K5 I. Y, x                if verbose && ~isempty(mn)
% J. t. X0 G/ G. v                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);
) P4 I! ~# S/ S3 @% \  |7 _+ h                end8 l+ ]8 @  T' k9 q0 k* w3 \
               
1 p" ~  m+ m0 [- }                %% save corresponding limit values* U8 G8 @$ b8 |' r- J, k+ U  D
                fixedQg(mx) = gen(mx, QMAX);
# v# g+ ?% I' I, a. V                fixedQg(mn) = gen(mn, QMIN);
% z9 G) s4 C5 h! L                mx = [mx;mn];
" F- ^6 Y$ Q9 q               
: Y- t8 n4 i7 z  i' z% g                %% convert to PQ bus
+ T; Q- t: G: }/ ~1 |                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
- j' p: U* i" g, B" x6 d                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,& v1 R" s6 e; v: J& L
                for i = 1:length(mx)            %% (one at a time, since" u3 t. Y: y$ T9 P" R2 l$ d
                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)
# I+ m$ k6 q. F* z. o3 J                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,! O0 P7 [) A8 ~  \
                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
: \/ K" f6 G0 p( [                end
$ g/ s' Q  U5 a. ?) l/ V9 h                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)
/ b5 _  A8 H) Z- _# _) D* w& }                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');
& N8 _8 e* E# k                end
, h7 W+ {& G9 J& r                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文件。% M  z, c. u( y/ ]8 Y4 b
http://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
' b6 Q4 m$ h8 f; {7 ^: G楼主看看这个课件。% X& y1 Q3 G4 P! F- W" S
希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2025-4-25 00:30

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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