Mô hình khi sữ dụng thiết bị TCSC
Hình 5.12: Hệ thống điện được mô phỏng khi sử dụng TCSC
Các thông số của từng bus và đường dây được cho trong phụ lục 2 Các thông số về thiết bị TCSC được cho trong phụ lục 3
Chương trình code cho trong phụ lục 5 Kết quả thu được
PNET and QNET PNET( 1)= 0.000 QNET( 1)= 0.000 PNET( 2)= 0.200 QNET( 2)= -0.100
PNET( 2)= 0.200 QNET( 2)= -0.100 PNET( 3)= -0.450 QNET( 3)= -0.150 PNET( 4)= -0.400 QNET( 4)= -0.050 PNET( 5)= -0.600 QNET( 5)= -0.100 PNET( 6)= 0.000 QNET( 6)= 0.000 Number of iteration : 7
Tinh PCAL va QCAL PCAL( 1)= 1.3113 QCAL( 1)= 0.9094 PCAL( 2)= 0.2000 QCAL( 2)= -0.7180 PCAL( 3)= -0.4500 QCAL( 3)= -0.1500 PCAL( 4)= -0.4000 QCAL( 4)= -0.0500 PCAL( 5)= -0.6000 QCAL( 5)= -0.1000 PCAL( 6)= -0.0000 QCAL( 6)= -0.0000
State Variables Updating
bus bustype VM VA(do) 1 1 1.0600 0.0000 2 2 1.0000 -2.0380 3 3 0.9870 -4.7274 4 3 0.9849 -4.8113 5 3 0.9718 -5.7009 6 3 0.9864 -4.771
Cong suat may phat :
Nut may phat 1 : 1.3120 + j 0.90964 Nut may phat 2 : 0.4000 + j -0.6189
In PQflows
Nhanh Dau Cuoi Psend Qsend Prec Qrec Ploss Qloss 1 1 2 0.887 0.742 -0.862 -0.731 0.025 0.010 2 1 3 0.424 0.167 -0.409 -0.173 0.016 -0.006 3 2 3 0.255 -0.027 -0.251 -0.001 0.004 -0.028 4 2 4 0.266 -0.016 -0.262 -0.011 0.004 -0.027 5 2 5 0.541 0.056 -0.529 -0.049 0.012 0.007 6 6 4 0.210 0.025 -0.210 -0.043 0.000 -0.018 7 4 5 0.071 0.004 -0.071 -0.051 0.000 -0.046 Total loss : 0.0613 + j -0.1077
In PQbus sau khi hoi tu Bus loadbus Pbus Qbus 1 2 0.4000 -0.6180 2 3 -0.6600 -0.1741 3 4 -0.4000 -0.0500 4 5 -0.6000 -0.1000 5 6 0.2100 0.0251
Power at sending and receiving end of TCSC
Ptcsc( 1, 1)= 0.2100 Qtcsc( 1, 1)= 0.0241 Ptcsc( 1, 2)= -0.2100 Qtcsc( 1, 2)= -0.0251
TCSC capacitive reactance X( 1) = -0.0216
5.3 Viết bằng chương trình Hadi Saadat
Chương trình code cho trong phụ lục 7
Kiem tra ket qua bang chuong trinh Saadat sau khi dat TCSC
Sai so = 7.72499-005 So lan lap = 3
Nut Dien ap Goc ---Phu tai--- ---May phat--- Tu bu No. dvtd. Degree MW Mvar MW Mvar Mvar
1 1.06000 0.000 0.000 0.000 131.120 90.964 0.000 2 1.00000 -2.038 20.000 10.000 40.000 -61.890 0.000 3 0.98704 -4.727 45.000 15.000 0.000 0.000 0.000 4 0.98491 -4.813 40.000 5.000 0.000 0.000 0.000 5 0.97182 -5.701 60.000 10.000 0.000 0.000 0.000 6 0.98641 -4.772 0.000 0.000 0.000 0.000 0.000 Tong 165.000 40.000 171.120 29.074 0.000
Dong cong suat nhanh va ton that
--- --Duong day-- Cong suat nut & Dong nhanh --Ton that--
tu den MW Mvar MVA MW MVAr
1 131.120 90.964 159.583
2 88.678 74.187 115.618 2.470 1.041 3 42.451 16.777 45.464 1.556 -0.576
2 20.000 -71.890 74.620 1 -86.207 -73.147 113.058 2.470 1.041 3 25.504 -2.660 25.642 0.391 -2.777 4 26.601 -1.639 26.652 0.425 -2.665 5 54.102 5.570 54.388 1.191 0.656 3 -45.000 -15.000 47.434 1 -40.894 -17.353 44.424 1.556 -0.576 2 -25.113 -0.117 25.113 0.391 -2.777 6 21.007 2.470 21.152 0.023 -0.977 4 -40.000 -5.000 40.311 2 -26.177 -1.026 26.197 0.425 -2.665 6 -20.961 -4.322 21.422 0.023 -0.975 5 7.138 0.448 7.152 0.049 -4.638 5 -60.000 -10.000 60.828 2 -52.911 -4.914 53.139 1.191 0.656 4 -7.089 -5.086 8.724 0.049 -4.638 6 0.000 0.000 0.000 4 21.000 3.477 21.265 0.023 -0.977 3 -21.000 -3.477 21.265 0.023 -0.975
Tong ton that 6.128 -10.911
Hình 5.13: Kết quả mô phỏng hệ thống điện khi sử dụng TCSC
ĐỒ THỊ
Hình 5.15: Sự cố tại bus 2, đường dây 23 được loại bỏ
Hình 5.17: Sự cố tại bus 4, đường dây 45 được loại bỏ
Hình 5.19: Sự cố tại bus 3, đường dây 36 được loại bỏ
CHƯƠNG 6: KẾT LUẬN 1. Kết quả thu được
Hiểu được cấu tạo và nguyên lý làm việc của các thiết bị FACTS
Sữ dụng chương trình Matlab để phân tích hệ thống điện đơn giản khi sữ dụng thiết bị TCSC, từ đó đánh giá được sự ổn định và ưu điểm của thiết bị này so với các thiết bị bù khác như máy bù đồng bộ hay tụ điện tĩnh
Thiết bị bù có điều khiển TCSC làm cho hệ thống điện vận hành linh hoạt trong các chế độ bình thường và sự cố đồng thời làm tăng độ tin cậy và tính kinh tế trong vận hành của hệ thống điện lên rất nhiều. Hơn nữa, việc sử dụng TCSC trong hệ thống điện còn làm tăng chất lượng điện năng, đặc biệt tại các nút có phụ tải quan trọng cần yêu cầu cao về độ ổn định điện áp.
2. Hạn chế của luận văn
Vì thời gian làm đố án không nhiều cho nên phần mềm Matlab em chỉ tập trung nghiên cứu về những cái cần thiết, không tìm hiểu được rộng.
Chương trình dùng để mô phỏng chỉ thực hiện trên một hệ thống nhỏ (6 bus), nên đôi khi chưa thể đánh giá được hết ưu điểm của thiết bị.
FACTS nói chung và TCSC nói riêng là một mảng công nghệ mới, chưa được dùng phổ biến nhiều trong hệ thống điện, nên những gì nghiên cứu được chỉ nằm trên cơ sở lý thuyết, chưa tìm hiểu qua trực quan thực tế.
3. Hướng phát triển của đề tài
Từ kết quả thu được trong quá trình thực hiện và hoàn thiện khóa luận: Việc thay thế thiết bị TCSC thay cho tụ bù dọc cố định có khả năng làm cho hệ thống làm việc linh hoạt hơn, đảm bảo được các chế độ vận hành của hệ thống điện nên hướng phát triển tiếp theo của đề tài là:
Ngoài Matlab có thể nghiên cứu xây dựng chương trình mô phỏng sử dụng các thiết bị FACTS để điều khiển nâng cao ổn định hệ thống điện.
Nghiên cứu sử dụng thiết bị TCSC để nâng cao khả năng truyền tải của hệ thống điện Việt Nam.
TÀI LIỆU THAM KHẢO
[1] John G.Kassakian, Martin F. Schkecht, George C. Verghese, Principles of Power Electronic, Addison-Wesley- United States of America, 1999.
[2] T.J.E.Miller & Charkes Concordia, Reactive Power Control in Electric System, Addison- Wesley- United States of America, 1992.
[3] Laszlo Gyugyi & Narain G.Hurgorani, Understanding FACTS, IEEE, London, 1999.
[4] Yong Hua Song & Allan T. John, Flexible AC Transmission System (FACTS) IEEE, London, 1999
[5] Hồ Văn Hiến, Hệ thống điện truyền tải và phân phối, Nhà xuất bản Đại học quốc gia TP. HCM, 2010
[6] Nguyễn Bính, Điện tử công suất, Nhà xuất bản Khoa học Kỹ thuật, 2000.
[7] Nguyễn Hồng Anh, Nguyễn Bê, Ứng dụng điện tử công suất trong hệ thống truyền tải điện xoay chiều linh hoạt, Tạp chí Khoa học và Công nghệ số 40+41/2003.
PHỤ LỤC
1. Thông số bus và đường dây khi chưa sử dụng TCSC
bus bustype VM VA 1 1 1.06 0.00 2 2 1.00 0.00 3 3 1.00 0.00 4 3 1.00 0.00 5 3 1.00 0.00
genbus PGEN QGEN QMAX QMIN 1 0.000 0.000 5.000 -5.000 2 0.400 0.000 3.000 -3.000
branch tlsend tlrec tlresis tlreac tlcond tlsuscep Nhanh Dau Cuoi R X G B 1 1 2 0.0200 0.0600 0.0000 0.0600 2 1 3 0.0800 0.2400 0.0000 0.0500 3 2 3 0.0600 0.1800 0.0000 0.0400 4 2 4 0.0600 0.1800 0.0000 0.0400 5 2 5 0.0400 0.1200 0.0000 0.0300 6 3 4 0.0100 0.0300 0.0000 0.0200 7 4 5 0.0800 0.2400 0.0000 0.0500
loadbus bus PLOAD QLOAD 1 2 0.200 0.100 2 3 0.450 0.150 3 4 0.400 0.050 4 5 0.600 0.100
2. Thông số bus và đường dây khi sử dụng TCSC bus bustype VM VA 1 1 1.06 0.00 2 2 1.00 0.00 3 3 1.00 0.00 4 3 1.00 0.00 5 3 1.00 0.00 6 3 1.00 0.00
genbus PGEN QGEN QMAX QMIN 1 0.000 0.000 5.000 -5.000 2 0.400 0.000 3.000 -3.000
branch tlsend tlrec tlresis tlreac tlcond tlsuscep Nhanh Dau Cuoi R X G B 1 1 2 0.0200 0.0600 0.0000 0.0600 2 1 3 0.0800 0.2400 0.0000 0.0500 3 2 3 0.0600 0.1800 0.0000 0.0400 4 2 4 0.0600 0.1800 0.0000 0.0400 5 2 5 0.0400 0.1200 0.0000 0.0300 6 6 4 0.0100 0.0300 0.0000 0.0200 7 4 5 0.0800 0.2400 0.0000 0.0500
loadbus bus PLOAD QLOAD 1 2 0.200 0.100 2 3 0.450 0.150 3 4 0.400 0.050 4 5 0.600 0.100 5 6 0.000 0.000
3. Các thông số về thiết bị TCSC
% This function is used exclusively to enter data for:
% THYRISTOR CONTROLLED SERIES COMPENSATOR reactance variable % NTCSC : Number of TCSC’s
% TCSCsend : Sending bus % TCSCrec : Receiving bus % X : TCSC’s reactance
% XLo : Lower reactance limit % XHi : Higher reactance limit
% Flow : Power flow direction: 1 is for sending to receiving bus; -1 % indicates opposite direction
% Psp : Active power flow to be controlled
% PSta : Indicates control status for active power: 1 is on and 0 is off
NTCSC=1;
TCSCsend(1)=3; TCSCrec(1)=6; X(1)=-0.015; XLo(1)=-0.05; XHi(1)=0.05;
4. Code matlab viết cho chương trình khi chưa có TCSC
%***- - - Main Program
PowerFlowsData; %Read system data
[YR,YI] = YBus(tlsend,tlrec,tlresis,tlreac,tlsuscep,tlcond,shbus,... shresis,shreac,ntl,nbb,nsh); [VM,VA,it] = NewtonRaphson(nmax,tol,itmax,ngn,nld,nbb,bustype,... genbus,loadbus,PGEN,QGEN,QMAX,QMIN,PLOAD,QLOAD,YR,YI,VM,VA); [PQsend,PQrec,PQloss,PQbus] = PQflows(nbb,ngn,ntl,nld,genbus,... loadbus,tlsend,tlrec,tlresis,tlreac,tlcond,tlsuscep,PLOAD,... QLOAD,VM,VA); it %Iteration number
VM %Nodal voltage magnitude (p.u.)
VA = VA*180/pi %Nodal voltage phase angle(Deg) PQsend %Sending active and reactive powers (p.u.) PQrec %Receiving active and reactive powers (p.u.) %End Main Program
%Build up admittance matrix
function [YR,YI] = YBus(tlsend,tlrec,tlresis,tlreac,tlsuscep,... tlcond,shbus,shresis,shreac,ntl,nbb,nsh);
YR=zeros(nbb,nbb); YI=zeros(nbb,nbb);
% Transmission lines contribution for kk = 1: ntl
ii = tlsend(kk); jj = tlrec(kk);
denom = tlresis(kk)^2+tlreac(kk)^2;
YR(ii,ii) = YR(ii,ii) + tlresis(kk)/denom + 0.5*tlcond(kk); YI(ii,ii) = YI(ii,ii) - tlreac(kk)/denom + 0.5*tlsuscep(kk); YR(ii,jj) = YR(ii,jj) - tlresis(kk)/denom;
YI(ii,jj) = YI(ii,jj) + tlreac(kk)/denom; YR(jj,ii) = YR(jj,ii) - tlresis(kk)/denom; YI(jj,ii) = YI(jj,ii) + tlreac(kk)/denom;
YR(jj,jj) = YR(jj,jj) + tlresis(kk)/denom + 0.5*tlcond(kk); YI(jj,jj) = YI(jj,jj) - tlreac(kk)/denom + 0.5*tlsuscep(kk); end
% Shunt elements contribution for kk = 1: nsh
denom = shresis(kk)^2+shreac(kk)^2;
YR(ii,ii) = YR(ii,ii) + shresis(kk)/denom; YI(ii,ii) = YI(ii,ii) - shreac(kk)/denom; end
% End of function YBus
%Carry out iterative solution using the Newton-Raphson method function [VM,VA,it] = NewtonRaphson(nmax,tol,itmax,ngn,nld,nbb,... bustype, genbus,loadbus,PGEN,QGEN,QMAX,QMIN,PLOAD,QLOAD,YR,YI,VM,VA) % GENERAL SETTINGS
D = zeros(1,nmax); flag = 0;
it = 1;
% CALCULATE NET POWERS
[PNET,QNET] = NetPowers(nbb,ngn,nld,genbus,loadbus,PGEN,QGEN,... PLOAD,QLOAD);
while ( it < itmax & flag==0 ) % CALCULATED POWERS
[PCAL,QCAL] = CalculatedPowers(nbb,VM,VA,YR,YI);
% CHECK FOR POSSIBLE GENERATOR’S REACTIVE POWERS LIMITS VIOLATIONS [QNET,bustype] = GeneratorsLimits(ngn,genbus,bustype,QGEN,QMAX,... QMIN,QCAL,QNET, QLOAD, it, VM, nld, loadbus);
% POWER MISMATCHES [DPQ,DP,DQ,flag] = PowerMismatches(nmax,nbb,tol,bustype,flag,PNET,... QNET,PCAL,QCAL); % JACOBIAN FORMATION [JAC] = NewtonRaphsonJacobian(nmax,nbb,bustype,PCAL,QCAL,VM,VA,... YR,YI);
% SOLVE FOR THE STATE VARIABLES VECTOR D = JAC\DPQ’;
% UPDATE STATE VARIABLES
[VA,VM] = StateVariablesUpdates(nbb,D,VA,VM); it = it + 1;
end
% End function Newton-Raphson
%Function to calculate the net scheduled powers
function [PNET,QNET] = NetPowers(nbb,ngn,nld,genbus,loadbus,PGEN,... QGEN, PLOAD,QLOAD);
% CALCULATE NET POWERS PNET = zeros(1,nbb);
QNET = zeros(1,nbb); for ii = 1: ngn
PNET(genbus(ii)) = PNET(genbus(ii)) + PGEN(ii); QNET(genbus(ii)) = QNET(genbus(ii)) + QGEN(ii); end
for ii = 1: nld
PNET(loadbus(ii)) = PNET(loadbus(ii)) - PLOAD(ii); QNET(loadbus(ii)) = QNET(loadbus(ii)) - QLOAD(ii); end
%End function NetPowers
%Function to calculate injected bus powers
function [PCAL,QCAL] = CalculatedPowers(nbb,VM,VA,YR,YI) % Include all entries
PCAL = zeros(1,nbb); QCAL = zeros(1,nbb); for ii = 1: nbb PSUM = 0; QSUM = 0; for jj = 1: nbb
PSUM = PSUM + VM(ii)*VM(jj)*(YR(ii,jj)*cos(VA(ii)-VA(jj)) +... YI(ii,jj)*sin(VA(ii)-VA(jj)));
QSUM = QSUM + VM(ii)*VM(jj)*(YR(ii,jj)*sin(VA(ii)-VA(jj)) – ... YI(ii,jj)*cos(VA(ii)-VA(jj))); end PCAL(ii) = PSUM; QCAL(ii) = QSUM; end %End of functionCalculatePowers
%Function to check whether or not solution is within generators limits fu nct io n [Q NET ,bu st ype ] = GeneratorsLimit s( ngn ,genbus, bustype,QGEN, ...QMAX,QMIN,QCAL,QNET,QLOAD,it,VM,nld,loadbus) % CHECK FOR POSSIBLE GENERATOR’S REACTIVE POWERS LIMITS VIOLATIONS if it > 2 flag2 = 0; for ii = 1: ngn jj = genbus(ii); if (bustype(jj) == 2) if ( QCAL(jj) > QMAX(ii) ) QNET(genbus(ii)) = QMAX(ii);
bustype(jj) = 3; flag2 = 1;
elseif ( QCAL(jj) < QMIN(ii) ) QNET(genbus(ii)) = QMIN(ii); bustype(jj) = 3; flag2 = 1; end if flag2 == 1 for ii = 1:nld if loadbus(ii) == jj
QNET(loadbus(ii) = QNET(loadbus(ii)) - QLOAD(ii)) end
end end end end
%End function Generatorslimits
%Function to compute power mismatches
function [DPQ,DP,DQ,flag] = PowerMismatches(nmax,nbb,tol,bustype,... flag,PNET,QNET,PCAL,QCAL); % POWER MISMATCHES DPQ = zeros(1,nmax); DP = zeros(1,nbb); DQ = zeros(1,nbb); DP = PNET - PCAL; DQ = QNET - QCAL;
% To remove the active and reactive powers contributions of the slack % bus and reactive power of all PV buses
for ii = 1: nbb if (bustype(ii) == 1 ) DP(ii) = 0; DQ(ii) = 0; elseif (bustype(ii) == 2 ) DQ(ii) = 0; end end
% Re-arrange mismatch entries kk = 1;
DPQ(kk) = DP(ii); DPQ(kk+1) = DQ(ii); kk = kk + 2;
end
% Check for convergence for ii = 1: nbb*2
if ( abs(DPQ) < tol) flag = 1;
end end
%End function PowerMismatches
%Function to built the Jacobian matrix
function [JAC] = NewtonRaphsonJacobian(nmax,nbb,bustype,PCAL,QCAL,... VM,VA,YR,YI);
% JACOBIAN FORMATION % Include all entries JAC = zeros(nmax,nmax); iii = 1; for ii = 1: nbb jjj = 1; for jj = 1: nbb if ii == jj
JAC(iii,jjj) = -QCAL(ii) - VM(ii)^2*YI(ii,ii); JAC(iii,jjj+1) = PCAL(ii) + VM(ii)^2*YR(ii,ii); JAC(iii+1,jjj) = PCAL(ii) - VM(ii)^2*YR(ii,ii); JAC(iii+1,jjj+1) = QCAL(ii) - VM(ii)^2*YI(ii,ii); else JAC(iii,jjj) = VM(ii)*VM(jj)*(YR(ii,jj)*sin(VA(ii)-VA(jj))... -YI(ii,jj)*cos(VA(ii)-VA(jj))); JAC(iii+1,jjj) = -VM(ii)*VM(jj)*(YI(ii,jj)*sin(VA(ii)... -VA(jj))+YR(ii,jj)*cos(VA(ii)-VA(jj))); JAC(iii,jjj+1) = -JAC(iii+1,jjj); JAC(iii+1,jjj+1) = JAC(iii,jjj); end jjj = jjj + 2; end iii = iii + 2; end
% bus and voltage magnitude equations corresponding to PV buses for kk = 1: nbb if (bustype(kk) == 1) ii = kk*2-1; for jj = 1: 2*nbb if ii == jj JAC(ii,ii) = 1; else JAC(ii,jj) = 0; JAC(jj,ii) = 0; end end end if (bustype(kk) == 1) | (bustype(kk) == 2) ii = kk*2; for jj = 1: 2*nbb if ii == jj JAC(ii,ii) = 1; else JAC(ii,jj) = 0; JAC(jj,ii) = 0; end end end end
%End of function NewtonRaphsonJacobian %Function to update state variables
function [VA,VM] = StateVariablesUpdates(nbb,D,VA,VM) iii = 1;
for ii = 1: nbb
VA(ii) = VA(ii) + D(iii);
VM(ii) = VM(ii) + D(iii+1)*VM(ii); iii = iii + 2;
end
%End function StateVariableUpdating %Function to calculate the power flows
function [PQsend,PQrec,PQloss,PQbus] = PQflows(nbb,ngn,ntl,nld,... genbus,loadbus,tlsend,tlrec,tlresis,tlreac,tlcond,tlsuscep,PLOAD,... QLOAD,VM,VA);
PQsend = zeros(1,ntl); PQrec = zeros(1,ntl);
% Calculate active and reactive powers at the sending and receiving % ends of tranmsission lines
for ii = 1: ntl
Vsend = ( VM(tlsend(ii))*cos(VA(tlsend(ii))) + ... VM(tlsend(ii))*sin(VA(tlsend(ii)))*i );
Vrec = ( VM(tlrec(ii))*cos(VA(tlrec(ii))) + ... VM(tlrec(ii))*sin(VA(tlrec(ii)))*i );
tlimped = tlresis(ii) + tlreac(ii)*i;
current =(Vsend - Vrec) / tlimped + Vsend*( tlcond(ii) + ... tlsuscep(ii)*i )*0.5 ;
PQsend(ii) = Vsend*conj(current);
current =(Vrec - Vsend) / tlimped + Vrec*( tlcond(ii) + ... tlsuscep(ii)*i )*0.5 ;
PQrec(ii) = Vrec*conj(current); PQloss(ii) = PQsend(ii) + PQrec(ii); end
% Calculate active and reactive powers injections at buses PQbus = zeros(1,nbb);
for ii = 1: ntl
PQbus(tlsend(ii)) = PQbus(tlsend(ii)) + PQsend(ii); PQbus(tlrec(ii)) = PQbus(tlrec(ii)) + PQrec(ii); end
% Make corrections at generator buses, where there is load, in order to % get correct generators contributions
for ii = 1: nld jj = loadbus(ii); for kk = 1: ngn ll = genbus(kk); if jj == ll
PQbus(jj) = PQbus(jj) + ( PLOAD(ii) + QLOAD(ii)*i ); end
end end
5. Code Matlab viết cho chương trình khi có TCSC
% - - - Main TCSC variable reactance
PowerFlowsData; %Function to read network data
TCSCData; %Function to read TCSC variable series reactance
[YR,YI] = YBus(tlsend,tlrec,tlresis,tlreac,tlsuscep,tlcond,ntl,nbb); [VM,VA,it,X] = TCSCNewtonRaphson(tol,itmax,ngn,nld,nbb,bustype,... genbus, loadbus,PGEN,QGEN,QMAX,QMIN,PLOAD,QLOAD,YR,...
YI,VM,VA,NTCSC, TCSCsend, TCSCrec,X,XLo,XHi,Flow,Psp,PSta);
[PQsend,PQrec,PQloss,PQbus] = PQflows(nbb,ngn,ntl,nld,genbus,... loadbus,tlsend,tlrec,tlresis,tlreac,tlcond,tlsuscep,PLOAD,QLOAD,... VM,VA); [Ptcsc,Qtcsc] = TCSCPQflows(nbb,VA,VM,NTCSC,TCSCsend,TCSCrec,X); %Print results it %Number of iterations
VM %Nodal voltage magnitude (p.u)
VA=VA*180/pi %Nodal voltage phase angles (Deg) Ptcsc %Active power flow in TCSC (p.u.)
Qtcsc %Reactive power flow in TCSC (p.u.) X %Final reactance value (p.u.)
%End of TCSC MAIN PROGRAM
%Carry out iterative solution using the Newton–Raphson method
function [VM,VA,it,X] = TCSCNewtonRaphson(tol,itmax,ngn,nld,nbb,... bustype, genbus,loadbus,PGEN,QGEN,QMAX,QMIN,PLOAD,QLOAD,YR,YI,... VM,VA,NTCSC, TCSCsend,TCSCrec,X,XLo,XHi,Flow,Psp,PSta);
% GENERAL SETTINGS flag = 0;
it = 1;
% CALCULATE NET POWERS
[PNET,QNET]=NetPowers(nbb,ngn,nld,genbus,loadbus,PGEN,QGEN,... PLOAD,QLOAD);
while ( it < itmax & flag==0 ) % CALCULATED POWERS [PCAL,QCAL]=CalculatedPowers(nbb,VM,VA,YR,YI); % CALCULATED TCSC POWERS [TCSC_PQsend,TCSC_PQrec,PCAL,QCAL]=TCSCCalculatedpower(nbb,VA,... VM,NTCSC,TCSCsend,TCSCrec,X,PCAL,QCAL); % POWER MISMATCHES [DPQ,DP,DQ,flag]=PowerMismatches(nbb,tol,bustype,flag,PNET,QNET,...
PCAL, QCAL);
% TCSC POWER MISMATCHES
[DPQ,flag]=TCSCPowerMismatches(flag,tol,nbb,DPQ,VM,VA,NTCSC,... TCSCsend,TCSCrec,X,Flow,it,Psp,PSta);
%Check for convergence if flag == 1 break end % JACOBIAN FORMATION [JAC]=NewtonRaphsonJacobian(nbb,bustype,PCAL,QCAL,DPQ,VM,VA,... YR,YI);
% MODIFICATION THE JACOBIAN FOR TCSC
[JAC]=TCSCJacobian(nbb,JAC,VM,VA,NTCSC,TCSCsend,TCSCrec,X,... Flow,PSta,it);
% SOLVE JOCOBIAN D = JAC\DPQ’;
% UPDATE THE STATE VARIABLES VALUES, WITH TRUNCATED CORRECTIONS IF % NECESSARY (VM increments < +-0.1 p.u. and VA inrements < +- 5 deg) [VA,VM]=StateVariablesUpdating(nbb,D,VA,VM,it);
% UPDATE THE TCSC VARIABLES
[X]=TCSCUpdating(it,nbb,D,NTCSC,X,PSta); %CHECK IMPEDANCE FOR LIMITS
[X]=TCSCLimits(NTCSC,X,XLo,XHi,PSta); it = it + 1;
end
%Function to calculate injected bus powers by the TCSC
function [TCSC_PQsend,TCSC_PQrec,PCAL,QCAL] = TCSCCalculatedpower... (nbb,VA, VM,NTCSC,TCSCsend,TCSCrec,X,PCAL,QCAL); for ii = 1 : NTCSC Bmm = - 1/X(ii); Bmk = 1/X(ii); for kk = 1 : 2 A = VA(TCSCsend(ii))-VA(TCSCrec(ii)); Pcal = VM(TCSCsend(ii))*VM(TCSCrec(ii))*Bmk*sin(A); Qcal = - VM(TCSCsend(ii))^2*Bmm - VM(TCSCsend(ii))*... VM(TCSCrec(ii))*Bmk*cos(A);
PCAL(TCSCsend(ii)) = PCAL(TCSCsend(ii)) + Pcal; QCAL(TCSCsend(ii)) = QCAL(TCSCsend(ii)) + Qcal; if kk == 1
TCSC_PQsend(ii) = Pcal + j*Qcal; else
TCSC_PQrec(ii) = Pcal + j*Qcal; end send = TCSCsend(ii); TCSCsend(ii) = TCSCrec(ii); TCSCrec(ii) = send; end end
%Function to compute power mismatches with TCSC
function [DPQ,flag] = TCSCPowerMismatches(flag,tol,nbb,DPQ,VM,VA,... NTCSC, TCSCsend,TCSCrec,TCSCX,Flow,it,TCSC_P,PSta); if it > 1 for ii = 1 : NTCSC if PSta(ii) == 1 Bmk = 1/TCSCX(ii); forkk=1:2 A = VA(TCSCsend(ii)) - VA(TCSCrec(ii)); Pcal = VM(TCSCsend(ii))*VM(TCSCrec(ii))*Bmk*sin(A);
if (Flow(ii) == 1 & kk == 1) | (Flow(ii) == -1 & kk == 2) DPQ(1, 2*nbb + ii) = TCSC_P(ii) - Pcal;
break; end send = TCSCsend(ii); TCSCsend(ii) = TCSCrec(ii); TCSCrec(ii) = send; end else DPQ(1, 2*nbb + ii)= 0; end end end
%Function to add the TCSC elements to Jacobian matrix
function [JAC] = TCSCJacobian(nbb,JAC,VM,VA,NTCSC,TCSCsend,... TCSCrec,X,Flow, PSta,it);
for ii = 1 : NTCSC Bmm = - 1/X(ii); Bmk = 1/X(ii); for kk = 1 : 2
A = VA(TCSCsend(ii))-VA(TCSCrec(ii));
Hkm = - VM(TCSCsend(ii))*VM(TCSCrec(ii))*Bmm*cos(A); Nkm = VM(TCSCsend(ii))*VM(TCSCrec(ii))*Bmm*sin(A);
JAC(2*TCSCsend(ii)-1, 2*TCSCsend(ii)-1) = JAC(2*TCSCsend(ii)-1,... 2*TCSCsend(ii)-1) - VM(TCSCsend(ii))^2*Bmm;
JAC(2*TCSCsend(ii)-1, 2*TCSCrec(ii)-1) = JAC(2*TCSCsend(ii)-1,... 2*TCSCrec(ii)-1) - Hkm;
JAC(2*TCSCsend(ii)-1, 2*TCSCrec(ii)) = JAC(2*TCSCsend(ii)-1,... 2*TCSCrec(ii)) - Nkm;
JAC(2*TCSCsend(ii), 2*TCSCsend(ii)) = JAC(2*TCSCsend(ii),... 2*TCSCsend(ii)) - VM(TCSCsend(ii))^2*Bmm;
JAC(2*TCSCsend(ii), 2*TCSCrec(ii)-1) = JAC(2*TCSCsend(ii),... 2*TCSCrec(ii)-1) + Nkm;
JAC(2*TCSCsend(ii), 2*TCSCrec(ii)) = JAC(2*TCSCsend(ii),... 2*TCSCrec(ii)) - Hkm;
if it > 1
if PSta(ii) == 1
if (Flow(ii) == 1 & kk == 1 )j (Flow(ii) == -1 & kk == 2) JAC(2*nbb + ii, 2*TCSCsend(ii)-1) = Hkm;
JAC(2*nbb + ii, 2*TCSCsend(ii)) = - Nkm; JAC(2*nbb + ii, 2*TCSCrec(ii)-1) = - Hkm; JAC(2*nbb + ii, 2*TCSCrec(ii)) = - Nkm; JAC(2*nbb + ii, 2*nbb + ii) = + Nkm; end
JAC(2*TCSCsend(ii)-1, 2*nbb + ii) = Nkm;
JAC(2*TCSCsend(ii), 2*nbb + ii) = Hkm - VM(TCSCsend(ii))^2*Bmk; else
JAC(2*nbb + ii, 2*nbb + ii) = 1; end end send = TCSCsend(ii); TCSCsend(ii) = TCSCrec(ii); TCSCrec(ii) = send; end