Professional Documents
Culture Documents
Preparado por:
Ing. Juan Cutipa
Ing. Oscar Salazar
Ing. Daniel Yanyachi
30 de mayo de 2008
Índice general
1. Introducción al Matlab 1
2. Simulación numérica 6
i
Índice de figuras
ii
Índice de tablas
iii
Capı́tulo 1
Introducción al Matlab
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
0 0 7
5 9 -1]
ó
A=[2 2 3;0 0 7;5 9 -1]
a=1;b=2;
1
A=[a+b pi 3
b^2 0 atan(a)
5 sin(b) -1]
B=zeros()
B=zeros(2,3)
C=ones(2,3)
Matrices diagonales:
Matriz diagonal con los elementos da diagonal principal yendo de 1 a 5:
D=diag(1:5)
A=[1 2 3
4 5 6
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
2
Multiplicación de matrices:
Extracción de la fila 2:
a=C(2,:)
Extracción da 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’
d=det(A)
Polinomios:
Polinomio p1 con raı́ces en 0 e -1:
v=[0 -1]
p1=poly(v)
3
p2=poly([1 2 1])
Cálculo de raı́ces:
p=roots(p1)
Funciones:
y=mifuncion(30)
x=-2:0.5:3;
Calculando la función
y=mifuncion2(x)
Ploteando el resultado:
plot(x,y)
4
Figura 1.1: Escalon Unitario y Peine de Dirac.
2. Ejercicios:
Implemente en matlab la siguiente función, luego plotee
1
y = f (x) = (1.1)
x2 −1
Implemente en matlab la siguiente función, luego plotee
½
x1 + x2 if x1 > 0, x2 > 0
y = f (x1 , x2 ) = p 2 2 (1.2)
x1 + x2 en los demás casos
5
Capı́tulo 2
Simulación numérica
[1 − y(t)]
Determine la solución de la ecuación diferencial ẏ = usando el método
2
de Euler.
Plotear el gráfico de y(t) en función de t, y el gráfico de la solución exacta ye (t)
en función de t.
instante inicial: t = 0
instante final : tf = 10
solución exacta de la ecuación diferencial: ye (t) = 1 − e(1−t/2)
function [ydot]=edol(y)
ydot=(1-y)/2;
6
ye(i+1)=1-exp(-t(i+1)/2);
% Finaliza comando for:
end
% Determinacion del ultimo termino del vector ydot:
ydot(n+1)=edol(y(n+1));
% Ploteando la solucion exata ’ye’ y la solucion numerica ’y’, ambos versus el veto
plot(t,y,t,ye,’r:’);
% Colocando una leyenda en la parte superior derecha de la figura:
legend(’solucion exacta’,’solucion numerica - Euler’)
% Colocando titulo en la parte superior y etiquetas en las coordenadas
title(’Comparacion entre la solucion exata y la solucion numerica’)
xlabel(’Tiempo (s)’)
ylabel(’Amplitud ()’)
h=tf(1,[1 1])
7
3. Ejercicio: realice la simulación numérica de la ecuación diferencial descrita en el item 1.
Está vez implemente el algoritmo RK4, en vez del método Euler. Haga una comparación
entre las soluciones: Exacta, Euler y RK4.
4. Ejercicio: repetir 1, usando la ecuación diferencial (no-lineal) siguiente:
ẏ = 2,5 [y(1 − y)] y(0) = 0,9 Condición inicial h = 0,85 Paso tf = 600s Instante final
(2.1)
8
f ) Ahora adicionamos un zero a 5 rad/s
5(s + 5)
H7 (s) = 2
s + 2s + 25
g) Un tercer polo es adicionado a H5 , primero a baja frecuencia, luego a alta frecuencia.
25
H8 (s) = 2
(s + 1)(s + 2s + 25)
125
H9 (s) =
(s + 5)(s2 + 2s + 25)
9
Capı́tulo 3
%//////////////////////////////////////////////
% Sistema de Suspension //
% /////////////////////////////////////////////
clear % borra las variables antiguas
% /////////////////////////////////////////////
% Parametros
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 frequencia
% Diagrama de Bode del sistema (observe las escalas de los graficos):
10
bode(G)
% La escala horizontal es logaritmica, y muestra la frequencia 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 esta entre -90 e 90 grados, y que la frequencia 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
% convencionando 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
% funcion bode trabaja con sistemas multivariable (MIMO)
% Entonces, para nuestro caso, debemos solo capturar el vector
% correspondiente
mag=mag(1,:);
phase=phase(1,:);
% Plotenado 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 margenes 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 margenes de la ventana
grid % rejilla
2. Ejercicio: Encuentre la respuesta en frecuencia del filtro activo mostrado en la figura
2. Encuentre el Margen de Fase (MF) y el Margen de Amplitud (MA).
3. Ejercicio: Dada la siguiente estructura de control (ver figura 3), donde G(s) es la planta
que será controlada por el controlador Gc (s). Se debe predecir el desempeño del sistema
11
en lazo cerrado (LC) a partir del analisis en lazo abierto (LA). Por tanto se debe tener
en consideración los siguientes items:
Dado los items anteriores, en este laboratorio solo nos abocaremos a evaluar la respuesta
en frecuencia de un sistema controlado. Dejaremos para otro Laboratorio el ”¿cómo
diseñar el controlador?”.
Siendo asi, haga un estudio de la estabilidad mediante los gráficos de Bode en LA,
identifique MG,MF, Wcg y Wcf , comente los resultados para cada uno de los casos
siguientes:
1 10
i) Gc (s) = y G(s) =
1 1,25s + 1
1 10
ii) Gc (s) = y G(s) =
s 1,25s + 1
s+1 10
iii) Gc (s) = y G(s) =
s 1,25s + 1
5(s + 1) 10
iv) Gc (s) = y G(s) =
s 1,25s + 1
Adicionalmente, para cada uno de los casos, debe plotear la respuesta al escalon uni-
tario, indicar el overshoot, indicar el tiempo de establecimiento de la señal y el error
en regimen permanente ess .
NOTA: El informe de este laboratorio se entrega impreso, donde se incluyen todos los script
comentados de matlab. Por tanto, solo para este laboratorio, no es necesario adjuntar CD.
12
Capı́tulo 4
1. 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.
El modelo dinámico de un motor DC está expresado por la siguiente función de trans-
ferencia:
13
Tabla 4.1: Coeficientes para el modelo dinámico del motor DC
constante unidades descripción
J 3.2284E-6 kgm2 /s2 momento de inercia del rotor
b 3.5077E-6 N m/s coeficiente de amortecimiento del motor
k = ke = kt 0.0274 N m/Amp constante de la fuerza electromotriz
R 4Ω resistencia eléctrica del motor
L 2.75E-6 H inductancia eléctrica del motor
V ? voltaje de entrada
θ ? ángulo o posición de salida
function [h]=pidmotor(kp,ki,kd)
% modelo del motor G(s)
J=3.2284E-6;
b=3.5077E-6;
K=0.0274;
R=4;
L=2.75E-6;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0];
% F.T del controlador PID(s)
kp=kp;
ki=ki;
kd=kd;
numpid=[kd kp ki];
denpid=[1 0];
% F.T en lazo abierto F(s)=G(S)*PID(s)
numf=conv(num,numpid);
denf=conv(den,denpid);
[af,bf,cf,df]=tf2ss(numf,denf)
sysf=ss(af,bf,cf,df)
% FT en lazo cerrado H(s)=F(s)/1+F(s) (negative feedback)
h=feedback(sysf,1);
clear all
h=pidmotor(1.79,0,0)
t=0:0.001:0.3; % tiempo de la simulacion
step(h,t)
xlabel(’Tiempo (s)’)
14
ylabel(’Posicion (rad)’)
grid
clear all
h=pidmotor(1.79,20,0)
t=0:0.001:0.3; % tiempo de la simulacion
step(h,t)
xlabel(’Tiempo (s)’)
ylabel(’Posicion (rad)’)
grid
ωn2
H(s) = (4.5)
s2 + 2ζωn s + ωn2
plotee él mapa de polos y la respuesta temporal para los siguientes casos.
15
1
0.8
Posicion (rad)
0.2
0
0 0.02 0.04 0.06 0.08 0.1
Tiempo (s)
16
Figura 4.5: Sistema mecánico.
c(tp ) − c(∞)
Mp ( %) = × 100 % (4.7)
c(∞)
5. Implemente una nueva función (similar a la función pidmotor del item 1). Usando esa
nueva función, encuentre los parámetros del controlador PID (KP , KI y KD ) para el
sistema mecánico siguiente:
X(s) 1
= 2
(4.8)
F (s) ms + bs + k
donde:
Recomendación: El sistema controlado deberá tener una respuesta rápida (ts < 1 s),
un sobrepaso mı́nimo (Mp < 25 %) y un error en régimen permanente nulo (ess = 0).
17
Capı́tulo 5
18
Figura 5.2: Diagrama de bloques del sistema de control.
7. La función de transferencia del péndulo invertido está expresado por (2), donde Θ(s) es
el ángulo de inclinación de la barra y T (s) representa el torque aplicado por un motor
en la base del péndulo. Haga el lugar de raı́ces suponiendo un controlador proporcional
Gc (s) = Kp . ¿Qué tipo de respuesta em lazo cerrado espera para los diferentes valores
de Kp ?
Θ(s) 2
= 2 (5.2)
T (s) s −2
8. Considere el sistema en lazo directo G(s).
10
G(s) = (5.3)
s+1
Obtenga la respuesta temporal del sistema en lazo cerrado (realimentación negativa y
unitaria) cuando está sujeto a cada una de las entradas siguientes:
19
i) r(t) = sen(t + 30◦ )
ii ) r(t) = 2sen(2t − 45◦ )
iii) r(t) = sen(t + 30◦ ) − 2cos(2t − 45◦ )
Use el comando lsim en Matlab, el cual permite personalizar el tipo de señal de entrada.
20
Apéndice A
21