?? lftap.m
字號:
% m-file for calculating on load tap changing計算有載分接頭的變化.
% 要求使LT母線電壓保持在電壓極限內,這時假定HT母線電壓不變。
% 檢查LT母線電壓幅值,如果超出極限,計算電壓和極限之間的偏差,
% 改變分抽頭減小偏差,如果達到分抽頭的極限還不能使電壓正常,提示錯誤。
% called by Loadflow被loadflow調用
% calculates desired tap assuming HT(from bus) voltage fixed假定高壓端電壓(初始節點)固定
% and the to bus voltage is set to the voltage limit另一端節點設置為電壓極限
% the tap is set to an allowable tap seting分接頭設置允許范圍
% and the line matrix tap setting entry is changed線路矩陣的分接頭設置改變
% if all voltages are within limits the loadflow is taken as
% converged如果所有的電壓都在范圍內,潮流就收斂
%
%Author Graham Rogers
%Date October 1996
max_v_idx = find(V>=volt_max);%找出電壓大于等于最大電壓限制的
min_v_idx = find(V<=volt_min);%找出電壓小于等于最小電壓限制的
mm_chk = 0;
if (~isempty(max_v_idx)|~isempty(min_v_idx))%如果找到表示或的關系
mm_chk = 1;
if ~isempty(max_v_idx)%如果找到大于等于電壓極限的
% change on load taps to correct voltage改變分接頭使電壓正常
% assumes that bus to be corrected is the to bus 假定末端節點被修正?
for fb = 1 : length(max_v_idx)%循環次數等于電壓越界的節點個數
chk_fb = find(line(:,2) == bus(max_v_idx(fb),1));% 第n次循環是:找到越界電壓所在的支路位置
if ~isempty(chk_fb)%如果有
% freeze dc taps凍結直流節點分抽頭?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
if ~isempty(n_dcl)%*************************************************????在loadflow中定義了global,直流抽頭調節
for kt = 1:2*n_dcl
dc_chk = find(chk_fb==ac_line(kt));
if ~isempty(dc_chk);chk_fb(dc_chk)=[];end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if ~isempty(chk_fb) %如果找到非空
if line(chk_fb,8)~=0 %第8列是最大分接頭,給出了最大分接頭,最大調節為非零,還有最小分接頭
% can change tap可以改變分接頭
% get from bus voltage
disp('voltage high changing tap on line');disp(chk_fb)
vm2 = volt_max(max_v_idx(fb));%這個節點的最大額定電壓volt_max是一個全局變量
verror = V(max_v_idx(fb))-vm2;%實際電壓-上界=電壓差
% voltage too high, tap must be increased
%電壓太高,分抽頭必須增大。高壓端電壓確定,變比與低壓端電壓成反比
if verror/vm2 < line(chk_fb,10)%電壓差/最大額定電壓 < 這個節點分接頭的等級
% increase tap by one step一級一級的增加,比一級略小
tap = line(chk_fb,6) + line(chk_fb,10);%變比=原來的變比 + 一個等級:增加一級
else%如果電壓差/最大額定電壓>=一個等級
tap = line(chk_fb,6) + verror/vm2;%分接頭=原來的+電壓差/最大額定電壓
tap_set = ceil( (tap-line(chk_fb,9))/line(chk_fb,10));%第幾級=(分接頭-最小分接頭)/分接頭等級
% ceil(x)是取最接近x的整數
tap = tap_set*line(chk_fb,10) + line(chk_fb,9);%tap=最小的分接頭+等級*第幾級
end
% 選擇了最接近的分接頭
tap = min(line(chk_fb,8),max(tap, line(chk_fb,9)));%*******************選擇一個最大分接頭與所選則分接頭中最小的一個
% reset tap in line data重置線路數據中的分接頭
disp('tap reset to');tap
line(chk_fb,6) = tap;
end
end
end
end
if ~isempty(min_v_idx)%如果有電壓超過下界的。同上
% change on load taps to correct voltage
% assumes that bus to be corrected is the to bus
for fb = 1 : length(min_v_idx)
chk_fb = find(line(:,2) == bus(min_v_idx(fb),1));
if ~isempty(chk_fb)
% freeze dc taps
if ~isempty(n_dcl)
for kt = 1:2*n_dcl
dc_chk = find(chk_fb==ac_line(kt));
if ~isempty(dc_chk);chk_fb(dc_chk)=[];end
end
end
end
if ~isempty(chk_fb)
if line(chk_fb,8)~=0
% can change tap
disp('voltage low changing tap on line');disp(chk_fb)
vm2 = volt_min(min_v_idx(fb));
verror = vm2 - V(min_v_idx(fb));
% voltage too low tap must be reduced
if verror/vm2<line(chk_fb,10)
% reduce tap by one increment
tap = line(chk_fb,6)-line(chk_fb,10);
else
tap = line(chk_fb,6) - verror./vm2;
tap_set = fix( (tap-line(chk_fb,9))/line(chk_fb,10));
tap = tap_set*line(chk_fb,10) + line(chk_fb,9);
end
tap = min(line(chk_fb,8),max(tap, line(chk_fb,9)));%?
disp('taps reset to');tap
% reset tap in line data
line(chk_fb,6) = tap;
end
end
end
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -