edwardsy 发表于 2013-1-13 00:20:21

求助!!matpower算潮流PV节点转换问题

现在用matpower工具算潮流,发现一个问题。执行runpf('case××')算得某一个PV节点的无功出力是24.3,然后我修改generator data数据中的Qmax和Qmin,把Qmax改成了24,然后重新用runpf函数来算,可是得到最后的结果,这个PV节点的无功出力还是24.3。
我查看runpf.m文件,发现里面有关于无功限制的语句,就是当无功越界时,将PV节点转为PQ节点。那么为什么执行不了呢?求教各位朋友~~谢谢~~
这是runpf.m文件中关于无功越界处理的语句,从234行开始:
%% find gens with violated Q constraints
            mx = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) > gen(:, QMAX) );
            mn = find( gen(:, GEN_STATUS) > 0 & gen(:, QG) < gen(:, QMIN) );
if ~isempty(mx) || ~isempty(mn)%% we have some Q limit violations
                if isempty(pv)
                  if verbose
                        if ~isempty(mx)
                            fprintf('Gen %d (only one left) exceeds upper Q limit : INFEASIBLE PROBLEM\n', mx);
                        else
                            fprintf('Gen %d (only one left) exceeds lower Q limit : INFEASIBLE PROBLEM\n', mn);
                        end
                  end
                  success = 0;
                  break;
                end

                %% one at a time?
                if qlim == 2    %% fix largest violation, ignore the rest
                   = max([gen(mx, QG) - gen(mx, QMAX);
                                     gen(mn, QMIN) - gen(mn, QG)]);
                  if k > length(mx)
                        mn = mn(k-length(mx));
                        mx = [];
                  else
                        mx = mx(k);
                        mn = [];
                  end
                end

                if verbose && ~isempty(mx)
                  fprintf('Gen %d at upper Q limit, converting to PQ bus\n', mx);
                end
                if verbose && ~isempty(mn)
                  fprintf('Gen %d at lower Q limit, converting to PQ bus\n', mn);
                end
               
                %% save corresponding limit values
                fixedQg(mx) = gen(mx, QMAX);
                fixedQg(mn) = gen(mn, QMIN);
                mx = ;
               
                %% convert to PQ bus
                gen(mx, QG) = fixedQg(mx);      %% set Qg to binding limit
                gen(mx, GEN_STATUS) = 0;      %% temporarily turn off gen,
                for i = 1:length(mx)            %% (one at a time, since
                  bi = gen(mx(i), GEN_BUS);   %%they may be at same bus)
                  bus(bi, ) = ...      %% adjust load accordingly,
                        bus(bi, ) - gen(mx(i), );
                end
                if length(ref) > 1 && any(bus(gen(mx, GEN_BUS), BUS_TYPE) == REF)
                  error('Sorry, MATPOWER cannot enforce Q limits for slack buses in systems with multiple slacks.');
                end
                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文件。
http://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
楼主看看这个课件。
希望对你又帮助~
页: [1]
查看完整版本: 求助!!matpower算潮流PV节点转换问题

招聘斑竹