求助!!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 要想无功限制,必须设置mpoption中的qlim值,当qlim为1时才能无功限制,默认值为0,不进行无功限制。楼主可以看看mpoption.m文件。
http://wenku.baidu.com/view/1df27b718e9951e79b89278d.html
楼主看看这个课件。
希望对你又帮助~
页:
[1]