Sie sind auf Seite 1von 19

Práctica 1: Introducción al uso de matlab y simulink para

Control Automático

o
Control Automático, 2 GIA

Esta práctica permitirá que el alumno se familiarice con las herramientas disponibles en matlab
para el Control Automático, entre las que están el denominado Control Toolbox y el simulink.
Al mismo tiempo, la práctica servirá para que el alumno realice algunos ensayos relacionados
con funciones de transferencia y respuestas temporales.

Este enunciado incluye cierta cantidad de trabajo previo, que el alumno deberá llevar a cabo
con anterioridad a la sesión de la práctica en el Centro de Cálculo. Dicho estudio previo com-
prende la lectura detallada de las secciones 1 y 2, para la familiarización con los comandos de
matlab y herramientas de simulink que se usarán, ası́ como la realización de los subapartados
denominados Trabajo Previo que pueden encontrarse en las demás secciones.

1 Introducción al Control Toolbox de matlab

En esta sección, se asumirá que el alumno está familiarizado con el uso del matlab en general,
para centrar la descripción en el juego de herramientas de que dispone matlab para tareas
relacionadas especı́ficamente con el Control Automático. Dichas herramientas están incluidas
en un complemento de matlab, denominado Control Toolbox.

1.1 Definición de funciones de transferencia

La primera tarea que se puede plantear es la de definir una función de transferencia en matlab.
Para ello, en primer lugar, ha de recordarse cómo se pueden definir polinomios. Imaginemos que
queremos definir la función de transferencia:
2.5 s + 1
G(s) =
s2+ 3s + 2
Para ello, podemos definir los polinomios numerador y denominador, almacenándolos 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 definir un polinomio es crear un vector cuyos elementos son
los coeficientes 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ándoles como función de transferencia este par de polinomios.

1
Hay que tener ciertas precauciones, cuando alguno de los coeficientes sea nulo. Por ejemplo,
supongamos que la función de transferencia fuera la siguiente:
3
G(s) =
s2
+ 2s
Una forma incorrecta de introducir el polinomio denominador serı́a:

N = 3;
D = [1,2];

Serı́a incorrecta puesto que con esto, en realidad, se estarı́a definiendo:


3
G(s) =
s+2
En su lugar, la forma correcta serı́a:

N = 3;
D = [1,2,0];

En lugar de trabajar con un par de polinomios que definen el numerador y denominador de la


función de transferencia, pueden unificarse estos dos elementos en un objeto función de trans-
ferencia, mediante el comando tf():

N = [2.5,1];
D = [1,3,2];
G = tf (N,D);

Si preguntamos a continuación por el valor de la variable G, comprobaremos que es un objeto


más complejo que un simple par de polinomios:

>> G
Transfer function:
2.5 s + 1
-------------
s^2 + 3 s + 2

Si queremos saber si la función de transferencia corresponde con un sistema estable, bastarı́a


con calcular las raı́ces del denominador:

roots (D)

Esta función devuelve, en general, un vector conteniendo los polos de la función de transferencia.
De forma análoga, los ceros de la función de transferencia vendrán dados por las raı́ces del
numerador.

Si se está trabajando con objetos funciones de transferencia, existe una forma directa de obtener
sus polos y ceros, usando los siguientes comandos:

2
polos = pole (G);
ceros = tzero (G);

1.2 Simulación de respuesta temporal

La función step() simula la respuesta ante escalón unitario de una función de transferencia. Por
defecto, la escala temporal se elige automáticamente y se asume que el escalón se produce en el
instante cero.

step (N, D);

La llamada a esta función lleva asociada la representación en una ventana gráfica de la salida
resultante.

Alternativamente, podemos pasar como parámetro un objeto función de transferencia:

step (G); grid;

En este caso, al igual que podrı́a haberse hecho en el caso anterior, se ha añadido el comando
grid, que permite visualizar una rejilla sobre el fondo de la gráfica.

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ón, que transforma lo
que inicialmente serı́a un vector fila en un vector columna, es la comilla simple que aparece a la
derecha del vector definido 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á nuestro
vector de instantes de tiempo a emplear en la simulación. Para ello, en la llamada a la función
step() se le pasa este vector tiempo como último parámetro.

