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

 找回密码
 立即加入
搜索
查看: 1452|回复: 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. Z, i8 R3 [. u8 w! ?# a8 s- U
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~
6 X9 m( }  i8 w% ?' J这是runpf.m文件中关于无功越界处理的语句,从234行开始:5 J4 \8 r: S* s7 M* D
  %% find gens with violated Q constraints
: {8 {% G% F. S# Z" H            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );! f. a2 z# ]) v( \8 D$ x
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );/ U# G! C7 c9 W3 @' A& e
if ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations
3 `0 n( T# W: W: @. N+ M1 A                if isempty(pv)$ c- o( v+ p2 Q& t$ C
                    if verbose* L7 @6 t6 J6 S$ {' h8 n
                        if ~isempty(mx) * F6 N( N8 U) F( z: H! x# Q7 Q# a
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);. S% c% s- k1 _4 Z: c
                        else
1 X3 h  F2 Z4 M  M7 F; x0 t0 n                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);
0 O: @* Z5 S9 ~; Q) J5 v                        end; v* ~9 l( S. l/ V- w0 q# O. J. k
                    end
" A7 F' C# l) Z  T! R% q                    success = 0;
8 x* |  h+ ~7 I% J' r2 A                    break;
0 P4 {2 a, D- v5 s                end! ]' m9 G; q, b0 f/ S4 i

. g) h7 W( P4 Z0 M9 ?4 b4 C, F                %% one at a time?
) o0 {+ W& M; c6 l6 A                if qlim == 2    %% fix largest violation, ignore the rest) K& k# q% k1 }
                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);
( @) \8 b: {" `                                     gen(mn, QMIN) - gen(mn, QG)]);
$ n  l7 Q: G5 b. `4 \; `                    if k > length(mx)6 f! e2 @: m" }6 g9 W
                        mn = mn(k-length(mx));$ T+ x. T4 i( ~5 a9 M
                        mx = [];
) }* R9 d! y, K0 f. m4 i4 ]9 ~                    else
1 r( ~' L9 e% z& G6 h% A                        mx = mx(k);4 ?" C9 t: t( G6 W) U; u! |
                        mn = [];& }" c$ Z" U8 ]! e
                    end  D, r# }* Y( ]+ a: O
                end
! R+ p+ g* g3 Y+ @) ^! z; N1 D3 `; H# r# F) W2 u' S- }
                if verbose && ~isempty(mx)
! m5 a8 i% ~$ f( R; j3 ?2 E, _                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);1 z( g! V: r+ j. V
                end3 N3 N& e( W+ T
                if verbose && ~isempty(mn)5 j! {( P3 x, M7 a% `6 j
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);
0 ]1 c% E' P. d7 E; O2 B                end
4 L$ J1 |( N+ b; s$ d               
- _! A7 i: X- B2 a/ N0 s                %% save corresponding limit values
; e- Z- n, G" n8 T" Y* l6 f                fixedQg(mx) = gen(mx, QMAX);
* |) c, n' y& J  e; Y; |% V                fixedQg(mn) = gen(mn, QMIN);
: v0 J7 M5 S3 D9 n$ A  |                mx = [mx;mn];  F0 [' r; M  s7 a5 ^
                $ q) g6 D  E5 ?" G, A8 j3 R* `
                %% convert to PQ bus% b) u6 A  N! G: K1 G3 Y
                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
- Y0 s, {; C9 w/ v6 o$ l                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,0 d2 H3 O. H" X1 L; b2 i0 L5 R( G
                for i = 1:length(mx)            %% (one at a time, since
, s, w5 m6 e  i- _& E                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)
( K9 w  k$ ^, [9 U) C                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,
: {' F( I" P/ }; Y                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
4 F" v+ _1 J4 {. H  R1 i  ?                end% Q5 O# H6 ?, t: y4 o
                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)
: M$ _) V$ B& r" O" P: W6 j                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');
' {5 H! W6 g" P' z$ Y) W: H  `# Q                end+ H1 B1 l% F0 Z$ |( `
                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文件。
, D% n5 n, p6 O$ L4 Q; V& k: R. chttp://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
  z, s+ Y, r" Q: X楼主看看这个课件。2 V' A6 m( g2 m  Q! N- d
希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2024-3-29 19:40

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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