You are on page 1of 3

function [] = fTransferencia(num ,den)

% Función que recibe el numerador y el denominador de una función de


% transferencia y analiza su comportamiento en cuanto a la respuesta
% al impulso, al escalón, estabilidad, ubica el LGR y realiza
% implementación de controladors P, I, PI, PD y PID.

Sistema = tf(num, den) %Creación de la Función de Transferencia

OrdenDelSistema = length(den)-1 %Calcula el orden del sistema.

Ceros = roots(num) %Calcula los ceros de la FT.

Polos = roots(den) %Calcula los polos de la FT.

for i = 1: 1 : length(Polos) %Calcula si los polos del sistema están


if Polos(i)<0 % en el SCIA.
control = true;
else
fprintf('Inestable \n')
control = false;
end

end

if (OrdenDelSistema == 2 && control) % Si el sistema es de segundo orden


[Wn,Zeta]=damp(Sistema); % y estable calcula:
Wn = Wn(1) % Frecuencia Natural de Oscilación.
Zeta = Zeta(1) % Factor de Amortiguamiento.
if Zeta == 1 % Verifica el tipo de sistema.
fprintf('Sistema SobreAmortiguado \n') %SobreAmortiguado
Ts = 4 /(Zeta*Wn)
elseif Zeta < 1
fprintf('Sistema SubAmortiguado \n') %SubAmortiguado
Mp = exp(-pi*Zeta/sqrt(1-Zeta^2))
Tp = pi/(Wn*(sqrt(1 - Zeta^2)))
Ts = 4 /(Zeta*Wn)
elseif Zeta > 1
fprintf('Sistema Criticamente Amortiguado \n') %Criticamente Amortiguado
Ts = 4 /(Zeta*Wn)
end
end

if control %Si el sistema es Estable grafica:


fprintf('Estable \n')
figure(1);
impulse(Sistema) %Respuesta a la señal Impulso.
figure(2);
step(Sistema) %Respuesta a la señal Escalón
figure(3); %Dibuja el diagrama de Bode calcula
[Gm,Pm,Wcg,Wcp] = margin(Sistema) % los valores de los márgenes de fase, las
margin(num,den) % frecuencias de cruce y las ganancias
figure(4);
rlocus(Sistema) %LGR sin control.
end

%Se aplica cada uno de los controles: P, I, PD, PI, PID.

%Control P
figure(5);
set(gcf,'Name','Control P')
Kp = 30;
P = Kp;
subplot(1,2,1)
rlocus(Sistema*P)
subplot(1,2,2)
SP = feedback(Sistema*P, 1);
step(SP)

% Control I
figure(6);
set(gcf,'Name','Control I')
Ki = 0.35;
I = tf(Ki , [1 0]);
subplot(1,2,1)
rlocus(Sistema*I)
subplot(1,2,2)
SI = feedback(Sistema*I, 1);
step(SI)

% Control PD
figure(7);
set(gcf,'Name','Control PD')
Kp = 30;
Kd = 50;
PD = tf([Kd Kp], [1 1]);
subplot(1,2,1)
rlocus(Sistema*PD)
subplot(1,2,2)
SPD = feedback(Sistema*PD, 1);
step(SPD)

% Control PI
figure(8);
set(gcf,'Name','Control PI')
Kp = 20;
Ki = 150;
PI = tf([Kp Ki], [1,0]);
subplot(1,2,1)
rlocus(Sistema*PI)
subplot(1,2,2)
SPI = feedback(Sistema*PI, 1);
step(SPI)

% Control PID
figure(9)
Kp = 350;
Ki = 300;
Kd = 50;
set(gcf,'Name','Control PID')
PID = tf([Kd Kp Ki], [1,0]);
subplot(1,2,1)
rlocus(Sistema*PID)
subplot(1,2,2)
SPID = feedback(Sistema*PID, 1);
step(SPID)
end

You might also like