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

 找回密码
 立即加入
搜索
查看: 1625|回复: 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。
, C% N5 G, `$ ~2 {. [我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~
( V/ D! ]/ ~9 e2 a) T这是runpf.m文件中关于无功越界处理的语句,从234行开始:" r4 `: c6 s. ]) v# S8 ]
  %% find gens with violated Q constraints
% G1 b0 D8 G, _3 C: y            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );
* J: M+ Z+ s9 U8 n            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );
, N; X1 r8 U- Y6 a& xif ~isempty(mx) || ~isempty(mn)  %% we have some Q limit violations8 V9 [3 J0 V6 _) {4 h  o
                if isempty(pv)& }# a* W3 M) D, s4 B
                    if verbose
, b, |2 V+ b$ o( @                        if ~isempty(mx) 6 ^/ D( x4 a+ O2 x& |8 h
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);; O( c/ P1 i5 e3 S2 z: w' a
                        else
6 K9 M3 Y- A* J: R  c                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);
8 N/ ^5 K' l+ w: e                        end
2 Z' s& J! b# `( G                    end/ T, D' {: T7 d
                    success = 0;
2 k3 [% S1 u& `                    break;9 G4 f& W3 g- p& `) X
                end0 J0 c, f- V6 y7 C# D, _# e

: W$ W; X7 H- v0 G& N6 R                %% one at a time?* W. r, [0 n* K9 H7 `. U( e
                if qlim == 2    %% fix largest violation, ignore the rest8 e) M* N  x1 R  }
                    [junk, k] = max([gen(mx, QG) - gen(mx, QMAX);
4 ]: G* k+ J2 m/ V                                     gen(mn, QMIN) - gen(mn, QG)]);
' @0 h% j& m; j5 Q9 Z' c: o1 u                    if k > length(mx)
/ s: O8 ?, J5 V' U' r+ s                        mn = mn(k-length(mx));3 m7 F: Q0 j! N& P( h- }) ^# J
                        mx = [];* r  H  H+ b& u; J0 ]$ n. M
                    else& \! B! u" x/ S: F# @6 w
                        mx = mx(k);
- r4 x# X! y; D3 V1 o8 E2 i                        mn = [];
: R$ W) f: o* `& }! ^+ x                    end
3 u3 y" F3 t% v7 F. t                end9 |7 ^* W$ g( e" ^

5 {8 X0 H' p/ v6 m9 h/ G9 y+ Q                if verbose && ~isempty(mx)
1 O% W5 E1 G2 K3 u4 R. p                    fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);) }- h5 i. s9 d1 h, i% m" }8 x
                end
4 f2 ~  {  {2 L- d1 E/ @6 x                if verbose && ~isempty(mn)" X$ K4 u% g: q( B
                    fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);6 N8 d; @5 p6 w7 r
                end) ~8 i) u4 d/ x% B3 m; A4 J0 H9 ]6 w
               
* `  j2 j6 _1 }; O( V                %% save corresponding limit values, t. L' c9 V$ B% r
                fixedQg(mx) = gen(mx, QMAX);6 K$ e" a0 ^. R+ y
                fixedQg(mn) = gen(mn, QMIN);
* E- R3 H/ g# K# X7 \                mx = [mx;mn];& h7 k+ k% m& ]1 @$ X1 l
               
) O" X8 w* d7 Q2 [2 L( [# }: w' d                %% convert to PQ bus
2 U! M6 ~% S8 _+ ?3 d                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit( H7 A. E6 y6 \3 ?5 n: e
                gen(mx, GEN_STATUS) = 0;        %% temporarily turn off gen,
3 F  K1 T; E  z, d- h4 H                for i = 1:length(mx)            %% (one at a time, since
+ D7 a* ]. Z/ N; v3 C                    bi = gen(mx(i), GEN_BUS);   %%  they may be at same bus)
& {" |  w+ ^; G9 k, |( D( F: w) F                    bus(bi, [PD,QD]) = ...      %% adjust load accordingly,
0 D  C2 {  C% N- X9 T1 J                        bus(bi, [PD,QD]) - gen(mx(i), [PG,QG]);
! A( ]' g- _- o6 S: d: U                end
% |7 }' _/ T5 M, I6 j% T2 Q                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)
5 O; D6 r; ]0 ^$ T) \* L4 l  c                    error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');- w- \4 ]' z# i$ I9 ]
                end
* V( H1 T5 K: C/ }( j& c. l: V8 }                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文件。
8 Y. ^2 g% R9 p; X; dhttp://wenku.baidu.com/view/1df27b718e9951e79b89278d.html* {; x! e; }/ f2 L0 P; ~' }
楼主看看这个课件。
5 f& ^; Y3 ~$ ]! J2 b& Z/ y希望对你又帮助~
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

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

GMT+8, 2025-5-15 07:04

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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