Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matlab SimulinK Control
Matlab SimulinK Control
actica 1: Introducci
on al uso de matlab y simulink para
Control Autom
atico
o
Introducci
on al Control Toolbox de matlab
1.1
Definici
on de funciones de transferencia
2.5 s + 1
+ 3s + 2
s2
Para ello, podemos denir los polinomios numerador y denominador, almacenandolos en sendas
variables a las que denominaremos, respectivamente, N y D:
N = [2.5,1];
D = [1,3,2];
Como puede verse, la forma de denir un polinomio es crear un vector cuyos elementos son
los coecientes de dicho polinomio, siempre en orden decreciente de potencias de la variable
independiente. Como veremos, a partir de este momento, podemos trabajar con muchas de las
funciones del Control Toolbox, pas
andoles como funci
on de transferencia este par de polinomios.
Hay que tener ciertas precauciones, cuando alguno de los coecientes sea nulo. Por ejemplo,
supongamos que la funci
on de transferencia fuera la siguiente:
3
+ 2s
Una forma incorrecta de introducir el polinomio denominador sera:
G(s) =
s2
N = 3;
D = [1,2];
Sera incorrecta puesto que con esto, en realidad, se estara deniendo:
G(s) =
3
s+2
1.2
Simulaci
on de respuesta temporal
La funci
on step() simula la respuesta ante escalon unitario de una funcion de transferencia. Por
defecto, la escala temporal se elige autom
aticamente y se asume que el escal
on se produce en el
instante cero.
step (N, D);
La llamada a esta funci
on lleva asociada la representaci
on en una ventana gr
aca de la salida
resultante.
Alternativamente, podemos pasar como par
ametro un objeto funci
on de transferencia:
step (G); grid;
En este caso, al igual que podra haberse hecho en el caso anterior, se ha a
nadido el comando
grid, que permite visualizar una rejilla sobre el fondo de la graca.
Si queremos simular la respuesta para una escala temporal dada por nosotros mismos:
t = [0:0.001:10];
step (G, t);
El primer comando genera un vector columna (el operador de trasposici
on, que transforma lo
que inicialmente sera un vector la en un vector columna, es la comilla simple que aparece a la
derecha del vector denido entre corchetes), conteniendo una secuencia de valores comenzando
en 0 y terminando en 10, con un paso o incremento de 0.001. Esta variable t contendr
a nuestro
vector de instantes de tiempo a emplear en la simulacion. Para ello, en la llamada a la funci
on
step() se le pasa este vector tiempo como u
ltimo parametro.
Si se desea representar dos respuestas escalon en la misma gr
aca, con nes comparativos, puede
hacerse del siguiente modo:
G1 = tf (N,D);
G2 = tf (3,[1,2,1]);
t = [0:0.001:10];
y1 = step (G1, t);
y2 = step (G2, t);
figure(1); plot(t,y1,t,y2); grid;
Como se ve, la funci
on step() puede devolver un vector conteniendo los valores que resulten
para la se
nal de salida en cada instante de la simulaci
on. En este caso, dicha funci
on no realiza
3
representacion graca alguna. El comando plot(), por su parte, permite realizar representaciones
gr
acas de dos dimensiones. En este caso particular, se estan representando dos se
nales, las
contenidas en los vectores y1 e y2, frente a la misma escala temporal.
Existen otras funciones para simular la respuesta ante se
nales de entrada. Por ejemplo, la funcion
impulse(), simula la respuesta ante impulso unitario a la entrada. La funcion lsim() permite
la simulaci
on de la respuesta ante cualquier se
nal de entrada que deseemos. Por ejemplo, si
queremos simular la respuesta ante una rampa de pendiente 3 a la entrada, podramos escribir:
t = [0:0.001:10];
rampa = 3*t;
lsim (G, rampa, t);
Tanto la funci
on impulse() como la funci
on lsim() tienen caractersticas similares a la funcion
step(), en cuanto a que realizan la representaci
on de forma autom
atica, a menos que en la
llamada se almacene el valor devuelto por la funci
on en alguna variable.
Algebra
de bloques
1.3
Existen funciones para realizar operaciones de algebra de bloques con funciones de transferencia.
A continuacion, se mostrar
an algunos ejemplos.
La operacion m
as elemental consiste en obtener una u
nica funci
on de transferencia equivalente
a otras dos que esten dispuestas en serie. Imaginemos denidos los polinomios numerador y
denominador de dos funciones de transferencia, N 1, D1, N 2 y D2. Dado que el resultado de la
operacion mencionada sera el producto de ambas funciones de transferencia, podemos realizar el
producto de los polinomios numerador por un lado y, por otro, el de los polinomios denominador.
La funci
on que nos permite realizar producto de polinomios es conv():
N1
D1
N2
D2
=
=
=
=
[2.5,1];
[1,3,2];
3;
[1,2,1];
N
D
G1 = tf (N1,D1);
G2 = tf (N2,D2);
G = G1*G2;
Como se ve, directamente se puede realizar el producto de dos objetos funci
on de transferencia.
Esto no impide que la funcion series() pueda seguir siendo usada con este tipo de objetos:
De forma an
aloga a la puesta en serie de dos funciones de transferencia, se puede obtener el
equivalente de una conguracion en paralelo. A continuaci
on, se muestran las tres formas de
obtener el mismo resultado:
Introducci
on al simulink
2.1
Integradores
1
s
Step
Mux
Integrator
Scope
2.2
Funciones de transferencia
Para utilizar funciones de transferencia dentro de simulink, basta con incluir un bloque Transfer
Function del apartado de tiempo continuo (Continuous) de la biblioteca, tal y como se presenta
en la gura 4.
s+2
s2 +s+3
Step
Transfer Fcn
Mux
Scope
s+2
s2 + s + 3
Figure 5: Par
ametros del bloque funci
on de transferencia.
El resultado de la simulaci
on del diagrama anterior puede visualizarse a traves del visor (gura
6).
2.3
Realimentaci
on y ganancias
Sum
K
Step
Gain
s+2
s2 +s+3
Scope
Transfer Function
Figure 7: Funci
on de transferencia con ganancia en serie y realimentada.
Un sumador o restador se implementa mediante un bloque Add o Sum del apartado de Math
Operations de la biblioteca. Por su parte, una ganancia se implementa mediante el bloque de
forma triangular que aparece en el diagrama, obtenido a partir de un bloque Gain del apartado
Math Operations. Fjese que el valor introducido como ganancia no es una constante, sino una
variable de nombre K.
Para que la simulaci
on del modelo pueda llevarse a cabo, sera necesario que previamente se haya
denido dicha variable desde matlab. Esto ilustra las posibilidades de interacci
on entre matlab
y simulink: variables denidas en el espacio de trabajo de matlab pueden ser usadas desde
simulink, as como variables que tomen valores como resultado de la simulacion de un diagrama
de simulink estar
an disponibles para su uso desde la ventana de comandos de matlab, como
se ver
a a continuacion.
2.4
Fuentes y sumideros
To Workspace2
r
To Workspace1
Sum
s+2
K
Step
Gain
s2 +s+3
Transfer Function
y
To Workspace
Figure 8: Diagrama de bloques para ilustrar el uso de los bloques Clock y To Workspace.
En principio, se recomienda congurar los parametros de los elementos To Workspace tal y como
se muestra en la gura 9, en particular con el formato de almacenamiento de tipo Array. La
justicacion est
a en la simplicidad que eso aporta, a posteriori, para la manipulacion de estas
variables desde matlab.
Figure 9: Cuadro de di
alogo para establecer los par
ametros de un bloque To Workspace.
Una vez realizada la simulaci
on, dispondremos de las variables tSim, r e y, con las que podremos
realizar una representacion graca a voluntad, usando el comando plot() ya conocido:
figure(1); plot (tSim,r, tSim,y); grid;
10
En esta parte de la pr
actica, se parte directamente de una funci
on de transferencia dada por la
expresion siguiente:
K (s + c)
(s + p) (s2 + 2 wn s + wn2 )
G1 (s) =
(1)
K =
135 + 15 D8
90
p =
45 + 7 D7
90
c =
207 + 12 D6
90
45 + 2 D5
90
wn = 6 p
Siendo D8 el dgito menos signicativo del DNI, D7 el anterior y as sucesivamente. Por ejemplo,
para el DNI n
umero: 53568447, se tendra D8 = 7, D7 = 4, D6 = 4, D5 = 8, con lo que
resultaran los siguientes valores de los par
ametros:
K = 2.66667
3.1
3.1.1
p = 0.81111,
c = 2.83333,
= 0.67778,
wn = 4.86667
Aproximaci
on por modelo de primer orden
Trabajo previo
G1 (s)
K
1 + s
(2)
3.2
Aproximaci
on por modelo de segundo orden
G2 (s) =
(s +
p) (s2
K (s + c)
;
+ 2 2 wn2 s + wn2 2 )
12
2 = 0.2 ;
w n2 = p
(3)
3.2.1
Trabajo previo
G2 (s)
w
K
n2
s2 + 2 w
n s + w
n2
(4)
= e 12
SO
tp =
w
n 1 2
3.2.2
(5)
Trabajo en el Centro de C
alculo
ganancia est
atica K [p8], coeciente de amortiguamiento [p9], y frecuencia natural no
amortiguada w
n [p10].
Nota: Tal y como se ha dicho anteriormente, debe emplearse la expresi
on (5) para la
estimaci
on de w
n .
Compare la respuesta ante escal
on unitario del sistema original y del reducido. Mida el
valor de la respuesta del sistema original (3), transcurrido un intervalo igual al tiempo de
subida, despues de producirse el escal
on de entrada, y(ts ) [p11]. Analogamente para el
sistema aproximado (4) en ese mismo instante, yaprox (ts ) [p12].
Nota: Emplee la siguiente expresi
on para obtener el valor del tiempo de subida en el que
tomar las medidas:
arccos()
ts =
w
n 1 2
13
18 + 8 D8
90
[N m/V ]
I =
225 + 15 D7
90
b =
45 + 15 D6
9
Kg m2
Kg m2 /s
4.1
4.1.1
acelAng
u
Km
1/I
1
s
velAng
1
s
ang
Scope
14
K
;
1+s
Gp (s) =
1
K
Gv (s) =
s
s (1 + s)
(7)
velAng
tau .s+1
1
s
ang
Scope
4.1.2
Trabajo en el Centro de C
alculo
Implemente el diagrama de bloques mostrado en la gura 10, pero haciendo que entre
tambien en el visor la velocidad angular 2 . Congure una condicion inicial no nula, (t =
0) = 0.2 [rad], para la salida en posici
on, a traves de las propiedades del integrador
correspondiente. Mantenga, sin embargo, condicion inicial nula para la velocidad angular,
= 0) = 0 [rad/s].
(t
Nota: De cara al siguiente punto, tenga precauci
on para no pasar por alto el instante en
el que se produce el escal
on, dado que, por defecto, no es cero.
Simule la respuesta del sistema ante una entrada de tipo escal
on: u(t) = 4V . Tome nota
15
16
4.2
4.2.1
Motor en realimentaci
on
Trabajo previo
Kc
ang
tau .s2 +s
Scope
4.2.2
Kbc wn2
s2 + 2 wn s + wn2
(8)
Trabajo en el Centro de C
alculo
Determine analticamente el valor de la ganancia Kc [p17], para que el sistema realimentado resulte estable y con un coeciente de amortiguamiento = 0.7, de acuerdo con la
expresi
on (8).
Implemente el diagrama de bloques mostrado en la gura 14 y verique el punto anterior (basta comprobar que la sobreoscilaci
on del sistema realimentado resultante debe ser
ligeramente inferior al 5%).
Para el valor de ganancia Kc jado, determine analticamente el tiempo de pico que tendra
la respuesta ante referencia en escal
on, tpteorico [p18]. Determine este mismo valor experimentalmente, tpexperim [p19], a partir de una simulacion con el modelo de la gura
14.
17
Las respuestas del modulo entregaran en Goodle. La pagina web del servidor de docencia es:
http://bono.us.es/sdocencia
Para entregar el proyecto hay que darse de alta en Goodle siguiendo las instrucciones de la gua
que puede encontrarse en el entorno de Ense
nanza Virtual (apartado Contenido del Curso /
Tutoriales / Gua de Goodle GMS). La entrega de los resultados consiste en rellenar el formulario
de texto siguiendo las siguientes instrucciones:
Cada respuesta correspondiente a una cuesti
on de trabajo en el centro de calculo tiene
asignado un nombre. En el enunciado de la pr
actica se indica con una etiqueta entre
corchetes cada respuesta que hay que entregar.
Ejemplo: A la primera respuesta (valor de la ganancia est
atica identicada) le corresponde
el nombre p1 y a la u
ltima respuesta le corresponde el nombre p19.
Para cada respuesta hay que escribir una lnea con el siguiente formato:
nombre = valor;
Ejemplo: Para responder que el valor de la constante de tiempo de la funci
on de transferencia (2) es 0.3 segundos, se escribira la siguiente lnea:
p2 = 0.3;
Observe que los decimales se separan utilizando el punto, no la coma.
En caso de que hubiera que dar una respuesta que correspondiera a un polinomio (por
ejemplo, el denominador de una funci
on de transferencia), hay que utilizar el formato
explicado al principio para introducir polinomios en matlab en la Seccion 1.1. En caso
de que alguno de los polinomios fuera una constante, los corchetes deben obviarse. Por
ejemplo, para indicar:
7
Gbc(s) = 2
3s + 0.45
habra que escribir las siguientes lneas:
p14 = 7;
p15 = [3, 0, 0.45];
Goodle rechaza los envos con errores de sintaxis.
Es recomendable confeccionar la respuesta en un chero de texto plano antes de pasarla
al servidor, por ejemplo utilizando el bloc de notas de Windows.
Si desconoce alguno de los datos solicitados, evite dar respuestas que provoquen error de
sintaxis, como las siguientes:
18
p5 = ;
p6 =
En lugar de eso, introduzca en la respuesta alg
un valor, preferentemente un valor nulo:
p5 = 0;
p6 = 0;
p1 = 3;
p2 = 4.3;
p3 = 0.65;
p4 = 23.4;
p5 = 34;
p6 = -4;
p7 = 76.5;
p8 = 12;
p9 = 1;
p10 = 9;
p11 = 43;
p12 = 3.1;
p13 = 5.2;
p14 = 2.4;
p15 = 29.5;
p16 = 0.0005;
p17 = -92.4;
p18 = 2.84;
p19 = 4.17;
19