Si se desea representar dos respuestas escalón en la misma gráfica, con fines 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ón step() puede devolver un vector conteniendo los valores que resulten
para la señal de salida en cada instante de la simulación. En este caso, dicha función no realiza

3
representación gráfica alguna. El comando plot(), por su parte, permite realizar representaciones
gráficas de dos dimensiones. En este caso particular, se están representando dos señales, las
contenidas en los vectores y1 e y2, frente a la misma escala temporal.

Existen otras funciones para simular la respuesta ante señales de entrada. Por ejemplo, la función
impulse(), simula la respuesta ante impulso unitario a la entrada. La función lsim() permite
la simulación de la respuesta ante cualquier señal de entrada que deseemos. Por ejemplo, si
queremos simular la respuesta ante una rampa de pendiente 3 a la entrada, podrı́amos escribir:

t = [0:0.001:10]’;
rampa = 3*t;
lsim (G, rampa, t);

Tanto la función impulse() como la función lsim() tienen caracterı́sticas similares a la función
step(), en cuanto a que realizan la representación de forma automática, a menos que en la
llamada se almacene el valor devuelto por la función en alguna variable.

1.3 Álgebra de bloques

Existen funciones para realizar operaciones de álgebra de bloques con funciones de transferencia.
A continuación, se mostrarán algunos ejemplos.

La operación más elemental consiste en obtener una única función de transferencia equivalente
a otras dos que estén dispuestas en serie. Imaginemos definidos los polinomios numerador y
denominador de dos funciones de transferencia, N 1, D1, N 2 y D2. Dado que el resultado de la
operación mencionada serı́a 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ón que nos permite realizar producto de polinomios es conv():

N1 = [2.5,1];
D1 = [1,3,2];
N2 = 3;
D2 = [1,2,1];

N = conv (N1, N2);


D = conv (D1, D2);

Tras estas operaciones, la función de transferencia dada por el par de polinomios N , D, serı́a la
resultante.

Otra forma de realizar la misma operación, en un sólo paso, es emplear la función series(),
que, a diferencia de la función conv(), sı́ es especı́fica del Control Toolbox y, por tanto, puede
interpretar pares de polinomios como una función de transferencia:

[N,D] = series (N1,D1, N2,D2);

4
Si se recurre a los objetos función de transferencia, todo resulta mucho más intuitivo:

G1 = tf (N1,D1);
G2 = tf (N2,D2);
G = G1*G2;

Como se ve, directamente se puede realizar el producto de dos objetos función de transferencia.
Esto no impide que la función series() pueda seguir siendo usada con este tipo de objetos:

G = series (G1, G2);

De forma análoga a la puesta en serie de dos funciones de transferencia, se puede obtener el


equivalente de una configuración en paralelo. A continuación, se muestran las tres formas de
obtener el mismo resultado:

[N,D] = parallel (N1,D1, N2,D2);


G = parallel (G1, G2);
G = G1+G2;

Si, dado un esquema realimentado, queremos obtener la función de transferencia equivalente al


conjunto, podemos usar la función cloop():

[Nbc,Dbc] = cloop (N,D,-1);

donde el último parámetro indica que se trata de realimentación negativa (1 serı́a realimentación
positiva). Si hacemos uso de objetos función de transferencia, tenemos que recurrir a la función
feedback():

Gbc = feedback (G,1,-1);

El segundo parámetro de esta función indica la función de transferencia que se asume en la


cadena de realimentación (en este caso, se trata de realimentación unitaria), mientras que el
último parámetro indica que se trata de realimentación negativa.

5
2 Introducción al simulink

simulink es un complemento de matlab que permite realizar simulación dinámica de sistemas


