Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo Grupal 6
INTRODUCCIÓN
• Orden: el orden indica cuántas veces es mayor la frecuencia del armónico en base a la
fundamental.
• Frecuencia: se obtiene multiplicando la frecuencia fundamental del sistema por el orden
del armónico (Mantilla, 2020) .
Los armónicos de orden par solo aparecen cuando hay asimetría en la señal mientras que
los armónicos de orden impar se encuentran en las redes eléctricas. Para regular la
inyección de corrientes armónicos y limitar los niveles de distorsión armónica total
proporcionada por las empresas de distribución, existen una serie de normas
Internacionales (Mantilla, 2020).
MODELOS DE LA RED
Los elementos del sistema de potencia para simulación de armónicos deben ser adecuados
para representar las características y respuestas que cada uno de estos tiene ante la
circulación de corrientes armónicas por la red.Los elementos del sistema de potencia para
simulación de armónicos deben ser adecuados para representar las características y
respuestas que cada uno de estos tiene ante la circulación de corrientes armónicas por la
red (Barrera, 2020).
Alimentadores
Líneas y cables Las líneas de transmisión y los cables, tanto aéreos como subterráneos, se
modelan mediante el equivalente PI de la Fig. 1 considerando parámetros distribuidos para
todas las frecuencias de estudio (Barrera, 2020).
SIMULACIÓN
mediante la interfaz gráfica de GUIDE. Modelando de esta manera el efecto que tienen los
La interfaz consta de datos ingresados por el usuario como son: Parámetros del
Alimentador, parámetros de los armónicos. Y las gráficas resultantes del análisis de los
RESULTADOS
Del mismo modo para poder observar de manera eficaz las perturbaciones y lo que
sucedería de si todos los armónicos llegasen a tener los mismos valores de amplitud y que
esta sea representativa, se usó los mismos armónicos pero con una amplitud del 60%
onda de la fundamental, mientras que al tener un armónico de bajo valor y alta amplitud, la
distorsión es considerable.
Al considerar valor de amplitud de 60% se puede observar que todos los armónicos
Con la ayuda del software MATLAB se logró efectuar de manera eficiente el estudio de
distorsión de corriente armónica para una línea de distribución de energía eléctrica con 30
Las redes eléctricas de distribución de energía se ven afectadas por la distorsión armónica
debido a las cargas no lineales que se presentan en la mayoría de las cargas constituidas
por equipos electrónicos, dichas corrientes armónicas que se inyectan en la red pueden
provocar que los equipos de protección operen de forma ineficiente y además que existan
https://dspace.ups.edu.ec/bitstream/123456789/14348/4/UPS-KT01385.pdf
potencia. http://www.scielo.org.co/pdf/itec/v17n2/1692-1798-itec-17-02-73.pdf
https://dspace.ups.edu.ec/bitstream/123456789/19332/1/UPS%20-%20TTS184.pdf
ANEXOS
Código de implementación
Análisis de armónicos
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Outputs from this function are returned to the command line.
function varargout = Analisis_armonicos_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1,'enable','on');
set(handles.edit6,'enable','on');
set(handles.edit11,'enable','on');
set(handles.edit2,'enable','off');
set(handles.edit7,'enable','off');
set(handles.edit12,'enable','off');
set(handles.edit3,'enable','off');
set(handles.edit8,'enable','off');
set(handles.edit13,'enable','off');
set(handles.edit4,'enable','off');
set(handles.edit9,'enable','off');
set(handles.edit14,'enable','off');
set(handles.edit5,'enable','off');
set(handles.edit10,'enable','off');
set(handles.edit15,'enable','off');
set(handles.edit1,'enable','on');
set(handles.edit6,'enable','on');
set(handles.edit11,'enable','on');
set(handles.edit2,'enable','on');
set(handles.edit7,'enable','on');
set(handles.edit12,'enable','on');
set(handles.edit3,'enable','off');
set(handles.edit8,'enable','off');
set(handles.edit13,'enable','off');
set(handles.edit4,'enable','off');
set(handles.edit9,'enable','off');
set(handles.edit14,'enable','off');
set(handles.edit5,'enable','off');
set(handles.edit10,'enable','off');
set(handles.edit15,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of radiobutton2
set(handles.edit1,'enable','on');
set(handles.edit6,'enable','on');
set(handles.edit11,'enable','on');
set(handles.edit2,'enable','on');
set(handles.edit7,'enable','on');
set(handles.edit12,'enable','on');
set(handles.edit3,'enable','on');
set(handles.edit8,'enable','on');
set(handles.edit13,'enable','on');
set(handles.edit4,'enable','off');
set(handles.edit9,'enable','off');
set(handles.edit14,'enable','off');
set(handles.edit5,'enable','off');
set(handles.edit10,'enable','off');
set(handles.edit15,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of radiobutton3
set(handles.edit1,'enable','on');
set(handles.edit6,'enable','on');
set(handles.edit11,'enable','on');
set(handles.edit2,'enable','on');
set(handles.edit7,'enable','on');
set(handles.edit12,'enable','on');
set(handles.edit3,'enable','on');
set(handles.edit8,'enable','on');
set(handles.edit13,'enable','on');
set(handles.edit4,'enable','on');
set(handles.edit9,'enable','on');
set(handles.edit14,'enable','on');
set(handles.edit5,'enable','off');
set(handles.edit10,'enable','off');
set(handles.edit15,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of radiobutton4
set(handles.edit1,'enable','on');
set(handles.edit6,'enable','on');
set(handles.edit11,'enable','on');
set(handles.edit2,'enable','on');
set(handles.edit7,'enable','on');
set(handles.edit12,'enable','on');
set(handles.edit3,'enable','on');
set(handles.edit8,'enable','on');
set(handles.edit13,'enable','on');
set(handles.edit4,'enable','on');
set(handles.edit9,'enable','on');
set(handles.edit14,'enable','on');
set(handles.edit5,'enable','on');
set(handles.edit10,'enable','on');
set(handles.edit15,'enable','on');
% Hint: get(hObject,'Value') returns toggle state of radiobutton5
end
if aux2==1
n_h=2;
o_h=1:n_h; Amp=1:n_h; phi_h=1:n_h;
o_h(1)=str2double(get(handles.edit1,'String'));
Amp(1)=str2double(get(handles.edit6,'String'));
phi_h(1)=str2double(get(handles.edit11,'String'));
o_h(2)=str2double(get(handles.edit2,'String'));
Amp(2)=str2double(get(handles.edit7,'String'));
phi_h(2)=str2double(get(handles.edit12,'String'));
end
if aux3==1
n_h=3;
o_h=1:n_h; Amp=1:n_h; phi_h=1:n_h;
o_h(1)=str2double(get(handles.edit1,'String'));
Amp(1)=str2double(get(handles.edit6,'String'));
phi_h(1)=str2double(get(handles.edit11,'String'));
o_h(2)=str2double(get(handles.edit2,'String'));
Amp(2)=str2double(get(handles.edit7,'String'));
phi_h(2)=str2double(get(handles.edit12,'String'));
o_h(3)=str2double(get(handles.edit3,'String'));
Amp(3)=str2double(get(handles.edit8,'String'));
phi_h(3)=str2double(get(handles.edit13,'String'));
end
if aux4==1
n_h=4;
o_h=1:n_h; Amp=1:n_h; phi_h=1:n_h;
o_h(1)=str2double(get(handles.edit1,'String'));
Amp(1)=str2double(get(handles.edit6,'String'));
phi_h(1)=str2double(get(handles.edit11,'String'));
o_h(2)=str2double(get(handles.edit2,'String'));
Amp(2)=str2double(get(handles.edit7,'String'));
phi_h(2)=str2double(get(handles.edit12,'String'));
o_h(3)=str2double(get(handles.edit3,'String'));
Amp(3)=str2double(get(handles.edit8,'String'));
phi_h(3)=str2double(get(handles.edit13,'String'));
o_h(4)=str2double(get(handles.edit4,'String'));
Amp(4)=str2double(get(handles.edit9,'String'));
phi_h(4)=str2double(get(handles.edit14,'String'));
end
if aux5==1
n_h=5;
o_h=1:n_h; Amp=1:n_h; phi_h=1:n_h;
o_h(1)=str2double(get(handles.edit1,'String'));
Amp(1)=str2double(get(handles.edit6,'String'));
phi_h(1)=str2double(get(handles.edit11,'String'));
o_h(2)=str2double(get(handles.edit2,'String'));
Amp(2)=str2double(get(handles.edit7,'String'));
phi_h(2)=str2double(get(handles.edit12,'String'));
o_h(3)=str2double(get(handles.edit3,'String'));
Amp(3)=str2double(get(handles.edit8,'String'));
phi_h(3)=str2double(get(handles.edit13,'String'));
o_h(4)=str2double(get(handles.edit4,'String'));
Amp(4)=str2double(get(handles.edit9,'String'));
phi_h(4)=str2double(get(handles.edit14,'String'));
o_h(5)=str2double(get(handles.edit5,'String'));
Amp(5)=str2double(get(handles.edit10,'String'));
phi_h(5)=str2double(get(handles.edit15,'String'));
end
%% Más código
Amp_Ih=Amp*Irms_carga/100;
f_h=f_fn.*o_h; %frecuencia del armonico
phi_h=phi_h*pi/180;
for i=1:n_h
for j=1:length(t)
I_h(i,j)=Amp_Ih(i)*sin(o_h(i)*w_fn.*t(j)+phi_h(i));
end
end
aux=sum(I_h);
Ires=aux+i_carga;
%% Parámetros Distribuidos
% Constantes
BR=0.8; AR=0.1; AL=1; BL=-0.07;
% Dependencia de R
R_h=R.*(1+AR.*(f_fn./f_h-1)).^BR;
R_ht=R_h.*long_LT;
R_pu_h=R_ht./Zbase;
% Dependencia de L
L_h=L.*AL.*(f_fn./f_h).^BL;
X_ht=w_fn.*o_h.*L.*long_LT;
X_pu_h=X_ht./Zbase;
% Dependencia de G
G_h=(1/G.*(1+AR.*(f_fn./f_h-1)).^BR).^-1; %pu
% Dependencia de C
Y_h=o_h.*Y_pu; %pu
% Rama paralela de G y C
GY=G_h+Y_h; %pu
G_d=R_pu_h;
B_d=X_pu_h;
%Flujos Armónicos
for i=1:n_h
Pflujo_h(i)=Ve*((Ve-Vr*cos(phi_e-phi_r))*G_d(i)+Vr*sin(phi_e-phi_r)*B_d(i));
Qflujo_h(i)=Ve*((Ve-Vr*cos(phi_e-phi_r))*B_d(i)-Vr*sin(phi_e-phi_r)*G_d(i)-Ve*GY(i)/2);
end
Pflujo_f=sum(Pflujo_h);
set(handles.edit23,'string',Pflujo_f);
Qflujo_f=sum(Qflujo_h);
set(handles.edit27,'string',Qflujo_f);
%% Teoria de Ondas
for i=1:n_h
Rac_pu(i)=R_pu*((1+0.646*o_h(i)^2)/(192+0.518*o_h(i)^2));
Rf_pu(i)=Rac_pu(i)*(1+AR*((1/o_h(i))-1))^BR;
XLf(i)=2*pi*f_fn*o_h(i)*L*long_LT*AL*(1/o_h(i))^BL;
XLf_pu(i)=XLf(i)/Zbase;
Gf(i)=((1/G)*(1+AR*((1/o_h(i))-1))^BR)^-1;
Zw(i)=sqrt((Rf_pu(i)+1j*XLf_pu(i))/(Gf(i)+1j*2*pi*f_fn*o_h(i)*C*long_LT))
g(i)=long_LT*sqrt((Rf_pu(i)+1j*XLf_pu(i))*(Gf(i)+1j*2*pi*f_fn*o_h(i)*C*long_LT))
/long_LT
Z12(i)=Zw(i)*sinh(g(i))
Zo(i)=Zw(i)*coth(g(i)/2)
end
for i=1:n_h
Pflujo_harmonic(i)=Ve*((Ve-Vr*cos(phi_e-phi_r))*real(Z12(i))+Vr*sin(phi_e-phi_r)*imag(Z12(i)));
Qflujo_harmonic(i)=Ve*((Ve-Vr*cos(phi_e-phi_r))*imag(Z12(i))-Vr*sin(phi_e-phi_r)*real(Z12(i))-Ve*GY(i)/2);
end
Pflujo_f_onda=sum(Pflujo_harmonic);
set(handles.edit24,'string',Pflujo_f_onda);
Qflujo_f_onda=sum(Qflujo_harmonic);
set(handles.edit28,'string',Qflujo_f_onda);
%% THD
aux2=sqrt(sum(Amp_Ih.^2));
THD=aux2*100/Irms_carga;
set(handles.edit25,'string',THD);
%% Gráfica
axes(handles.axes1);
plot(t,i_carga,t,Ires);
title('Análisis de Armónicos en L/T');
legend('Corriente Sin Armónicos','Corriente con Armónicos');
xlabel('Tiempo [s]');
ylabel('Corriente [A]');
grid on
%% Gráfica de barras
axes(handles.axes2);
bar(o_h,Amp,'r');
title('Graficas de barras porcentuales de los armónicos');
xlabel('Orden del armónico');
ylabel('Porcentaje de la corriente nominal');
grid on
Modelo de la Línea
% --- Outputs from this function are returned to the command line.
function varargout = modelo_linea_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.e6,'string','');
set(handles.e11,'string','');
set(handles.e16,'string','');
set(handles.e7,'string','');
set(handles.e12,'string','');
set(handles.e17,'string','');
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
set(handles.e5,'enable','on');
set(handles.e10,'enable','on');
set(handles.e15,'enable','on');
set(handles.e6,'enable','off');
set(handles.e11,'enable','off');
set(handles.e16,'enable','off');
set(handles.e7,'enable','off');
set(handles.e12,'enable','off');
set(handles.e17,'enable','off');
set(handles.e8,'enable','off');
set(handles.e13,'enable','off');
set(handles.e18,'enable','off');
set(handles.e9,'enable','off');
set(handles.e14,'enable','off');
set(handles.e19,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of rb1
% --- Executes on button press in rb2.
function rb2_Callback(hObject, eventdata, handles)
% hObject handle to rb2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.rb1,'value',0);
set(handles.rb2,'value',1);
set(handles.rb3,'value',0);
set(handles.rb4,'value',0);
set(handles.rb5,'value',0);
set(handles.e7,'string','');
set(handles.e12,'string','');
set(handles.e17,'string','');
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
set(handles.e5,'enable','on');
set(handles.e10,'enable','on');
set(handles.e15,'enable','on');
set(handles.e6,'enable','on');
set(handles.e11,'enable','on');
set(handles.e16,'enable','on');
set(handles.e7,'enable','off');
set(handles.e12,'enable','off');
set(handles.e17,'enable','off');
set(handles.e8,'enable','off');
set(handles.e13,'enable','off');
set(handles.e18,'enable','off');
set(handles.e9,'enable','off');
set(handles.e14,'enable','off');
set(handles.e19,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of rb2
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
set(handles.e5,'enable','on');
set(handles.e10,'enable','on');
set(handles.e15,'enable','on');
set(handles.e6,'enable','on');
set(handles.e11,'enable','on');
set(handles.e16,'enable','on');
set(handles.e7,'enable','on');
set(handles.e12,'enable','on');
set(handles.e17,'enable','on');
set(handles.e8,'enable','off');
set(handles.e13,'enable','off');
set(handles.e18,'enable','off');
set(handles.e9,'enable','off');
set(handles.e14,'enable','off');
set(handles.e19,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of rb3
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
set(handles.e5,'enable','on');
set(handles.e10,'enable','on');
set(handles.e15,'enable','on');
set(handles.e6,'enable','on');
set(handles.e11,'enable','on');
set(handles.e16,'enable','on');
set(handles.e7,'enable','on');
set(handles.e12,'enable','on');
set(handles.e17,'enable','on');
set(handles.e8,'enable','on');
set(handles.e13,'enable','on');
set(handles.e18,'enable','on');
set(handles.e9,'enable','off');
set(handles.e14,'enable','off');
set(handles.e19,'enable','off');
% Hint: get(hObject,'Value') returns toggle state of rb4
set(handles.e1,'string','0.0015');
set(handles.e2,'string','0.681');
set(handles.e3,'string','1.819');
set(handles.e4,'string','4');
set(handles.e25,'string','100');
rb1=get(handles.rb1,'value');
rb2=get(handles.rb2,'value');
rb3=get(handles.rb3,'value');
rb4=get(handles.rb4,'value');
rb5=get(handles.rb5,'value');
if rb1==1
a=1;
set(handles.e5,'string','17');
m=get(handles.e5,'string');
h(1,1)=str2double(m);
set(handles.e10,'string','60');
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
set(handles.e15,'string','20');
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
set(handles.e6,'string','');
set(handles.e11,'string','');
set(handles.e16,'string','');
set(handles.e7,'string','');
set(handles.e12,'string','');
set(handles.e17,'string','');
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
end
if rb2==1
a=2;
set(handles.e5,'string','17');
m=get(handles.e5,'string');
h(1,1)=str2double(m);
set(handles.e10,'string','60');
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
set(handles.e15,'string','20');
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
set(handles.e6,'string','19');
m=get(handles.e6,'string');
h(1,2)=str2double(m);
set(handles.e11,'string','30');
m=get(handles.e11,'string');
Ih(1,2)=str2double(m);
set(handles.e16,'string','20');
m=get(handles.e16,'string');
ah(1,2)=str2double(m);
anh(1,2)=ah(1,2)*pi/180;
set(handles.e7,'string','');
set(handles.e12,'string','');
set(handles.e17,'string','');
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
end
if rb3==1
a=3;
set(handles.e5,'string','17');
m=get(handles.e5,'string');
h(1,1)=str2double(m);
set(handles.e10,'string','60');
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
set(handles.e15,'string','20');
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
set(handles.e6,'string','19');
m=get(handles.e6,'string');
h(1,2)=str2double(m);
set(handles.e11,'string','30');
m=get(handles.e11,'string');
Ih(1,2)=str2double(m);
set(handles.e16,'string','20');
m=get(handles.e16,'string');
ah(1,2)=str2double(m);
anh(1,2)=ah(1,2)*pi/180;
set(handles.e7,'string','26');
m=get(handles.e7,'string');
h(1,3)=str2double(m);
set(handles.e12,'string','25');
m=get(handles.e12,'string');
Ih(1,3)=str2double(m);
set(handles.e17,'string','20');
m=get(handles.e17,'string');
ah(1,3)=str2double(m);
anh(1,3)=ah(1,2)*pi/180;
set(handles.e8,'string','');
set(handles.e13,'string','');
set(handles.e18,'string','');
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
end
if rb4==1
a=4;
set(handles.e5,'string','17');
m=get(handles.e5,'string');
h(1,1)=str2double(m);
set(handles.e10,'string','60');
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
set(handles.e15,'string','20');
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
set(handles.e6,'string','19');
m=get(handles.e6,'string');
h(1,2)=str2double(m);
set(handles.e11,'string','30');
m=get(handles.e11,'string');
Ih(1,2)=str2double(m);
set(handles.e16,'string','20');
m=get(handles.e16,'string');
ah(1,2)=str2double(m);
anh(1,2)=ah(1,2)*pi/180;
set(handles.e7,'string','26');
m=get(handles.e7,'string');
h(1,3)=str2double(m);
set(handles.e12,'string','25');
m=get(handles.e12,'string');
Ih(1,3)=str2double(m);
set(handles.e17,'string','20');
m=get(handles.e17,'string');
ah(1,3)=str2double(m);
anh(1,3)=ah(1,3)*pi/180;
set(handles.e8,'string','28');
m=get(handles.e7,'string');
h(1,4)=str2double(m);
set(handles.e13,'string','15');
m=get(handles.e12,'string');
Ih(1,4)=str2double(m);
set(handles.e18,'string','30');
m=get(handles.e17,'string');
ah(1,4)=str2double(m);
anh(1,4)=ah(1,3)*pi/180;
set(handles.e9,'string','');
set(handles.e14,'string','');
set(handles.e19,'string','');
end
if rb5==1
a=5;
set(handles.e5,'string','17');
m=get(handles.e5,'string');
h(1,1)=str2double(m);
set(handles.e10,'string','60');
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
set(handles.e15,'string','20');
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
set(handles.e6,'string','19');
m=get(handles.e6,'string');
h(1,2)=str2double(m);
set(handles.e11,'string','30');
m=get(handles.e11,'string');
Ih(1,2)=str2double(m);
set(handles.e16,'string','20');
m=get(handles.e16,'string');
ah(1,2)=str2double(m);
anh(1,2)=ah(1,2)*pi/180;
set(handles.e7,'string','26');
m=get(handles.e7,'string');
h(1,3)=str2double(m);
set(handles.e12,'string','25');
m=get(handles.e12,'string');
Ih(1,3)=str2double(m);
set(handles.e17,'string','20');
m=get(handles.e17,'string');
ah(1,3)=str2double(m);
anh(1,3)=ah(1,3)*pi/180;
set(handles.e8,'string','28');
m=get(handles.e7,'string');
h(1,4)=str2double(m);
set(handles.e13,'string','15');
m=get(handles.e12,'string');
Ih(1,4)=str2double(m);
set(handles.e18,'string','30');
m=get(handles.e17,'string');
ah(1,4)=str2double(m);
anh(1,4)=ah(1,4)*pi/180;
set(handles.e9,'string','35');
m=get(handles.e7,'string');
h(1,5)=str2double(m);
set(handles.e14,'string','5');
m=get(handles.e12,'string');
Ih(1,5)=str2double(m);
set(handles.e19,'string','50');
ah(1,5)=str2double(m);
anh(1,5)=ah(1,5)*pi/180;
end
m=get(handles.e1,'string');
Rdc=str2double(m);
m=get(handles.e2,'string');
L=str2double(m);
m=get(handles.e3,'string');
Ci=str2double(m);
m=get(handles.e4,'string');
G=str2double(m);
m=get(handles.e25,'string');
S=str2double(m);
m=get(handles.e5,'string');
h(1,1)=str2double(m);
m=get(handles.e10,'string');
Ih(1,1)=str2double(m);
m=get(handles.e15,'string');
ah(1,1)=str2double(m);
anh(1,1)=ah(1,1)*pi/180;
m=get(handles.e6,'string');
h(1,2)=str2double(m);
m=get(handles.e11,'string');
Ih(1,2)=str2double(m);
m=get(handles.e16,'string');
ah(1,2)=str2double(m);
anh(1,2)=ah(1,2)*pi/180;
m=get(handles.e7,'string');
h(1,3)=str2double(m);
m=get(handles.e12,'string');
Ih(1,3)=str2double(m);
m=get(handles.e17,'string');
ah(1,3)=str2double(m);
anh(1,3)=ah(1,3)*pi/180;
m=get(handles.e8,'string');
h(1,4)=str2double(m);
m=get(handles.e13,'string');
Ih(1,4)=str2double(m);
m=get(handles.e18,'string');
ah(1,4)=str2double(m);
anh(1,4)=ah(1,4)*pi/180;
m=get(handles.e9,'string');
h(1,5)=str2double(m);
m=get(handles.e14,'string');
Ih(1,5)=str2double(m);
m=get(handles.e19,'string');
ah(1,5)=str2double(m);
anh(1,5)=ah(1,5)*pi/180;
rb1=get(handles.rb1,'value');
rb2=get(handles.rb2,'value');
rb3=get(handles.rb3,'value');
rb4=get(handles.rb4,'value');
rb5=get(handles.rb5,'value');
if rb1==1
a=1;
end
if rb2==1
a=2;
end
if rb3==1
a=3;
end
if rb4==1
a=4;
end
if rb5==1
a=5;
end
% Valores de I y V por barra infinita y armónico
for i=1:1:a
Ir(1,i)=-(Ih(1,i)/100)*(cos(anh(1,i))+j*sin(anh(1,i)));
Ir1(1,i)=Ir(1,i);
Vs(1,i)=1; % Barra infinita V=1pu ángulo de 0º
Vs1(1,i)=Vs(1,i);
end
% Por datos de tabla:
ar=0.1;
br=0.8;
al=1;
bl=-0.07;
for i=1:1:a
% Cálculo de los Parametros de la linea para la frecuencia del armonico
Rac=Rdc*((1+0.646*h(1,i)*h(1,i))/(192+0.518*h(1,i)*h(1,i)));
Rf=(Rac*(1+ar*(h(1,i)-1))^br)/Zb;
L1=L*(10^-3)*al*(h(1,i)^bl);
Lf=(2*pi*60*h(1,i)*L1*S)/Zb;
Cf=(2*pi*60*h(1,i)*Ci*(10^-6)*S)/Zb;
Gf=1/((1/(G*(10^-6)*Zb))*(1+ar*(h(1,i)-1))^br);
%% Parametros Distribuidos
Z=Rf+j*Lf;
Y=(Gf/2)+j*(Cf/2);
A1=((Z*Y)/2)-1;
B1=Z;
C1=Y*(1+((Z*Y)/4));
D1=A1;
Vr1(1,i)=(Vs1(1,i)-B1*Ir1(1,i))/A1;
Is1(1,i)=C1*Vr1(1,i)+D1*Ir1(1,i);
Ps1(1,i)=norm(Vs1(1,i))*norm(Is1(1,i))*cos(angle(Vs1(1,i))-angle(Is1(1,i)));
Qs1(1,i)=norm(Vs1(1,i))*norm(Is1(1,i))*sin(angle(Vs1(1,i))-angle(Is1(1,i)));
Pr1(1,i)=norm(Vr1(1,i))*norm(Ir1(1,i))*cos(angle(Vr1(1,i))-angle(Ir1(1,i)));
Qr1(1,i)=norm(Vr1(1,i))*norm(Ir1(1,i))*sin(angle(Vr1(1,i))-angle(Ir1(1,i)));
%% Teoria de ondas
Zw=sqrt((Rf+j*Lf)/(Gf+j*Cf*Zb^2));
g=S*sqrt((Rf+j*Lf)*(Gf+j*Cf*Zb^2));
Z12=Zw*sinh(g);
Z0=Zw*coth(g/2);
A=((Z12*Z0)/2)-1;
B=Z12;
C=Z0*(1+((Z12*Z0)/4));
D=A;
Vr(1,i)=(Vs(1,i)-B*Ir(1,i))/A;
Is(1,i)=C*Vr(1,i)+D*Ir(1,i);
Ps(1,i)=norm(Vs(1,i))*norm(Is(1,i))*cos(angle(Vs(1,i))-angle(Is(1,i)));
Qs(1,i)=norm(Vs(1,i))*norm(Is(1,i))*sin(angle(Vs(1,i))-angle(Is(1,i)));
Pr(1,i)=norm(Vr(1,i))*norm(Ir(1,i))*cos(angle(Vr(1,i))-angle(Ir(1,i)));
Qr(1,i)=norm(Vr(1,i))*norm(Ir(1,i))*sin(angle(Vr(1,i))-angle(Ir(1,i)));
end
PTs1=Ps1(1,1);
PTs=Ps(1,1);
QTs1=Qs1(1,1);
QTs=Qs(1,1);
PTr1=Pr1(1,1);
PTr=Pr(1,1);
QTr1=Qr1(1,1);
QTr=Qr(1,1);
for i=2:1:a
PTs1=PTs1+Ps1(1,i);
PTs=PTs+Ps(1,i);
QTs1=QTs1+Qs1(1,i);
QTs=QTs+Qs(1,i);
PTr1=PTr1+Pr1(1,i);
PTr=PTr+Pr(1,i);
QTr1=QTr1+Qr1(1,i);
QTr=QTr+Qr(1,i);
end
k=0;
h;
for i=1:1:a
isnan(h(i))
if isnan(h(i))==1
k=k+1
end
if isnan(Ih(i))==1
k=k+1
end
if isnan(ah(i))==1
k=k+1
end
if isnan(Rdc)==1
k=k+1;
end
if isnan(L)==1
k=k+1;
end
if isnan(Ci)==1
k=k+1;
end
if isnan(G)==1
k=k+1;
end
if isnan(S)==1
k=k+1;
end
end
if k==0
Pl=PTr-PTs; % ondas
Ql=QTr-QTs; % ondas
Pl1=PTr1-PTs1; %parametros
Ql1=QTr1-QTs1; %parametros
m=num2str(Pl);
set(handles.e20,'string',m);
m=num2str(Ql);
set(handles.e21,'string',m);
m=num2str(Pl1);
set(handles.e22,'string',m);
m=num2str(Ql1);
set(handles.e23,'string',m);
A=transpose(h);
B=transpose(Ih);
A=A(1:a,:);
B=B(1:a,:);
%Gráfico
axes(handles.a1)
bar(A,B);
grid on;
else
msgbox('Ingrese los valores de manera correcta en todas las celdas habiles');
set(handles.e20,'string','');
set(handles.e21,'string','');
set(handles.e22,'string','');
set(handles.e23,'string','');
axes(handles.a1)
bar(0,0);
grid on;
end