Guia de Laboratorio de Teoria de Control Automatico 1 PDF
Guia de Laboratorio de Teoria de Control Automatico 1 PDF
Guia de Laboratorio de Teoria de Control Automatico 1 PDF
SAN AGUSTÍN
FACULTAD DE INGENIERÍA DE
PRODUCCIÓN Y SERVICIOS
Escuela Profesional de
U Ingeniería Electrónica
Curso:
Tema:
Guías de laboratorio
S Elaborado por:
Ing William Vladimir Mullisaca Atamari
Ing Oscar Salazar Alarcón
Arequipa – Perú
2019
TEMARIO DE LAS GUÍAS DE LABORATORIO
I OBJETIVO
II PROCEDIMIENTO
II.1. Repetir y ejercitar los siguientes comandos en Matlab. Definición de una constante:
a=1
b= [1 2]
a=2+i
b=-5-3*i
Expresión booleana:
a==1
Vector constante:
v=[1 2 3 4 5]
ó v=1:5
Matriz constante:
A= [2 2 3
007
5 9 -1]
ó
A= [2 2 3;0 0 7;5 9 -1]
a=1; b=2;
A= [a+b pi 3
b^2 0 atan(a)
5 sin(b) -1]
B=zeros()
Matriz de zeros con 2 las y 3 columnas:
B=zeros(2,3)
De modo semejante, podemos formar matrices y vectores de unos: Matriz de unos con 2 filas y 3
columnas:
C=ones(2,3)
Matrices diagonales:
D=diag(1:5)
A= [1 2 3
456
7 8 9]
B=diag(A)
Formando una matriz diagonal con los elementos de la diagonal principal de una matriz:
C=diag(diag(A))
A=diag(ones(1,3))
ó
A=eye(3)
B=A+A
C=B+1
Multiplicación de matrices:
A= [1 2 3;4 5 6;7 8 9]
C= [1 2 0;0 0 1;0 2 3]
D=A*C
Extracción de la fila 2:
a=C (2, :)
Extracción de la columna 3:
b=C (:,3)
A= [1 2 3; 4 5 6; 7 8 9]
t=trace(A)
r=rank(A)
Matriz transpuesta:
B=A'
A= [0 1; -2 -3]
B=inv(A)
A*B
d=det(A)
Polinomios:
v= [0 -1]
p1=poly(v)
p2=poly([1 2 1])
Cálculo de raíces:
p=roots(p1)
A= [0 1; -2 -3]
r=eig(A) % r vector de autovalores ó
[V,D]=eig(A) % produce un matriz diagonal D de autovalores
% y una matriz completa V cuyas columnas son
% sus correspondientes autovectores. Así (A*V=V*D)
Funciones:
y=x^2
else
y=sin(x*(pi/180))
end
y=mifuncion(30)
Haga un .m file que ayude a encontrar el mínimo de f (x) = x3 − 2x − 5, dentro del intervalo
(0,2)
Construya una señal escalón unitario, de 0 a 50 segundos, con step inicial en 25 s. El paso
deberá ser de 0.5s. Plotee el resultado
IV MATERIAL Y EQUIPO
V OBSERVACIONES Y CONCLUSIONES
V.1. Haga sus observaciones y emita al menos cinco conclusiones del trabajo realizado
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
SOLUCIÓN LABORATORIO 1
Ejercicios:
1.- Implemente en matlab la siguiente función, luego plotee:
1
𝑦 = 𝑓(𝑥) =
𝑥2 −1
Ejecutando en Matlab
clear,clc
x=-10:0.1:10; %Definimos los valores de x
y=1./(x.^2-1); %Definimos la función
𝑥1 + 𝑥2 𝑖𝑓 𝑥1 > 0, 𝑥2 > 0
𝑦 = 𝑓(𝑥1 , 𝑥2 ) = {
√𝑥12 + 𝑥22 𝑒𝑛 𝑙𝑜𝑠 𝑑𝑒𝑚á𝑠 𝑐𝑎𝑠𝑜𝑠
Ejecutando en Matlab
clear,clc
x=-10:0.2:10; %Definimos x
y=-10:0.2:10; %Definimos y
[X,Y]=meshgrid(x,y); %Usaremos surf por ende
necesitamos matrices cuadradas X,Y necesitamos matrices cuadradas X,Y
%meshgrid(x,y) repetirá los elementos de x en filas, y en columnas guardadas en [X,Y] respectivamente
end
end
surf(X,Y,Z) %Ploteamos
Fig. 2.1 Programa para poner graficar función por parte f(x1,x2)
Ejecutando en Matlab
clear,clc
4.- Construya una señal escalón unitario, de 0 a 50 segundos, con step inicial en 25 s. El paso
deberá ser de 0.5s. Plotee el resultado
Ejecutando en Matlab
plot(t,y),grid; %Graficamos
title('Escalón Unitario')
xlabel('Tiempo (t)')
ylabel('Funcion f(t)')
clear,clc;
for i=1:length(x);
pi=dirac(x-x(i)); %pi=valor de Inf en la
posición i
if s==0;
s=pi;
end
end
I OBJETIVO
II ASPECTOS TEÓRICOS
IV PROCEDIMIENTO
Hallar la solución por el método que usted considere apropiado, también debe graficar la
solución.
Function [ydot]=edol(y)
ydot=(1-y)/2;
Figura 1: Circuito RC
V OBSERVACIONES Y CONCLUSIONES
V.1. Haga sus observaciones y emita al menos cinco conclusiones del trabajo realizado
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
SOLUCIÓN LABORATORIO 2
𝐲(𝐭) = 𝟏 − ℮(−𝐭/𝟐)
Instante inicial: 𝒕 = 𝟎
Instante final: 𝒕𝒇 = 𝟏𝟎
Solución exacta de la ecuación diferencial: 𝒚𝒆 (𝒕) = 𝟏 − ℮(−𝒕/𝟐)
0.9
solución numérica - euler
0.8
solución exacta
0.7
0.6
Amplitud ()
0.5
0.4
0.3
0.2
0.1
0
0 1 2 3 4 5 6 7 8 9 10
Tiempo (s)
R(i − 𝑖2 ) = e
Malla i2
1 𝑡
R(𝑖2 − i) + ∫ 𝑖 dt = 0
𝐶 0 2
Malla I
R(I − 𝐼2 ) = E
E
I = 𝐼2 +
R
Malla I2
𝐼2
R(𝐼2 − I) + =0
𝐶𝑆
1
(R + ) 𝐼 = RI
𝐶𝑆 2
1
(1 + )𝐼 = I
𝑅𝐶𝑆 2
1
𝐼2 = I
1
(1 + )
𝑅𝐶𝑆
𝑅𝐶𝑆
𝐼2 = I
𝑅𝐶𝑆 + 1
Resultado:
RCS
𝐼2 RCS +1 ∗1
=
𝐸 RCS R
1−
RCS + 1
𝐼2
= 𝐶𝑆
𝐸
𝑉2 𝑃𝑘 ∆𝑘
=∑
𝑉1 ∆
1 RCS
𝑃1 = ∗
R RCS + 1
RCS
𝐿1 =
RCS + 1
RCS
∆= 1 −
RCS + 1
∆1 = 1
1 RCS
𝐼2 R ∗ RCS + 1
=
𝐸 1 − RCS
RCS + 1
𝐼2
= 𝐶𝑆
𝐸
6. De la figura 1, obtenga la solución de la ecuación diferencial usando la herramienta
MATLAB.
CONCLUSIONES
El uso del método de Euler es un método práctico para la comprensión de otros métodos matemático
en el campo de ecuaciones diferenciales.
El uso adecuado del método de diagramas de bloque algebraico permite tener un resultado correcto
para sistemas de control.
LABORATORIO 3
I OBJETIVO
I.1. Emplear MATLAB en la solución de problemas matemáticos en el área de control.
II ASPECTOS TEÓRICOS
IV PROCEDIMIENTO
Function [ydot]=edo1(y)
ydot=(1-y) /2;
2. Del ítem 1, repita las instrucciones, le ayudara a entender como introducir funciones de
transferencia (LTI) en matlab:
h=tf(1,[1 1])
V OBSERVACIONES Y CONCLUSIONES
V.1. Haga sus observaciones y emita al menos cinco conclusiones del trabajo realizado
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
SOLUCIÓN LABORATORIO 3
function [ydot]=edo1(y)
ydot=(1-y)/2;
h=tf(1,[1 1])
Las variables son expresadas como vectores (entradas, salidas y estados) y las ecuaciones
algebraicas se escriben en forma matricial (esto último solo cuando el sistema dinámico es lineal
e invariante en el tiempo).
Variables de estado: Las variables de estado son el subconjunto más pequeño de variables de
un sistema que pueden representar su estado dinámico completo en un determinado instante. El
número mínimo de variables de estado necesarias para representar un sistema dado, n, es
normalmente igual al orden de la ecuación diferencial que define al sistema.
Para separar los métodos usamos nuestro valor inicial con una nueva variable:
yRK4(1)=0; % Valor inicial para metodo RK4
Ahora agregamos el método al bucle ‘for’, donde se desarrollan los demás métodos, teniendo en
cuenta que nuestra ecuación edo1.m no se encuentra en función de x, por lo tanto eliminamos
esta variable de nuestro método:
% Solucion RK4:
k1=edo1(yRK4(i));
k2=edo1(yRK4(i)+k1/2);
k3=edo1(yRK4(i)+k2/2);
k4=edo1(yRK4(i)+k3);
yRK4(i+1)=yRK4(i)+h*(k1+2*k2+2*k3+k4)/6;
Ahora para poder analizar los 3 métodos juntos modificamos la siguiente línea agregando la
visualización del método RK4
% Ploteando la solución exacta 'ye', la solución numérica 'y' y la solución Runge-Kutta 4°orden
'yRK4' en versus
plot(t,y,t,ye,'r:',t,yRK4,'b:');
% Colocando una leyenda en la parte superior derecha de la figura:
legend('solución exacta','solución numérica - Euler','solución RK4')
Ejecutamos el programa
Los métodos no son exactos ya que están diseñados para ecuaciones de primer grado
ordinarios y lineales.
%a%
num=1;
den=[1 1];
g=tf(num,den);
t=0:0.1:10;
ramp=t;
r=lsim(g,ramp,t);
ts=ones(1,length(t));
subplot(2,1,1);plot(t,step(g,t),t,ts,'b:',t,r,'r',t,t,'r:'),axis([0 10 0 4])
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud')
subplot(2,1,2),pzmap(g),
b) Sistema de segundo orden con 2 polos
%b%
num=2;
den1=[1 1];
den2=[1 2];
den=conv(den1,den2);
g=tf(num,den);
t=0:0.1:5;
ramp=t;
r=lsim(g,ramp,t);
ts=ones(1,length(t));
t=0:0.1:10;
ramp=t;
r1=lsim(g1,ramp,t);
ts=ones(1,length(t));
r2=lsim(g2,ramp,t);
subplot(2,2,2);plot(t,step(g2,t),t,ts,'b:',t,r2,'r',t,t,'r:'),axis([0 10 0 10])
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la
rampa','Rampa'),xlabel('Tiempo(s)'),ylabel('Amplitud'),title('H2')
subplot(2,2,4),pzmap(g2)
d) Sistema de segundo orden con Wn=5 y ζ=0.2
%d%
num=25;
den=[1 2 25];
g=tf(num,den);
t=0:0.01:5;
ramp=t;
r=lsim(g,ramp,t);
ts=ones(1,length(t));
subplot(2,1,1);plot(t,step(g,t),t,ts,'b:',t,r,'r',t,t,'r:'),axis([0 5 0 3])
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud')
subplot(2,1,2),pzmap(g)
e) Sistema de inciso d) con un polo en el origen
%e%
num=[25 0];
den=[1 2 25];
g=tf(num,den);
t=0:0.01:5;
ramp=t;
r=lsim(g,ramp,t);
ts=ones(1,length(t));
subplot(2,1,1);plot(t,step(g,t),t,ts,'b:',t,r,'r',t,t,'r:')
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud')
subplot(2,1,2),pzmap(g),
f) Sistema de inciso e) con cero en -5 rad/s
%f%
num1=5;
num2=[1 5];
num=conv(num1,num2);
den=[1 2 25];
g=tf(num,den);
t=0:0.01:5;
ramp=t;
r=lsim(g,ramp,t);
ts=ones(1,length(t));
subplot(2,1,1);plot(t,step(g,t),t,ts,'b:',t,r,'r',t,t,'r:'),axis([0 5 0 5])
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud')
subplot(2,1,2),pzmap(g),
g) Sistema de inciso f) con un tercer polo a baja y alta frecuencia
%g%
num1=25; num2=125;
denx=[1 2 25];
den1=conv([1 1],denx); den2=conv([1 5],denx);
g1=tf(num1,den1); g2=tf(num2,den2);
t=0:0.01:5;
ramp=t;
r1=lsim(g1,ramp,t);
ts=ones(1,length(t));
r2=lsim(g2,ramp,t);
subplot(2,2,1);plot(t,step(g1,t),t,ts,'b:',t,r1,'r',t,t,'r:'),grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud'),title('H1')
subplot(2,2,3),pzmap(g1)
subplot(2,2,2);plot(t,step(g2,t),t,ts,'b:',t,r2,'r',t,t,'r:')
grid on
legend('Respuesta al escalon','Escalon','Respuesta a la rampa','Rampa')
xlabel('Tiempo(s)'),ylabel('Amplitud'),title('H2')
subplot(2,2,4),pzmap(g2)
VI OBSERVACIONES Y CONCLUSIONES
Observaciones:
- La respuesta en rampa no estaba incluida en Matlab por lo que se ideó un código para poder
plotear.
Conclusiones:
- Se ha podido observar el cambio de una FT respecto a lo que son sus polos y ceros, y también
se ha podido estimar visualmente cual es su efecto al agregar al sistema.
- Respecto a lo anterior dicho se puede decir que la presencia de ceros puede modificar el valor
final que se tomara al analizar en régimen permanente.
- La presencia de polos inestabiliza la forma de onda en régimen transitorio al aplicar frecuencias
grandes.
- Se ha comprendido mas lo que son espacios de estados.
- El método de Euler y método exacto descrita al inicio en el inciso 1. Se emplean para dar
solución ecuaciones diferenciales ordinarias de primer orden (EDO 1er orden) lineales, por lo
cual, al aplicar una ecuación no lineal, hubo fallos en la solución.
LABORATORIO 4
I OBJETIVO
I.1. Emplear MATLAB en la solución de problemas matemáticos en el área de control.
II ASPECTOS TEÓRICOS
IV PROCEDIMIENTO
Controlador PID: Repita las siguientes instrucciones y tome atención en cada uno de los resultados
obtenidos. Le permitirá conocer la acción proporcional (P), Integral (I) y derivativa (D), de los
controladores. Estructura mayormente usada en la industria.
Para resolver este problema, crearemos un _le pidmotor.m donde introduciremos lo siguiente:
Teniendo ya la estructura del sistema controlado, procedemos a sintonizar (tunning) los parámetros del
PID (Ecuación (4))
En el último caso, obtuvimos una respuesta rápida, pero el overshoot incremento demasiado. Por
tanto, para reducir este efecto, introduciremos la acción derivativa.
Controlador PID: Repita las siguientes instrucciones y tome atención en cada uno de los resultados
obtenidos. Le permitirá conocer la acción proporcional (P), Integral (I) y derivativa (D), de los
controladores.
𝑲𝑰 𝑲𝑫 𝒔𝟐 + 𝑲𝑷 𝒔 + 𝑲𝑰
𝑷𝑰𝑫(𝒔) = 𝑲𝒑 + + 𝑲𝑫 𝒔 = (𝟒)
𝒔 𝒔
Para resolver este problema, crearemos un file 𝐩𝐢𝐝𝐦𝐨𝐭𝐨𝐫. 𝐦 donde introduciremos lo siguiente:
Teniendo ya la estructura del sistema controlado, procedemos a sintonizar (tunning) los parámetros
del PID (Ecuación (4))
Fig. 1
Observe. ¿Cuál es el efecto de la acción proporcional?
clear all
h=pidmotor(1.79,20,0);
t=0:0.001:0.3; %tiempo de la simulación
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid
%info de la respuesta%
info=stepinfo(h);
tr=info.RiseTime;tp=info.PeakTime;ts=info.SettlingTime;Mp=info.Overshoot;
str=['tr=',num2str(tr),' ts=',num2str(ts),' tp=',num2str(tp),' Mp=',num2str(Mp)];
title(str)
Fig. 2
Fig. 3
clear all
h=pidmotor(1.79,50,0);
t=0:0.001:0.3; %tiempo de la simulación
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid
%info de la respuesta%
info=stepinfo(h);
tr=info.RiseTime;tp=info.PeakTime;ts=info.SettlingTime;Mp=info.Overshoot;
str=['tr=',num2str(tr),' ts=',num2str(ts),' tp=',num2str(tp),' Mp=',num2str(Mp)];
title(str)
Fig. 4
Observe. ¿Cuál es el efecto de la acción integral?
El efecto de la acción integral (Ki):
o Aumenta el overshoot (Mp) hasta un 100% como máximo; y luego de que ‘ts’ se vuelva
infinito el error en estado estacionario es infinito.
o Reduce el factor de amortiguamiento y puede volverse negativo, obteniendo así un
tiempo de asentamiento (ts) mucho más alto y desde cierto punto llegando hasta
infinito.
o Varía el error en estado estacionario cambiando de ess=0 a, 1 e infinito
o Todo esto proporcional al valor Ki.
En los casos anteriores, el tiempo de acomodación es muy largo. Para reducirlo y obtener una
respuesta más rápida, hacemos las modificaciones KP = 17 y KI = 200.
clear all
h=pidmotor(17,200,0);
t=0:0.001:0.3; %tiempo de la simulación
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid
%info de la respuesta%
info=stepinfo(h);
tr=info.RiseTime;tp=info.PeakTime;ts=info.SettlingTime;Mp=info.Overshoot;
str=['tr=',num2str(tr),' ts=',num2str(ts),' tp=',num2str(tp),' Mp=',num2str(Mp)];
title(str)
Fig. 5
Comentario:
- Aun no se cumplen las especificaciones de diseño Mp<16% y ts<0.04s
- El error ess=0, se cumple.
clear all
h=pidmotor(17,200,0.15);
t=0:0.001:0.3; %tiempo de la simulación
step(h,t)
xlabel('Tiempo (s)')
ylabel('Posición (rad)')
grid
%info de la respuesta%
info=stepinfo(h);
tr=info.RiseTime;tp=info.PeakTime;ts=info.SettlingTime;Mp=info.Overshoot;
str=['tr=',num2str(tr),' ts=',num2str(ts),' tp=',num2str(tp),' Mp=',num2str(Mp)];
title(str)
Fig. 6
OBSERVACIONES Y CONCLUSIONES
Haga sus observaciones y emita al menos cinco conclusiones del trabajo realizado
Los tipos de control estudiados tienen sus propias características y son adecuadas para
determinada aplicación, la aplicación de un controlador va a depender básicamente del tipo de
señal de entrada al sistema de control, en este caso un escalón unitario.
Con el uso del MATLAB, podemos encontrar la respuesta temporal de un sistema de control
basándonos en su función de transferencia en LA o LC.
Al variar los valores de 𝜍 y 𝑤𝑛 con el controlador PID, podemos hacer que el sistema de control
responda más rápidamente, o con menor rebase, menor oscilación, lo cual nos permite adecuar
el controlador a los requerimientos dado.
Los controles PID reúnen las características de los tres tipos de control precedentes, por tanto, su
respuesta temporal es más idónea.
El control proporcional, nos ayuda a definir el comportamiento en régimen transitorio.
El control integral, nos permite definir el comportamiento tanto transitorio como en permanente
pudiendo hasta cierto punto inestabilizarlo, integrando el sistema.
El control derivativo hace exactamente lo opuesto a la integral de manera mucho más rápida.
Según lo experimentado, estabiliza la respuesta transitoria y permanente, derivando el sistema.
LABORATORIO 5
I OBJETIVO
I.1. Emplear MATLAB en la solución de problemas matemáticos en el área de control.
II ASPECTOS TEÓRICOS
IV PROCEDIMIENTO
%//////////////////////////////////////////////
% Sistema de Suspensión //
% /////////////////////////////////////////////
clear % borra las variables antiguas
% /////////////////////////////////////////////
% Parámetros
m=250; % masa suspensa (kg)
k=10000; % rigidez del resorte (N/m)
b=316.23; % amortecimiento (Ns/m)
% Matrices del sistema
A=[0 1;-k/m -b/m];
B=[-1;b/m];
C=[-k/m -b/m];
D=[b/m];
% Sistema en el espacio de estados
G=ss(A,B,C,D);
% Respuesta en frecuencia
% Diagrama de Bode del sistema (observe las escalas de los graficos):
bode(G)
% La escala horizontal es logarítmica, y muestra la frecuencia en rad/s.
% La escala vertical del grafico superior es lineal, y muestra la ganancia en db.
% La escala vertical del grafico inferior es lineal y muestra la fase en grados.
% Matlab asigna valores por defecto a nuestro grafico de Bode, el Matlab
% mostro que la amplitud de la ganancia esta entre -0db e +40db, la
% fase está entre -90 e 90 grados, y que la frecuencia esta entre 10 y
% 1000 rad/s. Vamos construir un vector w donde el logaritmo de la
% distancia entre un valor y otro es constante, comenzando en 10
% elevado a (-3), terminando en 10 elevado a (4), con 2000 puntos, y
% asumiendo que la unidad es rad/s:
w=logspace(-3,4,2000);
% Determinamos los vetores de magnitud y fase,
[mag,phase]=bode(G,w);
% mag y fase son arrays de 3 dimensiones, esto quiere decir que la
% función bode trabaja con sistemas multivariable (MIMO)
% Entonces, para nuestro caso, debemos solo capturar el vector correspondiente
mag=mag(1,:);
phase=phase(1,:);
% Ploteando el Bode de ganancia
subplot(2,1,1)
semilogx(w,20*log10(mag)) % semilogx realiza un plot semilogaritmico
axis([10^-3 10^4 -70 60]) % definimos los márgenes de la ventana
grid % rejilla
% Ploteando el Bode de fase
subplot(2,1,2)
semilogx(w,phase) % semilogx realiza un plot semilogaritmico
axis([10^-3 10^4 -100 100]) % definimos los márgenes de la ventana
grid % rejilla
2. Ejercicio
5. Ejercicio
Analizar la respuesta en frecuencia de los siguientes sistemas de control con realimentación unitaria.
Dibujar los diagramas de Nyquist y de Nichols y calcular el Margen de Fase, el Margen de ganancia,
ancho de banda, pico de resonancia y frecuencia de resonancia.
V OBSERVACIONES Y CONCLUSIONES
V.1. Haga sus observaciones y emita al menos cinco conclusiones del trabajo realizado
___________________________________________________________________________________
___________________________________________________________________________________
___________________________________________________________________________________
__________________________________________________________________________________
SOLUCIÓN LABORATORIO 5
%//////////////////////////////////////////////
% Sistema de Suspensión //
% /////////////////////////////////////////////
clear % borra las variables antiguas
% /////////////////////////////////////////////
% Parámetros
m=250; % masa suspensa (kg)
k=10000; % rigidez del resorte (N/m)
b=316.23; % amortecimiento (Ns/m)
% Matrices del sistema
A=[0 1;-k/m -b/m];
B=[-1;b/m];
C=[-k/m -b/m];
D=[b/m];
% Sistema en el espacio de estados
G=ss(A,B,C,D);
% Respuesta en frecuencia
% Diagrama de Bode del sistema (observe las escalas de los graficos):
bode(G)
% La escala horizontal es logaritmica, y muestra la frecuencia en rad/s.
% La escala vertical del grafico superior es lineal, y muestra la ganancia en db.
% La escala vertical del grafico inferior es lineal y muestra la fase en grados.
% Matlab asigna valores por defecto a nuestro grafico de Bode, el Matlab
% mostro que la amplitud de la ganancia esta entre -0db e +40db, la
% fase está entre -90 e 90 grados, y que la frecuencia esta entre 10 y
% 1000 rad/s. Vamos construir un vector w donde el logaritmo de la
% distancia entre un valor y otro es constante, comenzando en 10
% elevado a (-3), terminando en 10 elevado a (4), con 2000 puntos, y
% asumiendo que la unidad es rad/s:
w=logspace(-3,4,2000);
% Determinamos los vetores de magnitud y fase,
[mag,phase]=bode(G,w);
% mag y fase son arrays de 3 dimensiones, esto quiere decir que la
% función bode trabaja con sistemas multivariable (MIMO)
% Entonces, para nuestro caso, debemos solo capturar el vector correspondiente
mag=mag(1,:);
phase=phase(1,:);
% Ploteando el Bode de ganancia
subplot(2,1,1)
semilogx(w,20*log10(mag));% semilogx realiza un plot semilogaritmico
title('Diagrama de Bode');xlabel('Frecuencia (w)');ylabel('Ganancia (dB)');
axis([10^-3 10^4 -70 60]) % definimos los márgenes de la ventana
grid % rejilla
% Ploteando el Bode de fase
subplot(2,1,2)
semilogx(w,phase);% semilogx realiza un plot semilogaritmico
xlabel('Frecuencia (w)');ylabel('Fase (°)');
axis([10^-3 10^4 -100 100]) % definimos los márgenes de la ventana
grid % rejilla
2. Ejercicio
Considerar la siguiente función de transferencia:
K1=32; %valores de K
den1=[1 0];
den2=[1 4];
denx=conv(den1,den2);
den3=[1 4 20];
den=conv(denx,den3); %Denominador
G=tf(K1,den); %Funciòn de transferencia
3. Dibujar el diagrama de Bode correspondiente para los siguientes valores de K:
o 0 ≤ K < 64
o K = 64
o 64 < K < 100
o K = 100
o 100 < K < 260
o K = 260
o K > 260
Margen de ganancia
Distancia en decibelios medido desde el gráfico de bode amplitud hasta 0dB, marcado por la
frecuencia en la que la fase llega a -180º.
Positivo cuando la distancia se encuentra por debajo de los 0dB y negativa si se encuentra por
encima de los 0dB.
Margen de Fase
Distancia en grados medido desde el gráfico de bode de fase hasta -180º, en la frecuencia en la
que la ganancia llega a 0dB.
Positivo cuando la distancia se encuentra por encima de los -180º y negativo cuando se encuentra
por debajo de los -180º.
Para analizar el punto 3. Y 4. se terminó el programa anterior, aquí nos detalla los márgenes de
ganancia y de fase a su respectiva frecuencia en el gráfico de bode con el comando ‘margin’. Se
eligió los valores medios para K donde existe un intervalo.
K1=360; %valores de K
den1=[1 0];
den2=[1 4];
denx=conv(den1,den2);
den3=[1 4 20];
den=conv(denx,den3); %Denominador
G=tf(K1,den); %Funciòn de transferencia
margin(G) %Graficamos el bode con los màrgenes
grid
0 ≤ K < 64 ; K=32;
K = 64
K = 260
5. Ejercicio
Analizar la respuesta en frecuencia de los siguientes sistemas de control con realimentación unitaria.
Dibujar los diagramas de Nyquist y de Nichols y calcular el Margen de Fase, el Margen de ganancia,
ancho de banda, pico de resonancia y frecuencia de resonancia.
Matlab grafica el diagrama de Nyquist y Nichols siempre y cuando se defina el sistema realimentado
unitariamente; por ello utilizamos ‘feedback’ para realimentar el sistema y Matlab extraiga la
ecuación característica.
Para calcular los márgenes de ganancia y fase, pico y frecuencia de resonancia utilizamos un poco
la vista y las características ofrecidas por el gráfico. Se tomará este punto como ejemplo:
a)
clear
num=[0.1 1];
den1=[1 0];
den2=[1 1];
den3=[0.01 1];
denx=conv(den1,den2);
den=conv(denx,den3);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);
nichols(F),grid;
Para visualizar el margen de ganancia y fase seleccionamos ‘Minimun Stability Margins’ en ambas
gráficas para confirmar.
Para Nyquist, el margen de fase mide desde el punto (-1+j0) hasta la intersección de la magnitud
1 y la gráfica; si el ángulo se mide hacia abajo, el margen de fase es positiva, si se mide hacia
arriba, es negativa; todo siempre y cuando se evalúe en frecuencia positiva.
Y por último para el ancho de banda se hace un recorrido en la gráfica de Nichols hasta cuando la
ganancia baje a -3dB. En otras palabras, el ancho de banda se encuentra es la gamma de
frecuencias donde la ganancia es superior a -3dB.
Ancho de Banda (rad/s) = [0 , 1.22]
b)
clear
num1=[0.5];
num2=[1 1];
num=conv(num1,num2);
den1=[1 0];
den2=[0.2 1];
den3=[0.5 1 1];
denx=conv(den1,den2);
den=conv(denx,den3);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);
nichols(F),grid;
Pico de Resonancia (dB) = 0
Frecuencia de Resonancia (rad/s) = 0
Margen de Ganancia (dB) = +15.8
Margen de Fase (deg) = -180
Ancho de Banda (rad/s) = [0 , 0.993]
c)
clear
num=[1 1];
den1=[1 0];
den2=[0.2 1];
den3=[0.5 1];
denx=conv(den1,den2);
den=conv(denx,den3);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);
nichols(F),grid;
Pico de Resonancia (dB) = 0
Frecuencia de Resonancia (rad/s) = 0
Margen de Ganancia (dB) = +infinito
Margen de Fase (deg) = -180
Ancho de Banda (rad/s) = [0 , 1.16]
d)
clear
num=[1];
den1=[1 0];
den2=[1 1];
den3=[0.5 1];
denx=conv(den1,den2);
den=conv(denx,den3);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);
nichols(F),grid;
Pico de Resonancia (dB) = 5.28
Frecuencia de Resonancia (rad/s) = 0.824
Margen de Ganancia (dB) = +6.03
Margen de Fase (deg) = +24.2
Ancho de Banda (rad/s) = [0 , 1.26]
e)
clear
num=[50];
den1=[1 0];
den2=[1 1];
den3=[0.5 0 1];
denx=conv(den1,den2);
den=conv(denx,den3);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);
nichols(F),grid;
Pico de Resonancia (dB) = 0.0864
Frecuencia de Resonancia (rad/s) = 1.04
Margen de Ganancia (dB) = infinito
Margen de Fase (deg) = +180
Ancho de Banda (rad/s) = [0 , 1.26]
f)
clear
num1=[0.2];
num2=[-1 0 1];
num3=[0.5 1];
numx=conv(num1,num2);
num=conv(numx,num3);
den1=[1 0];
den2=[1 1 1];
den=conv(den1,den2);
G=tf(num,den); %Sistema de control en lazo abierto
F=feedback(G,1);%Sistema realimentado unitariamente
subplot(1,2,1);
nyquist(F),grid;
subplot(1,2,2);nichols(F),grid;
Pico de Resonancia (dB) = 0
Frecuencia de Resonancia (rad/s) = 0
Margen de Ganancia1 (dB) = +7.37
Margen de Ganancia2 (dB) = +19.1
Margen de Fase (deg) = -180
Ancho de Banda (rad/s) = [0 , 0.256] , [0.891 , 0.997]