por medio de una interfaz gráfica muy cómoda de usar. En esta sección se darán unos breves
comentarios introductorios al simulink. En todo caso, es recomendable acudir a un manual
de referencia más completo, como el que puede encontrarse en el entorno de Enseñanza Virtual
(apartado Contenido del Curso / Tutoriales / Tutorial de Simulink).

Para arrancar el simulink, basta teclear simulink en la ventana de comandos de matlab. Con
ello, se abrirá la llamada biblioteca de bloques de simulink, de la que podremos tomar todos los
elementos que necesitemos para nuestras simulaciones. La figura 1 muestra el aspecto de esta
ventana.

Figure 1: Ventana mostrando la biblioteca de bloques de simulink


.

Para comenzar a usar simulink es preciso abrir un nuevo diagrama. Para ello, se puede pulsar
sobre el icono de la hoja en blanco que aparece en la ventana de herramientas mostrada, o
bien a través del menú File→New→Model. Con ello, aparecerá una nueva ventana en la que
se confeccionará el modelo del sistema dinámico que se quiere simular. Esta ventana recibe el
nombre de ventana del modelo o ventana del diagrama del modelo.

Para construir un diagrama se arrastrarán elementos desde la ventana de herramientas hasta


la ventana del modelo. Los elementos se unirán luego con flechas, dando lugar a un diagrama
de bloques. Cada flecha representa una señal diferente de la cual podremos obtener, al realizar
una simulación, su valor a lo largo del tiempo. El aspecto de los bloques en la pantalla puede
diferir de unas versiones a otras de matlab, por lo que deberá poner atención a los nombres
descriptivos que aparecen debajo de cada bloque.

6
2.1 Integradores

Los integradores nos permiten modelar sistemas dinámicos lineales y no lineales descritos median-
te un modelo en ecuaciones diferenciales. El hecho de que los sistemas sean representados me-
diante ecuaciones diferenciales implica que será necesario integrar dichas ecuaciones para poder
simular cuál será la evolución temporal del sistema. simulink ofrece una herramienta de in-
tegración numérica que incluye varios métodos de integración. Esto permite integrar señales
temporales, independientemente de que el sistema sea lineal o no.

Para integrar directamente señales temporales, simulink incluye un bloque llamado “integrador”
(Integrator), el cual puede obtenerse de la biblioteca de elementos de tiempo continuo (Contin-
uous). Este

componente proporciona una salida y igual a la integración temporal de su entrada
u (y(t) = 0t u(τ )dτ ).

En la figura 2, se propone un pequeño modelo para ilustrar cómo funciona el bloque integrador.
Se introduce a su entrada un escalón y se observa que la salida del integrador será una rampa.

1
s
Mux Scope
Step
Integrator

Figure 2: Diagrama de bloques simulando el comportamiento de un integrador ante entrada en


escalón.

La señal de entrada del integrador proviene en este ejemplo de un bloque escalón (Step) sacado
de la biblioteca de fuentes (Sources). La salida del bloque integrador se reúne con la entrada en
el bloque multiplexor (Mux, del apartado Signal Routing de la biblioteca), para que ambas sean
mostradas en la gráfica dibujada con el bloque visor (Scope, del apartado Sinks). En la figura
3, puede verse el resultado de la simulación visto a través del visor.

Figure 3: Respuesta resultante de la simulación del diagrama previo.

7
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 figura 4.

s+2
s2 +s+3 Scope
Step Mux
Transfer Fcn

Figure 4: Ilustración del uso del bloque función de transferencia.

En este caso, la función de transferencia elegida ha sido:


s+2
G(s) =
s2 + s + 3
Para lograr que dicho bloque se corresponda con la función de transferencia dada, basta con mo-
dificar los parámetros del mismo, pulsando dos veces sobre el bloque. En el cuadro de diálogo que
aparece, se introducen los polinomios numerador y denominador, siguiendo la sintaxis habitual
de matlab, como se muestra en la figura 5.

Figure 5: Parámetros del bloque función de transferencia.

El resultado de la simulación del diagrama anterior puede visualizarse a través del visor (figura
6).

