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

 找回密码
 立即加入
搜索
查看: 1817|回复: 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。9 Q# S' W" I! h. @& M2 b
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~6 A$ M& a, l/ m9 J- a3 B' Y( z
这是runpf.m文件中关于无功越界处理的语句,从234行开始:6 p+ v5 h. f+ z) T9 K' t$ M
  %% find gens with violated Q constraints9 S5 O5 z: N) B3 d$ `5 \$ }
            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );: V# c  i( f. f. n* n6 `" w! \
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );
- x  D! U- |1 s: O3 O' d( `2 {if ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations
; o) M7 X, z: c. E) d5 ]                if isempty(pv)
6 n5 h+ s% X# C5 t' z0 f& ^2 J7 ?1 I6 ^                    if verbose
# z* D' d5 z0 z, u                        if ~isempty(mx) 3 n6 N' S6 Q1 v9 d. S, P9 B
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);4 U2 q" [( S' S3 B" k  e$ {
                        else
2 v* |! G0 m8 k4 |! s: R8 W- J                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);- ^# A$ [( |5 Y1 c0 q
                        end/ D$ I- u$ H! x) q5 ^
                    end
- y* K  V+ p; j! w) c5 ?                    success = 0;4 y$ ~# c+ _5 F2 b  |4 |
                    break;
6 N* h/ L. h5 h, D& S1 f  M                end+ s; m& {- T6 f/ x- f8 o: J' N

% f2 {4 h- I/ p- v                %% one at a time?
1 c3 j! R/ K2 }                if qlim == 2    %% fix largest violation, ignore the rest3 E! \+ m4 N1 _7 w5 I& N
                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);3 Z! R3 f" H  h8 Z/ E8 c+ b- P
                                     gen(mn, QMIN) - gen(mn, QG)]);
+ S! m5 [. F* k9 l+ O$ o                    if k > length(mx)
* l/ R3 u# q& c                        mn = mn(k-length(mx));( m: ^, ?# C" Z0 ?& ^
                        mx = [];5 b4 z" @$ w5 G3 k) i  M
                    else3 Z% i, D9 K7 y
                        mx = mx(k);- Y! \/ o; x! t. @/ P
                        mn = [];2 w$ v8 S% O& u: W& {
                    end
7 r: i8 W2 E% p2 A                end- @# F/ c. a0 f, `" }
- s2 n: @0 |  |/ E
                if verbose && ~isempty(mx)4 c2 |; f1 _* D0 ?0 m3 y+ R) y, t
                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);
" f6 A# v6 A4 m" t1 X                end
% i4 b/ ]( y7 k4 h$ Z9 n: _3 U* o                if verbose && ~isempty(mn). O3 y& C. [5 k+ a! i3 l
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);; k1 i) T' _/ ^0 S* r
                end! p  C0 t! l, G6 I0 T
                0 S, }( K0 p7 b: u
                %% save corresponding limit values
+ |, O/ Q' b! z8 _$ |" c                fixedQg(mx) = gen(mx, QMAX);
. P1 d  P& n3 u+ p" s5 o                fixedQg(mn) = gen(mn, QMIN);$ W, I  x! t% s6 x9 d3 K6 D3 m5 h2 ~; ^
                mx = [mx;mn];0 I6 a2 }7 o" r5 ^
                . V* Z) |! x9 t. g
                %% convert to PQ bus' s; k- B; W6 w& @2 S" @9 {. C
                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
8 f8 A: e5 @2 u& @+ x( N) R                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,
: F& f$ _; K2 T4 |4 s5 |* L                for i = 1:length(mx)            %% (one at a time, since$ ~% X" K9 e/ I: ~: y9 t3 H: b
                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)0 h* ?2 O# i9 c. V! y( O
                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,
. I9 B# h& O+ Y6 S                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
( r5 a% v1 y3 {" B                end( Q& v4 @$ a1 ^3 }  ~3 q: M
                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)1 \4 X7 C% f6 N
                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');$ W1 T6 X0 ?0 l% @! }
                end( X) M1 v9 G$ T! f" x2 Y7 [
                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 S7 x: r' _4 w! whttp://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
' ?  L# q. ?* J: u- o' d( m楼主看看这个课件。/ |) _  |5 v$ \& c& v. a0 x
希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2026-8-28 12:13

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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