Mathematics">
Nothing Special   »   [go: up one dir, main page]

Tarea - Cotrol de Sistemas Lineales Codigos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA

FACULTAD DE CIENCIAS DE LA ELECTRÓNICA


CONTROL DE SISTEMAS LINEALES
Otoño 2023

Preofesor: LUIS EDUARDO ESPINOSA MAYA

Alumno: Diego Merlo Zechinelli

Tarea 1
TAREA #1, Función de Transferencia y respuesta del sistema

Instrucciones Generales
I. Conforme tu numero de estudiante (matricula), los problemas que debes
resolver
• Banco A, matricula par
• Banco B, matricula impar
II. Documenta tus pasos y si realizas código en MATLAB colócalo en un archivo .m
por cada sección de problemas, la entrega de esta tarea debe ir acompañada
del archivo de MATLAB.

BLOQUE A
1 𝑦' + 0.1𝑦 = 𝑥
2 𝑦' + 0.1𝑦 = 𝑥' + 𝑥
3 𝑦 + 4𝑦' + 4.25𝑦 = 3𝑥
''

4 𝑦'' + 4𝑦' + 4.25𝑦 = 𝑥'' + 3𝑥


5 𝑦''' + 6𝑦'' + 13𝑦' + 20𝑦 = 20𝑥
6 𝑦''' + 6𝑦'' + 13𝑦' + 20𝑦 = 4𝑥' + 20𝑥
7 𝑦′′′′ + 5𝑦''' + 12.5𝑦'' + 10𝑦' + 4𝑦 = 𝑥
8 𝑦′′′′ + 5𝑦''' + 12.5𝑦'' + 10𝑦' + 4𝑦 = 𝑥′ + 𝑥

Mi matricula es: 202131144. , corresponde resolver BLOQUE: A

Sección de problemas
1. Conforme al bloque asignado, realiza lo siguiente.
a. Obtén la F.T. de cada sistema asignado.
b. Para cada F.T. de (a) determina su ganancia en DC: calculada y con MATLAB.
c. Para cada F.T. de (a) determina sus polos y ceros: calculado hasta el 4 y todos
además con MATLAB.

2. Con los resultados del problema anterior realiza lo que se te pide.


a. Empleando símbolos en MATLAB obtén la función de transferencia en
símbolos de cada sistema de (1.a).
b. Para cada una de las siguientes señales de entrada obtén mediante MATLAB la
respuesta y(t) de cada sistema (a).
BLOQUE A
1 𝑥(𝑡) = 3𝑢(𝑡)
2 𝑥(𝑡) = 1.5𝑡
3 𝑥(𝑡) = 𝑠𝑖𝑛(5𝑡)
4 𝑥(𝑡) = 𝑠𝑖𝑛(5𝑡) + 𝑢(𝑡)

c. De cada función y(t) obtenida para sistema (a) para cada entrada (b), indica
donde están presentes los Polos obtenidos en (1.c).
d. Gráfica con MATLAB cada una de las señales de respuesta de cada sistema,
agrupando en 1 ventana de gráfico todas las señales de respuesta del sistema,
emplea el comando subplot para ordenar. Tip: considera el tiempo de 0 a 5 ó
10seg.
Introducción

El control automático es una rama de la ingeniería que se ocupa del diseño, análisis y
control de sistemas dinámicos. Los sistemas de control se utilizan en una amplia gama de
aplicaciones, desde la industria hasta los automóviles y la medicina.

El código de MATLAB que se describe en este reporte se utiliza para analizar la respuesta
de sistemas de control a diferentes señales de entrada. El código utiliza las funciones de
transferencia de los sistemas de control para calcular la respuesta de cada sistema a una
señal de entrada específica.

Descripción del código

El código comienza definiendo las variables simbólicas s y t, que representan la frecuencia


y el tiempo, respectivamente. A continuación, se definen las señales de entrada IS_1,
IS_2, IS_3 e IS_4, que son las funciones escalón unitario, rampa, sinusoide de 5 Hz y
sinusoide de 5 Hz más función escalón unitario, respectivamente.

Luego, se crea un array vacío llamado RSPC, que almacenará las respuestas de los ocho
sistemas de control a las cuatro señales de entrada.

Para cada uno de los ocho sistemas de control, se calcula la función de transferencia G(s)
y se utiliza la función ilaplace() para calcular la respuesta del sistema a cada una de las
cuatro señales de entrada. Las respuestas se almacenan en el array RSPC.

Finalmente, se utiliza un bucle for para trazar las respuestas de los ocho sistemas de
control a las cuatro señales de entrada.

Resultados

Las figuras 1 a 8 muestran las respuestas de los ocho sistemas de control a las cuatro
señales de entrada.

Figura 1: Respuesta del sistema 1 a la función escalón unitario.

Figura 2: Respuesta del sistema 1 a la función rampa.

Figura 3: Respuesta del sistema 1 a la sinusoide de 5 Hz.

Figura 4: Respuesta del sistema 1 a la sinusoide de 5 Hz más la función escalón unitario.

Figura 5: Respuesta del sistema 2 a la función escalón unitario.


Figura 6: Respuesta del sistema 2 a la función rampa.

Figura 7: Respuesta del sistema 2 a la sinusoide de 5 Hz.

Figura 8: Respuesta del sistema 2 a la sinusoide de 5 Hz más la función escalón unitario.

Discusión

Los resultados muestran que la respuesta de un sistema de control a una señal de entrada
depende de la función de transferencia del sistema. En general, los sistemas con polos en el
origen tienen respuestas que se acercan al estado estacionario más rápidamente que los
sistemas con polos en el lado derecho del plano complejo.