2.3 Realimentación y ganancias

En la figura 7, se muestra un nuevo diagrama de bloques, en el que aparecen diversos elementos


nuevos, tales como un restador y una ganancia. Con ello, conseguimos implementar un diagrama
realimentado, a partir de la función de transferencia dada con anterioridad.

8
Figure 6: Respuesta resultante de la simulación del diagrama previo.

Sum
s+2
K
s2 +s+3 Scope
Step Gain Transfer Function

Figure 7: Función de transferencia con ganancia en serie y realimentada.

Un sumador o restador se implementa mediante un bloque Add ó 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. Fı́jese que el valor introducido como ganancia no es una constante, sino una
variable de nombre K.

Para que la simulación del modelo pueda llevarse a cabo, será necesario que previamente se haya
definido dicha variable desde matlab. Esto ilustra las posibilidades de interacción entre matlab
y simulink: variables definidas en el espacio de trabajo de matlab pueden ser usadas desde
simulink, ası́ como variables que tomen valores como resultado de la simulación de un diagrama
de simulink estarán disponibles para su uso desde la ventana de comandos de matlab, como
se verá a continuación.

2.4 Fuentes y sumideros

En la biblioteca de bloques de simulink existe un apartado que ya se ha citado anteriormente, se


trata de las “fuentes” (Sources). Los elementos de este apartado son, esencialmente, generadores
de señales; entre ellos tenemos señal de valor constante (Constant), señal escalón (Step), señal
rampa (Ramp), señales senoidales (Sine Wave) y muchas otras. También existe un elemento,
denominado Clock, que proporciona un vector con los instantes de simulación.

En el otro extremo, tenemos elementos que son “sumideros” de señales, es decir, que sólo reciben
señales, sin producir ninguna salida. Estos elementos se encuentran en el apartado Sinks. Entre
estos elementos, encontramos los visores, como el Scope ya empleado. Otro elemento interesante

9
de este grupo es el denominado To Workspace. Se trata de un bloque que almacena, en una
variable cuyo nombre debemos especificar, un vector conteniendo los valores que va tomando la
señal que se recibe como entrada del bloque, para cada instante de simulación.

La figura 8 muestra un nuevo diagrama de bloques, similar al de la figura 7, en el que se ha


reemplazado el visor por un bloque To Workspace, al que se le ha asociado el nombre de variable
y. Asimismo, se ha eliminado el multiplexor y la señal de entrada, producida por el escalón,
se almacena en otra variable, denominada r. Se ha incluido, además, un elemento reloj, cuya
salida se almacena en otra variable, a la que se la denomina tSim.

tSim
Clock To Workspace2

r
To Workspace1
Sum
s+2
K y
s2 +s+3
Step To Workspace
Gain Transfer Function

Figure 8: Diagrama de bloques para ilustrar el uso de los bloques Clock y To Workspace.

En principio, se recomienda configurar los parámetros de los elementos To Workspace tal y como
se muestra en la figura 9, en particular con el formato de almacenamiento de tipo Array. La
justificación está en la simplicidad que eso aporta, a posteriori, para la manipulación de estas
variables desde matlab.

Figure 9: Cuadro de diálogo para establecer los parámetros de un bloque To Workspace.

Una vez realizada la simulación, dispondremos de las variables tSim, r e y, con las que podremos
realizar una representación gráfica a voluntad, usando el comando plot() ya conocido:

figure(1); plot (tSim,r, tSim,y); grid;

10
3 Trabajo a desarrollar en relación con el Control Toolbox de
matlab

En esta parte de la práctica, se parte directamente de una función de transferencia dada por la
expresión siguiente:

K (s + c)
G1 (s) = (1)
(s + p) (s2 + 2 δ wn s + wn2 )

Se trata de una función de transferencia que será estable, con un polo real, que resultará ser
el elemento más dominante respecto a los demás, un cero que será de fase mı́nima1 y un par
de polos complejos conjugados, que serán menos dominantes que los demás elementos (si bien,
ninguno de los factores citados será totalmente despreciable frente a los demás).

