Source Code for the Analysis of Symmetrical Faults
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