Conclusiones

El código de MATLAB que se describe en este reporte es una herramienta útil para
analizar la respuesta de sistemas de control a diferentes señales de entrada. El código es
relativamente simple de usar y puede ser personalizado para analizar sistemas de control
específicos.

Funcionamiento del codigo

% Tarea 001 (Bloque A) Diego Merlo Zechinelli 202131144


% CSL Otoño 2023

clear
clc
syms s t
syms u(t) x(t)

%señales de entrada
IS_1=laplace(3*heaviside(t));
IS_2=laplace(1.5*t);
IS_3=laplace(sin(5*t));
IS_4=laplace(sin(5*t)+heaviside(t));
%array de respuestas
RSPC=[];
Si la función de transferencia del sistema es G(s), podemos usarla para calcular la respuesta
del sistema a una señal de entrada específica. Por ejemplo, si la señal de entrada es una
función escalón unitario, la respuesta del sistema será una función sinusoidal.

La forma de la respuesta sinusoidal depende de la función de transferencia del sistema. En


este caso, la función de transferencia tiene dos polos, que son los puntos en el plano
complejo donde la función de transferencia se anula.

Los polos determinan la respuesta del sistema en el dominio del tiempo. En este caso, los
polos están en el lado izquierdo del plano complejo. Esto significa que el sistema es estable,
es decir, la respuesta del sistema se acercará a un valor constante en el tiempo.

La forma de la respuesta sinusoidal se puede determinar a partir de los polos y el factor de


ganancia de la función de transferencia. El factor de ganancia es un valor que multiplica la
respuesta del sistema.

En este caso, el factor de ganancia es 1/5. Esto significa que la amplitud de la respuesta
sinusoidal será la mitad de la amplitud de la señal de entrada.

La frecuencia de la respuesta sinusoidal se puede determinar a partir de los polos. La


frecuencia es igual a la raíz cuadrada de la suma de los cuadrados de los polos.

Resolucion de codigo

%primer sistema
X=[0,1];
Y=[1,0.1];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: s + 1/10

polos =

-0.1000
ceros =

0×1 empty double column vector

ans =

10

Despues de este sistema copio y pego las funciones 8 veces para los otros sistemas teniendo
cuidado que meta bien las ecuaciones a matlap

Segundo sistema
%segundo sistema
X=[1,1];
Y=[1,0.1];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: (s + 1/10)/(s + 1)

polos =

-0.1000

ceros =

-1
ans =

10

Tercer sistema
%tercer sistema
X=[3];
Y=[1,4,4.25];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: s^2/3 + (4*s)/3 + 17/12

polos =

-2.0000 + 0.5000i
-2.0000 - 0.5000i

ceros =

0×1 empty double column vector

ans =

0.7059

------------------------------
Cuarto Sistema
%cuarto sistema
X=[1,0,3];
Y=[1,4,4.25];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: (s^2 + 4*s + 17/4)/(s^2 + 3)

polos =

-2.0000 + 0.5000i
-2.0000 - 0.5000i

ceros =

0.0000 + 1.7321i
0.0000 - 1.7321i

ans =

0.7059

------------------------------
Quinto sistema

X=[20];
Y=[1,6,13,20];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: s^3/20 + (3*s^2)/10 + (13*s)/20 + 1

polos =

-4.0000 + 0.0000i
-1.0000 + 2.0000i
-1.0000 - 2.0000i

ceros =

0×1 empty double column vector

ans =

1
%sexto sistema
X=[4,20];
Y=[1,6,13,20];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

olos, ceros y gain de: (s^3 + 6*s^2 + 13*s + 20)/(4*s + 20)

polos =

-4.0000 + 0.0000i
-1.0000 + 2.0000i
-1.0000 - 2.0000i

ceros =

-5

ans =

%septimo sistema
X=[1];
Y=[1,5,12.5,10];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

-----------------------------
Polos, ceros y gain de: s^3 + 5*s^2 + (25*s)/2 + 10

polos =

-1.8497 + 2.0657i
-1.8497 - 2.0657i
-1.3007 + 0.0000i

ceros =

0×1 empty double column vector

ans =

0.1000

%octavo sistema
X=[1,1];
Y=[1,5,12.5,10];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];

Polos, ceros y gain de: (s^3 + 5*s^2 + (25*s)/2 + 10)/(s + 1)

polos =

-1.8497 + 2.0657i
-1.8497 - 2.0657i
-1.3007 + 0.0000i

ceros =

-1

ans =

0.1000

Esta seccion es la que me va ayudar a graficar y mostrar graficas en matlap definiendo t

t=0:0.001:10;
% (el numero de figure representa el numero del sistema)
for idx=1:8
figure(idx);
clf
subplot(2,2,1);
plot(t,eval(RSPC(4*(idx-1)+1)));
title('Respuesta: u(t)');
subplot(2,2,2);
plot(t,eval(RSPC(4*(idx-1)+2)));
title('Respuesta: 2t');
subplot(2,2,3);
plot(t,eval(RSPC(4*(idx-1)+3)));
title('Respuesta: sin 4t');
subplot(2,2,4);
plot(t,eval(RSPC(4*(idx-1)+4)));
title('Respuesta: sin t + u(t)');
end

Referencias

• Libros:

Control automático: Teoría y aplicaciones, de Katsuhiko Ogata

Control moderno, de Richard C. Dorf y Robert H. Bishop


• Artículos:

Análisis de sistemas de control por computadora, de Eduardo J. De la Torre y Luis E.


Ortega

También podría gustarte