Cada alumno elegirá los valores numéricos de los parámetros, a partir de las siguientes relaciones:

135 + 15 D8
K =
90
45 + 7 D7
p =
90
207 + 12 D6
c =
90
45 + 2 D5
δ =
90

wn = 6 p

Siendo D8 el dı́gito menos significativo del DNI, D7 el anterior y ası́ sucesivamente. Por ejemplo,
para el DNI número: 53568447, se tendrı́a D8 = 7, D7 = 4, D6 = 4, D5 = 8, con lo que
resultarı́an los siguientes valores de los parámetros:

K = 2.66667 p = 0.81111, c = 2.83333, δ = 0.67778, wn = 4.86667

3.1 Aproximación por modelo de primer orden

3.1.1 Trabajo previo

En primer lugar, se desea obtener una función de transferencia de orden reducido, que aproxime
el comportamiento del sistema de partida.
1
Un cero de fase mı́nima es aquél que se encuentra en el semiplano izquierdo del plano complejo; dicho de otra
forma, aquél cuya parte real es negativa.

11
Si se simula la respuesta ante escalón del sistema dado, puede comprobarse que se puede identi-
ficar fácilmente una única constante de tiempo dominante y aproximar al sistema por un modelo
de primer orden, de la forma:


G1 (s) ≈ (2)
1 + τ̃ s

A partir de la representación gráfica de la respuesta ante escalón del sistema, pueden estimarse
los dos parámetros requeridos en (2). Como es sabido, para un sistema que sea verdaderamente
de primer orden, la identificación de la constante de tiempo puede realizarse con exactitud de
varias formas: una de ellas se basa en que: y(τ̃ ) = y(0) + 0.63 (y(∞) − y(0)). Otra forma se
basa en que el 95% del valor final se alcanza una vez transcurrido un tiempo equivalente a tres
veces la constante de tiempo de dicho sistema: y(3 τ̃ ) = y(0) + 0.95 (y(∞) − y(0)). De acuerdo
con lo anterior, se definen: t63% = τ̃ y te95% = 3 τ̃ .

Trabajo en el Centro de Cálculo

• Simule la respuesta ante escalón del sistema original (1). A la vista de esa respuesta,
identifique empı́ricamente los parámetros de la función de transferencia aproximada (2):
ganancia estática K̃ [p1], y constante de tiempo τ̃ [p2](estimada a partir de la regla
t63% = τ̃ ).

• Compare la respuesta ante escalón unitario del sistema original y del reducido. Para
realizar esta comparación de forma gráfica, puede recurrirse a los comandos de matlab
vistos anteriormente. Mida el valor de la respuesta del sistema original (1), transcurrido
un intervalo de tiempo en segundos igual al doble de la constante de tiempo después de
producirse el escalón de entrada, y(2 τ̃ ) [p3], y análogamente para el sistema aproximado
(2) en ese mismo instante, yaprox (2 τ̃ ) [p4].
Nota: Si está utilizando el comando step() sugerido anteriormente, tenga en cuenta que
puede conseguirse un paso de simulación tan pequeño como se quiera, proporcionando a
dicha función un vector tiempo con el paso o incremento correspondiente.

• Habida cuenta de que, dependiendo del modelo concreto, puede obtenerse una mejor
aproximación estimando la constante de tiempo mediante la regla te95% = 3 τ̃ , se pide
realizar esta estimación alternativa de la constante de tiempo, a la que se llamará τ̃2 [p5].

• Con objeto de poder hacer la comparación con el nuevo modelo aproximado resultante del
punto anterior, indique el valor de la respuesta del sistema original (1), transcurrido un
intervalo igual a la nueva constante de tiempo, después de producirse el escalón de entrada,
y(τ̃2 ) [p6]. Análogamente para el nuevo sistema aproximado yaprox2 (τ̃2 ) [p7].

3.2 Aproximación por modelo de segundo orden

En este apartado, se trabajará con una función de transferencia similar a la dada en (1), con
la diferencia de que los polos complejos conjugados se harán más significativos. Para ello, se
modifica el valor original de los parámetros δ y wn :

12
K (s + c)
G2 (s) = ; δ2 = δ − 0.2 ; wn2 = wn /6 = p (3)
(s + p) (s2 + 2 δ2 wn2 s + wn2 2 )

3.2.1 Trabajo previo

Se desea obtener una función de transferencia de segundo orden, que aproxime el comportamiento
del sistema de partida dado.

Simulando la respuesta ante escalón del sistema dado, puede comprobarse que, efectivamente,
dicha respuesta se puede aproximar mediante una función de transferencia de segundo orden
subamortiguada, de la forma:

K̃ w̃n2
G2 (s) ≈ (4)
s2 + 2 δ̃ w̃n s + w̃n2

A partir de la representación gráfica de la respuesta ante escalón de un sistema de este tipo,


pueden estimarse los parámetros requeridos en (4). Para el trabajo a realizar a continuación,
se sugiere usar las medidas de ganancia estática, sobreoscilación (que, expresada en tanto por
˜ y tiempo de pico (t̃p ), para deducir los tres parámetros: K̃, δ̃ y w̃n .
uno, será referida como SO)
La relación entre las citadas medidas y los parámetros de la función de transferencia, como es
sabido, son las siguientes:

√−δ̃ π
˜ = e
SO 1−δ̃ 2
π
t̃p = √ (5)
w̃n 1 − δ̃ 2

3.2.2 Trabajo en el Centro de Cálculo

• Simule la respuesta ante escalón del sistema original (3). A la vista de esa respuesta,
identifique empı́ricamente los parámetros de la función de transferencia aproximada (4):
ganancia estática K̃ [p8], coeficiente de amortiguamiento δ̃ [p9], y frecuencia natural no
amortiguada w̃n [p10].
Nota: Tal y como se ha dicho anteriormente, debe emplearse la expresión (5) para la
estimación de w̃n .

• Compare la respuesta ante escalón 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, después de producirse el escalón de entrada, y(t̃s ) [p11]. Análogamente para el
sistema aproximado (4) en ese mismo instante, yaprox (t̃s ) [p12].
Nota: Emplee la siguiente expresión para obtener el valor del tiempo de subida en el que
tomar las medidas:
π − arccos(δ̃)
t̃s = √
w̃n 1 − δ̃ 2

13
4 Trabajo a desarrollar en relación con simulink

En esta sección, el alumno deberá emplear simulink para simular el comportamiento de un


sistema lineal que modela a un motor de corriente continua (caso simplificado). Tomando como
entrada la tensión aplicada sobre el motor, u [V], y como salida la orientación del eje de la
carga, θ [rad] (o, en su caso, la velocidad de giro del mismo, θ̇ [rad/s]), la ecuación diferencial
del modelo es la siguiente:
Km u = I θ̈ + b θ̇ (6)

Los parámetros del modelo se obtienen a partir del DNI de cada alumno, según las siguientes
expresiones:
18 + 8 D8
Km = [N · m/V ]
90
225 + 15 D7 [ ]
I = Kg · m2
90
45 + 15 D6 [ ]
b = Kg · m2 /s
9

Donde D6 , D7 y D8 son las tres últimas cifras del DNI. Por ejemplo, para el DNI número:
53568447, se tendrı́a D8 = 7, D7 = 4, D6 = 4, con lo que resultarı́an los siguientes valores
de los parámetros: Km = 0.82222, I = 3.16667 y b = 11.66667 2 .

4.1 Modelado del motor

4.1.1 Trabajo previo

El diagrama de bloques de la ecuación diferencial (6) puede implementarse fácilmente, despe-


jando la derivada segunda de la salida, θ̈. El resultado puede apreciarse en la figura 10.

u acelAng velAng ang


1 1
Km 1/I
s s
Scope

