?? chq_lim.m
字號:
function f = chq_lim(qg_max,qg_min)
%Syntax:
% f = chq_lim(qg_max,qg_min)
% function for detecting generator vars outside limit檢查發(fā)電機發(fā)出的無功功率是否超出標準
% sets Qg to zero if limit exceded, sets Ql to negative of limit
%如果超出限制,置發(fā)電機無功Qg為0,負荷無功Ql為極限的負值
% sets bus_type to 3, and recalculates ang_red and volt_red
% 置節(jié)點類型為3,重新計算這兩個矩陣 見loadflow.m
% changes generator bus_type to type 3將發(fā)電機節(jié)點改為3(負荷節(jié)點)?
% recalculates the generator index重新計算發(fā)電機系數(shù)
% inputs: qg_max and qg_min are the last two clumns of the bus matrix
% 輸入:節(jié)點矩陣的最后兩列是qg_max和qg_min.(發(fā)電機發(fā)出的最大、最小無功)列矩陣
% outputs:f is set to zero if no limit reached, or to 1 if a limit is reached
% 輸出:如果沒超出限制f置0,如果達到極限置1
% Version: 1.1
% Author: Graham Rogers
% Date: May 1997
% Purpose: Addition of var limit index
% Version: 1.0
% Author: Graham Rogers
% Date: October 1996
%
% (c) copyright Joe Chow 1996
global Qg bus_type g_bno PQV_no PQ_no ang_red volt_red
global Q Ql
global gen_chg_idx
% gen_chg_idx indicates those generators changed to PQ buses
% 表示發(fā)電機節(jié)點變?yōu)樨摵晒?jié)點
% gen_cgq_idx = ones(n of bus,1) if no gen at vars limits
% = 0 at the corresponding bus if generator at var limit
% =1陣,n*1,一列, 如果發(fā)電機沒達到無功極限
% =0,達到無功極限的發(fā)電機對應的節(jié)點
f = 0;%初始化
lim_flag = 0;
% indicates whether limit has been reached判斷是否超出極限
gen_idx = find(bus_type ==2);%找出發(fā)電機節(jié)點 一列矩陣
qg_max_idx = find(Qg(gen_idx)>qg_max(gen_idx)); %找出超出極限的節(jié)點 一列的矩陣
qg_min_idx = find(Qg(gen_idx)<qg_min(gen_idx)); %找出小于最小值的節(jié)點,一列的矩陣
if ~isempty(qg_max_idx)%如果有超出最大極限的節(jié)點
%some q excedes maximum
%set Qg to zero
Qg(gen_idx(qg_max_idx)) = zeros(length(qg_max_idx),1);%將這些節(jié)點的發(fā)電機的無功置為0
% modify Ql
Ql(gen_idx(qg_max_idx)) = Ql(gen_idx(qg_max_idx))... (Ql由節(jié)點母線的第七列給出)該節(jié)點的負荷無功-發(fā)電機無功
- qg_max(gen_idx(qg_max_idx));
% modify bus_type to PQ bus改成負荷節(jié)點
bus_type(gen_idx(qg_max_idx)) = 3*ones(length(qg_max_idx),1);%超出極限的節(jié)點的類型改為3
gen_chg_idx(gen_idx(qg_max_idx)) = zeros(length(qg_max_idx),1);%超出無功極限的發(fā)電機節(jié)點對應的=0
lim_flag = 1;%表示已經(jīng)檢查完
end
if ~isempty(qg_min_idx)%如果有超出最小極限的
%some q less than minimum
Qg(gen_idx(qg_min_idx)) = zeros(length(qg_min_idx),1);%set Qg to zero置0
% modify Ql
Ql(gen_idx(qg_min_idx)) = Ql(gen_idx(qg_min_idx))...該節(jié)點的負荷無功-發(fā)電機無功
- qg_min(gen_idx(qg_min_idx));
% modify bus_type to PQ bus改成負荷節(jié)點
bus_type(gen_idx(qg_min_idx)) = 3*ones(length(qg_min_idx),1);%超出極限的節(jié)點的類型改為3
gen_chg_idx(gen_idx(qg_min_idx)) = zeros(length(qg_min_idx),1);%超出無功極限的發(fā)電機節(jié)點對應的=0
lim_flag = 1;%表示已經(jīng)檢查完,節(jié)點有改變
end
%重新生成計算中需要的矩陣及其節(jié)點信息矩陣
if lim_flag == 1%如果已經(jīng)檢查完,節(jié)點有改變
%recalculate g_bno重新計算這個矩陣
nbus = length(bus_type);%賦值:節(jié)點數(shù)
g_bno = ones(nbus,1);% 一列的1陣,全局變量
bus_zeros=zeros(nbus,1);% 一列0陣
bus_index=[1:1:nbus]';% 一列矩陣,從1到節(jié)點總數(shù)
PQV_no=find(bus_type >=2);% 非平衡節(jié)點所在的行數(shù)形成的列矩陣
PQ_no=find(bus_type==3);%負荷節(jié)點所在的行數(shù)形成的列矩陣
gen_index=find(bus_type==2);% 發(fā)電機節(jié)點所在行數(shù)行成的列矩陣
g_bno(gen_index)=bus_zeros(gen_index); % 發(fā)電機節(jié)點所在位置元素為0,其他為1,單列陣
% construct sparse angle reduction matrix建立稀疏矩陣
il = length(PQV_no);%非平衡節(jié)點數(shù)
ii = [1:1:il]';% 一個列陣,從1到節(jié)點總數(shù)
ang_red = sparse(ii,PQV_no,ones(il,1),il,nbus);% 稀疏矩陣:il行nbus列,非0元素是1,一共il個1
% construct sparse voltage reduction matrix
il = length(PQ_no);%負荷節(jié)點數(shù)
ii = [1:1:il]';%單列陣
volt_red = sparse(ii,PQ_no,ones(il,1),il,nbus);%稀疏矩陣
end
f = lim_flag;% =1節(jié)點有變化 =0節(jié)點無變化
return
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -