Source Code for the Analysis of Symmetrical Faults
Total Page:16
File Type:pdf, Size:1020Kb
Source code for the analysis of symmetrical faults clc % Main program for the analysis of symmetrical faults. %This section tells the user to input the number of buses, generators, lines % and transformers. % This section allows the user to choose the type of function to be % performed. The user may decide to use the existing data or to input a new % set of data. type = input('Enter type (1) for data input (2) for fault analysis ') if type == 1 nb = input ('Enter the number of buses '); ng = input ('Enter the number of generators '); nl = input ('Enter the number of lines '); nt = input ('Enter the number of transformers '); numb = [nb ng nl nt]; numb = numb'; fid=fopen('numbdatas.txt','w'); fprintf(fid,'%6.2f\n',numb); fclose(fid); %numbdata is a file that stores nb,ng,nl and nt datainput(nb,ng,nl,nt) end % datainput is a function subprogram that accepts data and stores them in a % format defined by the programmer. if type == 2 Vf = input('Enter the prefault voltage in prer unit ') fid = fopen ('numbdatas.txt', 'r'); dat = textread ('numbdatas.txt'); nb = dat(1,1); ng = dat(2,1); nl = dat(3,1); nt = dat(4,1); Zimp = Zbus(nb,ng,nl,nt); % zbus is a fuction sub program that builds the bus impedance matrix % based on the input data, i.e macnine, line and transformer data. for i = 1: nb If(i) = Vf ./ Zimp(i,i); % If(i) = fault current at bus i end for i = 1: nb for j = 1 : nb Evolt(i,j) = (1.-Zimp(i,j)./Zimp(i,i))* Vf; %E(i,j) = voltages during the fault end end
Zimpedance = Zimp fid=fopen('impdata.txt','w'); for i=1:nb for k=1:nb fprintf(fid,'%6.4f\t',Zimp(i,k)); end fprintf(fid,'\n\n'); end fclose(fid); %impdata is a file that stores the bus impedance matrix Ifault = If fid=fopen('currentdata.txt','w'); for i=1:nb fprintf(fid,'%6.4f\n',If(i)); end fclose(fid); %currentdata is a file that stores the fault currents Evoltage = Evolt fid=fopen('voltagedata.txt','w'); for i=1:nb for k=1:nb fprintf(fid,'%6.4f\t',Evolt(i,k)); end fprintf(fid,'\n\n'); end fclose(fid); %voltagedata is a file that stores the per-unit bus voltages during fault fid = fopen ('gendatas.txt', 'r'); dat = textread ('gendatas.txt'); a = dat (:,1); y = dat(:,2); for i = 1:ng Ig(i) = Vf/ y(i); end b = zeros(ng,1); fid = fopen ('linedatas.txt', 'r'); dat = textread ('linedatas.txt'); y = dat(:,3); start = dat (:,1); ennd = dat (:,2); for i = 1 : (nl+nt) I(i) = Evolt(start(i),ennd(i))/y(i); Is(i) = I(i); II(i) = Evolt(ennd(i),start(i))/y(i); Ic(i) = II(i); end Ik =[Ig,Is,Ic]; Ik = Ik'; from =[b;start;ennd]; to = [a;ennd;start]; need=[from to Ik] need = need'; fid=fopen('contridata.txt','w'); fprintf(fid,'%6.2f %6.2f %6.4f\n',need); fclose(fid); end