Figure 10: Diagrama de bloques que implementa el modelo del motor.

Dado que este sistema es lineal, suponiendo condiciones iniciales nulas, puede obtenerse su
función de transferencia de forma inmediata, resultando Gv (s) para la salida en velocidad y
2
A diferencia de lo que ocurre con los demás parámetros, el denominador de la expresión que define el parámetro
b es 9, en lugar de 90.

14
Gp (s) para la salida en posición:

K 1 K
Gv (s) = ; Gp (s) = Gv (s) = (7)
1+τs s s (1 + τ s)

Pueden calcularse de forma directa los parámetros K y τ de las expresiones anteriores, a partir
de los parámetros del modelo (6). Una vez hecho esto, una forma equivalente de modelar el
motor, a través de su función de transferencia, serı́a mediante un único bloque de simulink,
como se muestra en la figura 11.

u K velAng 1 ang

tau .s+1 s
Scope

Figure 11: Modelado del motor mediante función de transferencia.

Desde el punto de vista práctico, la única diferencia entre el modelo representado en la figura
10 y el mostrado en la figura 11 es que, en el primero de ellos, se puede simular la evolución
del sistema ante condiciones iniciales no nulas para velocidad y que existen señales intermedias
directamente accesibles, como la aceleración angular, θ̈, o el par de fricción, b θ̇.

4.1.2 Trabajo en el Centro de Cálculo

• Implemente el diagrama de bloques mostrado en la figura 10, pero haciendo que entre
también en el visor la velocidad angular 3 . Configure una condición inicial no nula, θ(t =
0) = 0.2 [rad], para la salida en posición, a través de las propiedades del integrador
correspondiente. Mantenga, sin embargo, condición inicial nula para la velocidad angular,
θ̇(t = 0) = 0 [rad/s].
Nota: De cara al siguiente punto, tenga precaución para no pasar por alto el instante en
el que se produce el escalón, dado que, por defecto, no es cero.

• Simule la respuesta del sistema ante una entrada de tipo escalón: u(t) = 4V . Tome nota
de los valores θ(t) [p13] y θ̇(t) [p14], 0.3 segundos después de producirse dicho escalón.
Nota: En algunos casos, si se observa que las curvas de respuesta tienen pocos puntos,
significa que la simulación puede requerir un paso de integración máximo más reducido.
Esto puede dar lugar a medidas imprecisas, a partir de las representaciones gráficas de las
señales de interés. El parámetro que controla este paso de integración puede establecerse
en (Menu→Simulation→Configuration Parameters→Max. step size) del método numérico
de integración de simulink (ver figura 12). Por defecto, el valor de este parámetro suele
ser auto, pero puede modificarse este valor a voluntad, para forzar a que el número de
puntos en los que se lleva a cabo la simulación se incremente sustancialmente.
Si, como consecuencia de lo anterior, el número de puntos a registrar durante una simu-
lación aumenta considerablemente, y la simulación dura el tiempo suficiente, puede ser
necesario tener en cuenta un detalle adicional, en relación con los elementos Scope, en caso
3
A través de las propiedades del multiplexor, puede configurar libremente el número de entradas del mismo.

15
Figure 12: Opción para cambiar el paso máximo de integración de simulink.

de que éstos se estén usando. Estos visores, poseen un buffer para el registro de las variables
que se reciben como entrada, el cual puede verse desbordado. Esto llevarı́a a la pérdida del
registro de la primera parte del experimento. Por defecto, los bloques Scope sólo mantienen
el registro de los últimos 5000 puntos de una simulación. Este problema puede solventarse
de forma inmediata, accediendo a las propiedades del Scope y desactivando, en la pestaña
Data History, la limitación del buffer, tal y como se muestra en la figura 13.

Figure 13: Opción para desactivar la limitación del buffer del Scope.

• Proporcione los valores de los parámetros de la función de transferencia Gv (s): K [p15],


τ [p16]. Estos parámetros pueden obtenerse, bien de forma analı́tica, bien de forma
experimental, como se desee.

