马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
现在用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 |