16
4.2 Motor en realimentación

4.2.1 Trabajo previo

A partir de la función de transferencia del motor, resulta muy cómodo establecer una configu-
ración en realimentación, añadiendo una ganancia ajustable en la cadena directa, como se mues-
tra en la figura 14. Como puede apreciarse, en este caso, se ha usado directamente la función
de transferencia de salida en posición, siendo ésta la señal que se realimenta.

r e u K ang
Kc
tau .s2 +s Scope

Figure 14: Sistema motor realimentado con ganancia ajustable.

Debe tenerse en cuenta que la señal de tipo escalón es, en este caso, de naturaleza distinta a la
que tenı́a en los diagramas en bucle abierto, figuras 10 y 11. En los casos anteriores, al estar el
sistema en bucle abierto, el escalón se usaba para proporcionar directamente la señal de entrada
al sistema o actuación, u(t). Sin embargo, en el esquema realimentado, la señal proporcionada
por el escalón será una señal de referencia, r(t), que debe ser comparada con la salida y, por
tanto, debe ser una señal de la misma naturaleza que ésta; es decir, se trata de una referencia
para el ángulo de salida del motor. Por otro lado, como puede comprobarse, se ha añadido una
ganancia ajustable que, a partir del error observado en el ángulo de salida respecto a la referencia
fijada, e(t), proporciona una actuación directamente proporcional a dicho error: u(t) = Kc e(t).

Si se realiza la reducción del diagrama de bloques, para un valor genérico de ganancia Kc , puede
comprobarse que la función de transferencia equivalente al conjunto es una de segundo orden, que
puede hacerse corresponder con la forma tı́pica de sistema de segundo orden subamortiguado:
Kbc wn2 bc
Gbc = (8)
s2 + 2 δbc wnbc s + wn2 bc

4.2.2 Trabajo en el Centro de Cálculo

• Determine analı́ticamente el valor de la ganancia Kc [p17], para que el sistema realimen-


tado resulte estable y con un coeficiente de amortiguamiento δbc = 0.7, de acuerdo con la
expresión (8).
• Implemente el diagrama de bloques mostrado en la figura 14 y verifique el punto ante-
rior (basta comprobar que la sobreoscilación del sistema realimentado resultante debe ser
ligeramente inferior al 5%).
• Para el valor de ganancia Kc fijado, determine analı́ticamente el tiempo de pico que tendrı́a
la respuesta ante referencia en escalón, tpteorico [p18]. Determine este mismo valor ex-
perimentalmente, tpexperim [p19], a partir de una simulación con el modelo de la figura
14.

17
5 Instrucciones para entregar las respuestas en Goodle

Las respuestas del módulo entregarán en Goodle. La página 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 guı́a
que puede encontrarse en el entorno de Enseñanza Virtual (apartado Contenido del Curso /
Tutoriales / Guı́a 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ón de trabajo en el centro de cálculo tiene


asignado un nombre. En el enunciado de la práctica se indica con una etiqueta entre
corchetes cada respuesta que hay que entregar.
Ejemplo: A la primera respuesta (valor de la ganancia estática identificada) le corresponde
el nombre p1 y a la última respuesta le corresponde el nombre p19.

• Para cada respuesta hay que escribir una lı́nea con el siguiente formato:

nombre = valor;

Ejemplo: Para responder que el valor de la constante de tiempo de la función de transfe-


rencia (2) es 0.3 segundos, se escribirı́a la siguiente lı́nea:

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ón de transferencia), hay que utilizar el formato
explicado al principio para introducir polinomios en matlab en la Sección 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
habrı́a que escribir las siguientes lı́neas:

p14 = 7;
p15 = [3, 0, 0.45];

• Goodle rechaza los envı́os con errores de sintaxis.

• Es recomendable confeccionar la respuesta en un fichero 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ún valor, preferentemente un valor nulo:

p5 = 0;
p6 = 0;

Ejemplo de formulario relleno

(Los números siguientes son aleatorios)

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