Práctica 2 - ingeniería de sistemas y automática

Anuncio
INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH TEORÍA DE SISTEMAS PRÁCTICA 2: INTRODUCCIÓN A SIMULINK
1. CARACTERÍSTICAS BÁSICAS DE SIMULINK
•
•
Funcionalidad básica: simulación de sistemas dinámicos.
Características principales:
- Se trata de un entorno gráfico.
- El sistema se representa como una interconexión de bloques elementales.
- Cada bloque lleva asociado un modelo matemático que representa su relación entrada/salida.
Un ejemplo de representación de un sistema mediante Simulink sería el siguiente:
El esquema representa un sistema de calefacción para una vivienda. Se supone conocida la variación de la
temperatura en el exterior de la casa y en función de ello se puede observar en qué instantes se conecta y
se desconecta la calefacción, cuáles son las variaciones de la temperatura en el interior de la casa y cuál es
el coste de calefacción. Este ejemplo proviene de una demo de Simulink disponible en la opción del menú
Help -> Demos -> Simulink -> Demos.
2. CÓMO ARRANCAR SIMULINK
Existen diferentes modos de lanzar el programa Simulink, la más sencilla teclear desde la ventana de
comandos de Matlab:
>> simulink
También es posible acceder al programa desde el botón Simulink de la barra de botones de Matlab.
Teoría de Sistemas (Curso Adaptación) Práctica 2 1 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 3. ASPECTO DEL ENTORNO SIMULINK
Al lanzar Simulink, se obtiene una ventana como la que se muestra en la figura, que corresponde al
Navegador de librerías o Library browser de Simulink:
En esta ventana se muestran todas las librerías disponibles; cada una de ellas contiene bloques
elementales con los que se pueden construir sistemas. En función de la instalación concreta de Simulink,
el número de librerías puede ser menor o mayor.
Teoría de Sistemas (Curso Adaptación) Práctica 2 2 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 4. CÓMO ENCONTRAR AYUDA EN SIMULINK
Simulink es un toolbox de Matlab. Por tanto, la ayuda se estructura del mismo modo:
• Ayuda en línea
Se accede a través de la ventana de comandos de Matlab tecleando help nombrefunción. La ayuda se
obtiene en modo texto. En este caso no es una ayuda muy utilizada. Como ejemplo, se visualizará la
ayuda que lista los comandos de Simulink. Para ello teclearemos:
>> help simulink
•
Navegador de ayuda
Se accede desde el menú Help, seleccionando la opción Simulink help. Todas las ayudas relativas a
Simulink se encuentran dentro de un libro denominado Simulink.
• Ejemplos
SImulink también proporciona ejemplos y demostraciones de sus principales funcionalidades. Se accede a
ellos a través del menú Help (de Matlab) seleccionando la opción Demos.
5. TIPOS DE BLOQUES EN SIMULINK
En el sistema elegido como ejemplo puede observarse como existen multitud de bloques distintos; todos
los bloques de Simulink se estructuran en diferentes categorías. La ventana que aparece al arrancar
Simulink permite comprobar cuáles son las categorías de bloques existentes. Basta con hacer clic sobre el
signo + que acompaña al elemento Simulink de la lista, para profundizar en las opciones existentes. En la
figura siguiente se muestra, en la ventana de la izquierda, el aspecto inicial del navegador; y en la ventana
de la derecha el resultado de pulsar sobre el signo + de la categoría ‘Continuous’. Los elementos que
aparecen a la derecha son los bloques con los que se puede construir un modelo.
A continuación se indican los principales bloques que se usarán en esta práctica y las siguientes y la
categoría a que pertenecen:
Sources: Entradas o fuentes de señales
• Step (escalón)
• Ramp (rampa)
• Sine wave (senoidal)
• Pulse generador (tren de pulsos)
• From workspace (lectura de datos desde Matlab)
Sinks: Salidas o dispositivos de visualización/almacenamiento de variables del sistema
• Scope (osciloscopio)
• Display (indicador numérico)
• To workspace (envío de datos a Matlab)
Continuous: Representan sistemas continuos por su relación entrada-salida
• Derivative (bloque derivador: la salida es la derivada de la entrada)
• Integrator (bloque integrador: la salida es la integral de la entrada)
• Transfer Fcn (función de transferencia en s expresada como cociente de polinomios)
• Zero Pole (función de transferencia en s expresada en forma factorizada)
Discrete: Representan sistemas discretos por su relación entrada-salida
• Discrete Transfer Fcn (función de transferencia en z expresada como cociente de polinomios)
• Discrete Filter (función de transferencia en z-1 expresada como cociente de polinomios)
• Discrete Zero Pole (función de transferencia en z expresada en forma factorizada)
• Unit delay (retraso de un periodo)
Teoría de Sistemas (Curso Adaptación) Práctica 2 3 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH •
•
Zero Order Hold (retenedor de orden cero)
First Order Hold (retenedor de orden uno)
Math operators: Operaciones matemáticas sobre señales
• Sum (sumador de señales)
• Gain (ganancia o multiplicación de una señal por una constante)
Signal Routing: Permite realizar conexiones especiales entre señales
• Mux: (multiplexor: agrupa distintas señales en un vector o bus)
El procedimiento de trabajo para la creación de un modelo será seleccionar los bloques adecuados de
entre los presentes en estas categorías, colocarlos sobre la ventana de diseño y establecer las conexiones
correspondientes entre ellos. A continuación crearemos un modelo de ejemplo.
Teoría de Sistemas (Curso Adaptación) Práctica 2 4 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 6. CREACIÓN DE UN MODELO SENCILLO
Como ejemplo, crearemos un modelo que nos permita generar una señal cualquiera (una función del
tiempo) y representar sus valores. Comenzaremos representando la función sen(t).
Primer paso: creación del modelo.
Desde la ventana ‘Simulink Library Browser’, haremos clic sobre el botón ‘Create a new model’ (página
en blanco). Automáticamente se abrirá una ventana en blanco que será la ventana de diseño para nuestro
modelo.
Segundo paso: introducción de bloques en el modelo.
Los elementos se introducen haciendo un arrastre con el ratón desde la ventana que contiene el listado de
todos los bloques hacia la ventana de diseño. En nuestro caso requeriremos los siguientes bloques:
• Dentro de la categoría ‘Sources’, el bloque ‘Sine Wave. Este elemento se corresponde con una
señal senoidal, que es la que deseamos generar.
• Dentro de la categoría ‘Sinks’, el bloque ‘Scope’. Será el que utilicemos para visualizar la señal.
Una vez introducidos estos modelos, la ventana de diseño debería presentar un aspecto como el siguiente:
Tercer paso: modificación de parámetros en los bloques
introducidos.
Todos los bloques de Simulink permiten una cierta
configuración. En particular, el bloque correspondiente a la
función seno se puede configurar en cuanto a amplitud,
frecuencia, fase, etc. Para ello se debe hacer doble clic
sobre el bloque, con lo que aparecerá una ventana de
introducción de parámetros.
Para nuestra primera simulación, introduciremos los
siguientes valores:
• Sine type: time based (buscamos generar una
señal continua y no discreta)
• Amplitude: 4 (la señal tomará valores de -4 a
+4)
• Bias: 0 (componente continua = 0, señal
centrada)
• Frequency: 3 rad/s (frecuencia de la señal
seno)
• Phase: 0 (desfase respecto del instante t = 0)
• Sample time: 0 (tiempo de muestreo, será
cero para señales continuas)
Teoría de Sistemas (Curso Adaptación) Práctica 2 5 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Cuarto paso: interconexión de elementos.
Una vez situados los elementos en la ventana de diseño, es necesario establecer conexiones entre ellos.
Para conectar 2 elementos debe hacerse un arrastre con el ratón desde la salida de uno de ellos hasta la
entrada del elemento correspondiente. Una vez establecidas las dos conexiones necesarias para nuestro
sistema, deberíamos obtener un resultado como el que se muestra:
Quinto paso: lanzamiento de la simulación y comprobación de resultados.
Lanzaremos la simulación con la opción ‘Start’ del menú ‘Simulation’ (también podemos pulsar sobre el
botón play resaltado en la imagen anterior) y comprobaremos los resultados obtenidos haciendo doble
clic sobre el bloque ‘Scope’. Se mostrará una ventana gráfica como la vista en el primer ejemplo sobre la
que podremos hacer zoom para ajustar nuestra curva. Deberá aparecer algo similar a lo que se muestra a
continuación:
•
Los instantes de comienzo y fin de simulación se pueden cambiar dentro del menú ‘Simulation’
eligiendo la opción ‘Simulation Parameters’. Probaremos a relanzar la simulación con distintos
tiempos de comienzo (Start time) y fin (Stop Time). El resto de los parámetros no se modificarán
por ahora.
Teoría de Sistemas (Curso Adaptación) Práctica 2 6 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH •
La ventana del Scope permite ajustar la zona a visualizar: los tres botones con forma de lupa, sirven
para hacer zoom sobre un área de la gráfica. El primero de ellos permite definir un rectángulo sobre
el gráfico y ampliar exactamente esa área. Los otros dos permiten definir una recta horizontal o
vertical respectivamente y hacen zoom sólo en una dimensión. Por último, el siguiente botón
‘Autoscale’, que presenta un dibujo de unos prismáticos, sirve para ajustar el tamaño del gráfico a
los datos disponibles.
Una vez creado el esquema, probaremos a representar otras señales que nos ofrece Simulink dentro de la
categoría ‘Sources’. Para ello borraremos del esquema el bloque ‘Sine Wave’ y en su lugar insertaremos
otro cualquiera. En particular, probaremos uno a uno con los siguientes bloques:
• Step (escalón)
• Ramp (rampa)
• Pulse Generator (tren de pulsos)
Se muestra como ejemplo el esquema con el bloque ‘Pulse Generator’. En cada uno de los casos
deberemos lanzar de nuevo la simulación y ver cuál es la señal que aparece en el osciloscopio.
Teoría de Sistemas (Curso Adaptación) Práctica 2 7 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Si hacemos doble click sobre el icono del generador de pulsos nos muestra la ventana de selección de
parámetros, donde podemos escoger:
• Amplitud: 1
• Period: 2s
• Pulse Width: 50%
• Pulse Delay: 0s
Teoría de Sistemas (Curso Adaptación) Práctica 2 8 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 7. CREACIÓN DE UN SEGUNDO MODELO
A continuación crearemos un modelo algo más complicado, en el que se realice alguna operación con las
señales. Vamos a crear un sistema que nos permita calcular la integral de una señal.
El bloque que realiza la integral de una señal se encuentra dentro de la categoría ‘Continuous’. Es el
bloque denominado ‘Integrator’. Con él, y con los bloques que teníamos del esquema anterior,
deberemos realizar un montaje como el que sigue:
Si ejecutamos la simulación y visualizamos los resultados veremos cómo se obtiene la integral de la señal
de entrada. Podemos probar a cambiar la señal de entrada para comprobar como:
• La integral de una señal escalón es una señal rampa
• La integral de una señal rampa es una señal parábola
• Etc.
A continuación haremos un cambio en el esquema que nos permita ver en el mismo gráfico las dos
señales: la original y su integral.
Para visualizar dos señales en el elemento ‘Scope’ es necesario recurrir al bloque multiplexor ‘Mux’ de la
categoría ‘Signals Routing’. Este bloque tiene por finalidad agrupar dos o más señales para formar un
vector. De este modo, se agruparán la señal de entrada y la señal de salida y el conjunto será lo que se
envíe al osciloscopio. Las conexiones se deben realizar tal y como se muestra en la figura siguiente:
En este esquema hay algo nuevo que aún no sabemos hacer: cómo crear una rama nueva sobre una
conexión ya existente (la segunda rama que llega al multiplexor no parte de la salida de un bloque, sino
de un punto intermedio de una conexión). La forma de crear este tipo de conexiones es pulsando el botón
’Ctrl’ al mismo tiempo que se empieza a arrastrar con el ratón.
Lanzando una nueva simulación, debemos comprobar que en la ventana del osciloscopio se muestran las
dos señales: la original y la integral, tal y como muestra la figura siguiente:
Teoría de Sistemas (Curso Adaptación) Práctica 2 9 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 8. SIMULACIÓN DE UN SISTEMA DESCRITO POR UNA ECUACIÓN DIFERENCIAL
En el ejemplo anterior se ha comprobado cómo es posible obtener la integral de una señal cualquiera. Esta
será la herramienta que utilizaremos para representar una ecuación diferencial.
En nuestro caso queremos representar un sistema físico consistente en una masa M unida a un muelle de
constante elástica K, y con un rozamiento viscoso B, tal y como se describe en la figura:
El objetivo es ver cuál es el efecto de la fuerza
aplicada f(t) al movimiento de la masa, descrito por
x(t)
La ecuación diferencial que rige el comportamiento de
este sistema es:
𝑓(𝑡) = 𝑀 ∙
𝑑 ! 𝑥(𝑡)
𝑑𝑥(𝑡)
+𝐵∙
+ 𝐾 ∙ 𝑥(𝑡)
!
𝑑𝑡
𝑑𝑡
Para representar este sistema en Simulink, veremos a continuación unos ejemplos de utilización de los
bloques integrador, sumador y multiplicador por constante (se encuentran dentro de las categorías
‘Continuous’ y ‘Math’). Dado que no son ejemplos completos, no se deben introducir en Simulink, se
incluyen sólo como ayuda para entender la forma de representar una ecuación cualquiera:
Teoría de Sistemas (Curso Adaptación) Práctica 2 10 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Bloque integrador: permite obtener a partir de d2x(t)/dt2 sus integrales dx(t)/dt y x(t):
Bloque multiplicador o ganancia: permite multiplicar un bloque por una constante. Para cambiar la
orientación del bloque basta la opción del menú Format –> Flip Bock.
Teoría de Sistemas (Curso Adaptación) Práctica 2 11 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Bloque sumador: permite sumar/restar señales (se muestra un ejemplo). Para cambiar el signo de la
operación debemos hacer doble click sobre el icono para mostrar la ventana de selección de parámetros
Teoría de Sistemas (Curso Adaptación) Práctica 2 12 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Una vez vistos estos ejemplos pasaremos a representar la ecuación diferencial propuesta. Para ello
despejaremos de la ecuación inicial el término diferencial de mayor orden d2x(t)/dt2, obteniendo:
Analizando el diagrama podemos comprobar cómo responde exactamente a la ecuación diferencial
planteada para el sistema. Otros sistemas de cualquier tipo (eléctricos, térmicos, etc.) podrían
representarse de la misma forma si se conoce su ecuación diferencial.
Se han elegido los siguientes valores para las constantes y para f(t):
• K: 10
• B: 1
• M:1
• f(t): función escalón
Nota: en el diagrama que se muestra alguno de los bloques se encuentran girados para que sea más fácil
realizar las conexiones. Esto se hace seleccionando el bloque y eligiendo la opción ‘Flip Block’ del menú
‘Format’.
En la consola de Matlab introduciremos los valores de las constantes, ya que Simulink accederá a las
variables definidas en Matlab para obtener el valor de los parámetros indicados en los bloques:
>> K=10; B=1; M=1;
Teoría de Sistemas (Curso Adaptación) Práctica 2 13 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Una vez comprendido el funcionamiento del esquema propuesto, lo introduciremos en Simulink y
observaremos cuál es el resultado obtenido en el elemento ‘Scope’. Lo que estamos viendo es el efecto
que una fuerza en forma de escalón (señal de entrada) produce sobre la posición del conjunto (señal de
salida). Al tratarse de un conjunto muelle-amortiguador, el movimiento de la masa debe presentar
oscilaciones que poco a poco deben ir desapareciendo. El aspecto que debe tener la salida debe ser el que
se muestra en la figura siguiente (será necesario hacer zoom para ver correctamente la señal).
Una vez que hemos creado el esquema que permite simular un determinado sistema físico, podemos
comprobar hasta qué punto es útil disponer de una simulación para comprobar el funcionamiento de
cualquier sistema. Realizaremos las siguientes pruebas:
•
•
•
Sobre el esquema anterior, aumentaremos el valor de la masa M cambiando la ganancia
(Gain) del elemento correspondiente. Realizaremos de nuevo la simulación y
comprobaremos el efecto de las variaciones de este parámetro.
Haremos lo mismo con la constante elástica K y con el rozamiento viscoso B.
Por último, probaremos la respuesta ante otros tipos de señal de entrada: senoidal, pulsos,
etc.
9. REPRESENTACIÓN DE UN SISTEMA MEDIANTE SU FUNCIÓN DE TRANSFERENCIA
Recordemos el sistema físico analizado en el apartado anterior. Se trata de una masa M unida a un muelle
de constante K, y con un rozamiento viscoso B, tal y como se describe en la figura:
La ecuación diferencial que rige el comportamiento de
este sistema es:
𝑓(𝑡) = 𝑀 ∙
Teoría de Sistemas (Curso Adaptación) Práctica 2 𝑑 ! 𝑥(𝑡)
𝑑𝑥(𝑡)
+𝐵∙
+ 𝐾 ∙ 𝑥(𝑡)
!
𝑑𝑡
𝑑𝑡
14 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Para obtener la representación del sistema mediante su función de transferencia, daremos los siguientes
pasos:
1. Planteamiento de la ecuación diferencial
En este caso, la ecuación diferencial es un dato del problema
2. Obtención de un punto de equilibrio
Dado que trabajaremos con variables incrementales (valor inicial = 0) será necesario determinar el punto
de equilibrio sobre el que se va a trabajar.
En este caso se buscará el punto de equilibrio para una fuerza inicial:
𝑓 0 = 10
En el punto de equilibrio las derivadas serán cero, por tanto:
𝑓 0 = 𝑀 ∙ 0 + 𝐵 ∙ 0 + 𝐾 ∙ 𝑥 0 ⇒ 𝑥 0 =
𝑓(0)
𝐾
3. Linealización de las ecuaciones y expresión en variables incrementales
En este caso todos los términos de la ecuación son lineales; por tanto sólo hay que expresar la ecuación en
variables incrementales:
Δ𝑓 𝑡 = 𝑀 ∙ Δ𝑥(𝑡) + 𝐵 ∙ Δ𝑥(𝑡) + 𝐾 ∙ Δ𝑥 𝑡 4. Paso de las ecuaciones al dominio de Laplace
Una vez las ecuaciones expresadas en términos incrementales, el paso al dominio de Laplace es
inmediato:
ℒ(𝑥 𝑡 = 𝑋(𝑠)
ℒ(𝑥 𝑡 ) = 𝑠 ∙ 𝑋(𝑠)
En el caso que nos ocupa, la ecuación queda:
F(s) = 𝑀 ∙ 𝑠 ! ∙ 𝑋(𝑠) + 𝐵 ∙ s ∙ 𝑋(𝑠) + 𝐾 ∙ X(s) 5. Función de transferencia
Una vez las ecuaciones en el dominio de Laplace, es posible obtener la función de transferencia G(s) o
función que permite obtener la salida X(s) a partir de la entrada F(s):
G s =
𝑋(𝑠)
1
=
!
𝐹(𝑠) 𝑀 ∙ 𝑠 + 𝐵 ∙ s + 𝐾
6. Diagrama de bloques
Cada función de transferencia se representa en un diagrama de bloques como el operador que
multiplicado por la entrada nos ofrece la salida:
F(s) Teoría de Sistemas (Curso Adaptación) Práctica 2 𝐺(𝑠) X(s) 𝑋(𝑠) = 𝐺(𝑠) ∙ 𝐹(𝑠) 15 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH En nuestro caso:
F(s) 1
!
𝑀∙𝑠 +𝐵∙𝑠+𝐾
X(s) 7. Simulación
Para representar una función de transferencia en Simulink se debe usar el bloque ‘Transfer Fcn’ de la
categoría ‘Continuous’. Este bloque permite introducir funciones de transferencia como cociente de dos
polinomios. Cada polinomio se especifica por sus coeficientes en orden decreciente de potencias.
En nuestro caso, si:
• M=1
• B = 0.5
• K =20
F(s) 1
𝑠 ! + 0.5 ∙ 𝑠 + 20
Tendremos como coeficientes del numerador:
Y como coeficientes del denominador:
X(s) [1]
[1 0.5 20]
Estos parámetros se introducirán como configuración del bloque ’Transfer Fcn’ tal y como muestra la
figura inferior. El parámetro ‘Absolute tolerance’ hace referencia al máximo error permitido en la
simulación y no se modificará.
Para simular, conectaremos una señal de entrada cualquiera (escalón, senoidal, etc.) a la entrada del
bloque y un osciloscopio a la salida:
Teoría de Sistemas (Curso Adaptación) Práctica 2 16 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH NOTA IMPORTANTE: Las variables con las que estamos trabajando son incrementales:
•
Fuerza o variable de entrada: valor en el punto de equilibrio = 10N
Aplicar un escalón de valor 1 equivale a ejercer una fuerza de 11N
f(0) = 10N
Δf(t) = 1N
f(t) = f(0) + Δf(t) = 11N
•
Posición o variable de salida: valor en el punto de equilibrio = 10/K = 0.5m
Una posición que en el gráfico aparece como 0.08 equivale a una posición real de 0.58mx(0) =
0.5m
Δx(t) = 0.08m
x(t) = x(0) + Δx(t) = 0.58m
Teoría de Sistemas (Curso Adaptación) Práctica 2 17 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 10. REPRESENTACIÓN EN MATLAB DE LOS RESULTADOS DE UNA SIMULACIÓN
En el apartado previo se ha utilizado el elemento Scope para representar los valores que toma una señal
cualquiera en un esquema Simulink. Sería interesante disponer, no sólo de la representación de esas
señales sino también de sus valores numéricos, para poder trabajar posteriormente sobre ellos (por
ejemplo, para poder calcular el valor máximo y mínimo de una señal y los instantes de tiempo en que se
producen, etc).
El elemento Scope permite, al mismo tiempo que representa los resultados de una simulación, guardar
esos resultados en una variable de Matlab, de modo que se puedan consultar sus valores desde la ventana
de comandos.
Como ejemplo volveremos a trabajar sobre el esquema utilizado en el apartado 8 para simular el
comportamiento de un conjunto masa-muelle amortiguador. El aspecto del esquema es el que se muestra
a continuación:
𝑓 𝑡 =𝑀∙
𝑑!𝑥 𝑡
𝑑𝑥 𝑡
+𝐵∙
+ 𝐾 ∙ 𝑥(𝑡) !
𝑑𝑡
𝑑𝑡
𝐾 = 10; 𝐵 = 1; 𝑀 = 1;
Se realizará la simulación de este esquema con los siguientes parámetros:
• Tiempo de simulación: 10 segundos.
• Amplitud del escalón de entrada: 5 unidades.
El resultado debería ser igual al que muestra la siguiente figura:
Teoría de Sistemas (Curso Adaptación) Práctica 2 18 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Nota: en caso de no obtener exactamente estos resultados es posible que la configuración del bloque
escalón no sea la correcta. En la figura siguiente se muestran los parámetros del bloque escalón y su
significado sobre la representación gráfica del mismo:
En general, el escalón se producirá en el instante cero (no estará retrasado) con lo que el parámetro
step time deberá ser siempre cero; el valor inicial del escalón (initial value) también será cero; y el valor
final (parámetro final value) deberá indicar la amplitud del escalón, que en este caso particular es cinco.
Teoría de Sistemas (Curso Adaptación) Práctica 2 19 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Ahora haremos click sobre el botón Parameters del elemento Scope, para abrir la ventana de
configuración:
Parámetros En la ventana de configuración deberemos seleccionar la solapa Data History y en ella marcaremos la
opción ‘Save data to workspace’ o, lo que es lo mismo, ‘guardar los datos en el espacio de trabajo de
Matlab’. Será necesario indicar dos parámetros:
•
•
En primer lugar, tendremos que asignar un nombre a la variable en la que deseamos guardar
los datos. Por defecto, esta variable es ‘ScopeData’, pero nosotros cambiaremos ese nombre
por ‘posicion’ (sin acento para evitar problemas) que es el dato que representa ese
osciloscopio en nuestro sistema (posición del extremo del conjunto muelle-amortiguador).
En segundo lugar, será necesario especificar un formato para los datos. Simulink ofrece tres
posibilidades: ‘Structure with time’, ‘Structure’ y ‘Array’. Nosotros elegiremos este
último formato, que quiere decir que los datos se guardarán en forma de vector.
Una vez hecho esto, lanzaremos de nuevo la simulación. El resultado sobre la ventana de Simulink será
el mismo, pero en la ventana de comandos de Matlab podremos comprobar cómo se han creado dos
nuevas variables. Para ello bastará teclear el comando who:
>> who
Your variables are:
posicion tout
Teoría de Sistemas (Curso Adaptación) Práctica 2 20 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Se han creado dos variables: posicion y tout. La única variable que nos interesa es la primera de ellas. Si
comprobamos el tamaño de la variable con el comando size, veremos que se trata de un vector de
2 columnas y 58 filas (este último dato puede variar según los ordenadores):
>> size(posicion)
ans =
58 2
La primera de las columnas contiene instantes de tiempo y la segunda contiene los valores que toma la
variable que se representa en el osciloscopio en cada instante. Si representamos las primeras 10 filas de la
variable podremos comprobar esto (nota: se usa la instrucción ‘format long’ para mostrar más cifras
decimales):
>> format long
>> posicion (1:10,:)
ans =
0
0.00000000000000
0.00004019018290
0.00024114109742
0.00124589567003
0.00626966853305
0.03138853284814
0.13244976834872
0.31114891413343
0.51114891413343
0
0.00000000000000
0.00000000403807
0.00000014536088
0.00000387902391
0.00009806359195
0.00243553350653
0.04137887820543
0.20203969791657
0.44779711805874
La primera de las columnas, como se ha dicho, corresponde a los instantes de tiempo; y podemos
comprobar cómo no están separados uniformemente. La segunda columna corresponde a los valores que
toma la señal, y podemos comprobar que los datos son correctos haciendo zoom sobre el gráfico que
aparece en el elemento Scope (por ejemplo, en el instante 0.511 segundos el valor de la señal es 0.448
aproximadamente):
Desde la ventana de comandos de Matlab, también será posible representar mediante la instrucción plot
la señal guardada en la variable posición. Dado que la primera columna contiene valores de tiempo y la
segunda columna contiene valores de posiciones, la forma correcta de la instrucción plot debería ser:
>> plot(posicion(:,1), posicion(:,2))
Teoría de Sistemas (Curso Adaptación) Práctica 2 21 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Supongamos que nos interesa calcular el valor máximo de la señal. Dado que los valores de la señal están
contenidos en la segunda columna de la variable posicion, bastará con utilizar el comando max de Matlab
(se recomienda consultar la ayuda de Matlab acerca de este comando):
>> [maximo, indice] = max(posicion(:,2))
maximo =
0.78834718133495
indice =
12
Los valores pueden ser ligeramente distintos en diferentes ordenadores debido a las precisiones de los
cálculos. En cualquier caso, el comando max recorre la segunda columna de la variable posicion y nos
devuelve su valor máximo y cuál es la fila en la que se produce ese valor (lo que hemos denominado
índice). Si queremos comprobar a qué instante de tiempo corresponde ese máximo, bastará con
comprobar el valor que toma la primera columna de la variable posicion para ese mismo índice (nota: se
utiliza la instrucción format short para mostrar menos cifras decimales).
>> format short
>> posicion(indice, :)
ans =
0.9111 0.7883
En resumen, hemos obtenido como resultado que la posición de la masa móvil (x) en el ejemplo del
sistema muelle-amortiguador alcanza un valor máximo de 0.7883 metros en el instante 0.9111 segundos.
Teoría de Sistemas (Curso Adaptación) Práctica 2 22 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH 11. INTRODUCCIÓN DE SEÑALES ARBITRARIAS EN SIMULINK
En la práctica anterior se comprobó como Simulink dispone de muchas señales de entrada, válidas para la
mayor parte de las aplicaciones: se dispone de las señales escalón, rampa, señal senoidal, tren de pulsos,
etc.
No obstante, en algunas ocasiones se desea utilizar señales de forma arbitraria, no disponibles
directamente en Simulink. Por ejemplo, podríamos desear utilizar una señal de entrada (fuerza aplicada al
conjunto muelle-amortiguador en el sistema sobre el que se está trabajando en esta práctica) como la que
se muestra a continuación:
La forma más sencilla de introducir una señal como la propuesta es mediante el bloque From Workspace
de la categoría Sources. A continuación se muestra el aspecto que debe tener el esquema Simulink de la
práctica una vez sustituido el bloque escalón por el bloque From workspace:
Una vez modificado el esquema Simulink, haremos clic sobre el elemento ‘From Workspace’ para
acceder a sus parámetros de configuración. Aparecerá una ventana como la que se muestra a
continuación:
Teoría de Sistemas (Curso Adaptación) Práctica 2 23 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH El único parámetro que nos interesa por el momento es el nombre de la variable de Matlab de la que
Simulink tomará los datos para utilizarlos como entrada. Por defecto, esta variable es simin. Nosotros
cambiaremos este nombre por otro más explicativo: dado que la entrada, en el sistema considerado, es la
fuerza aplicada sobre el conjunto muelle-amortiguador, llamaremos a esta variable fuerza.
El formato que debe tener esta variable es similar al de las variables guardadas en Matlab a través del
bloque Scope: la primera columna debe contener los valores de los instantes de tiempo y la segunda los
valores de la señal.
Un dato importante que hay que fijar es el intervalo entre cada dos instantes de tiempo. Cuanto más
pequeño sea este intervalo, mejor será la definición de la señal. En este ejemplo utilizaremos un intervalo
de 0.1 segundos.
A continuación pasaremos a definir la señal (véase el gráfico anterior de x(t)). Lo más cómodo será
definirla por tramos, utilizando un tramo para cada trazo recto de la señal. Además, y para simplificar la
creación de la señal, se usarán variables distintas para el tiempo y para la señal. Los tiempos se guardarán
en la variable tmp y los valores de la señal (o datos) en la variable dat.
Primer tramo: entre 0 y 10 segundos. La variable tiempo (vector tmp1) deberá tomar valores entre 0 y 10
a intervalos de 0.1; y la señal (vector dat1) deberá responder a la ecuación de la recta x=10t.
Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp1 = [0:0.1:10];
>> dat1 = 10*tmp1;
Teoría de Sistemas (Curso Adaptación) Práctica 2 24 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Segundo tramo: entre los instantes 10.1 segundos y 30 segundos. la variable tiempo (vector tmp2) deberá
tomar valores entre 10.1 y 30 a intervalos de 0.1; y la señal (vector dat2) deberá responder a la ecuación
de la recta x=100. Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp2 = [10.1:0.1:30];
>> dat2 = 100*ones(size(tmp2));
La segunda instrucción crea un vector de 200 elementos, tantos elementos como tiene el vector tmp2,
todos ellos con valor 100.
Tercer tramo: entre 30.1 y 35 segundos. La variable tiempo (vector tmp3) deberá tomar valores entre 30.1
y 35 a intervalos de 0.1; y la señal (vector dat3) deberá responder a la ecuación de la recta x=20t-500.
Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp3 = [30.1:0.1:35];
>> dat3 = 20*(tmp3-30)+100;
El último paso es crear las variables tmp y dat como concatenación de las variables tmp1, tmp2, tmp3 y
dat1, dat2, dat3 disponibles:
>> tmp = [tmp1, tmp2, tmp3]
>> dat = [dat1, dat2, dat3]
>> plot(tmp, dat)
Para comprobar que la señal se ha generado correctamente, lo más sencillo es utilizar el comando
plot de Matlab: la instrucción plot(tmp, dat) debería producir el siguiente resultado:
Una vez comprobado que las variables tmp y dat contienen valores correctos, generaremos a partir de
ellas la variable fuerza necesaria para el bloque From Workspace. La primera columna deberá contener
los tiempos y la segunda los datos, dado que tanto tmp como dat son vectores fila, se deberán trasponer,
tal y como indican las siguientes sentencias de Matlab (atención a la comilla final que indica la operación
de trasposición):
Teoría de Sistemas (Curso Adaptación) Práctica 2 25 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH >> fuerza(:,1)=tmp';
>> fuerza(:,2)=dat';
Con la variable fuerza creada, es posible lanzar la simulación. Dado que la señal está definida durante 35
segundos, el tiempo de simulación se fijará exactamente en 35 segundos (desde la opción Simulation
parameters del el menú Simulation). El resultado sobre el osciloscopio se muestra en la figura siguiente,
y se debe apreciar cómo la salida del sistema (posición) reproduce aproximadamente los valores de la
entrada (fuerza aplicada) con pequeñas oscilaciones.
Teoría de Sistemas (Curso Adaptación) Práctica 2 26 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH EJERCICIO A REALIZAR: SERVOMECANISMO DE POSICIÓN
El objetivo es simular el comportamiento de un servomecanismo de posición. El funcionamiento del
mecanismo es el siguiente: existe un controlador al que el usuario introduce como dato una referencia de
posición (posición deseada para la pieza móvil). El controlador actúa sobre un motor eléctrico que, a
través de un husillo, mueve la pieza. Para calcular la tensión a aplicar al motor, el controlador compara en
cada instante la posición real de la pieza con la posición pedida y en función de la diferencia entre las
posiciones aplica más o menos tensión, en uno u otro sentido. Cuando la posición es la pedida, el error es
cero y por tanto el controlador deja de aplicar tensión al motor.
Las ecuaciones del sistema son las siguientes:
𝑣 𝑡 = 𝑅𝑖 𝑡 + 𝑓𝑐𝑒𝑚(𝑡)
𝑓𝑐𝑒𝑚(𝑡) = 𝐾!
!" !
!"
𝑝 𝑡 = 𝐾! ∙ 𝑖 𝑡 𝑝 𝑡 =𝐽
!!! !
!"
+𝐵
!" !
!"
𝑣 𝑡 = 𝐾! ∙ 𝑥! 𝑡 − 𝑥 𝑡
Ecuación controlador
Las variables que aparecen representan las siguientes magnitudes:
• x(t): posición del elemento móvil del servomecanismo (variable de salida)
• x0(t): posición de referencia (variable de entrada)
• v(t): tensión entre los terminales del motor
• i(t): intensidad que circula por el motor
• fcem(t): fuerza contraelectromotriz en el motor
• p(t): par producido por el motor
Los valores que tomaremos inicialmente para las constantes serán los siguientes:
• R = 1.25 (resistencia de los devanados del motor)
• J = 0.8 (momento de inercia del conjunto)
• B = 0.5 (coeficiente de rozamiento viscoso)
• KP = 3 (constante de par del motor)
• KC = 0.5 (constante proporcional del controlador)
• KV = 0.01 (constante de velocidad del motor)
Teoría de Sistemas (Curso Adaptación) Práctica 2 27 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Supondremos que tanto x(t) como x0(t) están expresadas en centímetros, y que el resto de las variables y las
constantes están expresadas en unidades coherentes entre si, de modo que no se realizará ninguna
conversión de unidades.
Se pide, en primer lugar, crear un esquema Simulink que represente el comportamiento del sistema de
acuerdo con las ecuaciones planteadas. Tal y como se indica, la variable de entrada será la posición de
referencia x0(t) y la variable de salida la posición real del elemento móvil x(t).
El gráfico siguiente muestra la salida que debe producir el sistema ante una entrada en forma de escalón de
10cm (la referencia aumenta bruscamente de 0 a 10cm). El sistema se ha simulado durante los primeros 20
segundos de funcionamiento:
Debe comprobarse como la salida sigue a la entrada: una variación de 10cm en la posición de referencia
ocasiona en régimen permanente una variación de 10cm en la posición del elemento móvil. Las
sobreoscilaciones que se producen en los instantes iniciales se analizarán posteriormente.
Una vez comprobado el funcionamiento del sistema se deberá llevar la señal de salida a una variable de
Matlab, utilizando el bloque Scope. Sobre el vector de datos calcularemos lo siguientes parámetros:
* Cálculo del valor final de la señal (valor en régimen permanente)
* Cálculo del valor máximo (sobreoscilación) y el instante en el que se produce.
* Cálculo del instante a partir del cual la salida se puede considerar estabilizada. Este instante lo
consideraremos como el punto a partir del cual la salida permanece dentro de una franja del 5% del valor
final, tal y como muestra el gráfico siguiente:
Teoría de Sistemas (Curso Adaptación) Práctica 2 28 INGENIERÍA DE SISTEMAS Y AUTOMÁTICA -­‐ UMH Como último punto de la práctica, se comprobará la respuesta del sistema ante una señal como la
mostrada en el gráfico siguiente, que deberá ser introducida al sistema mediante el bloque From
Workspace:
Teoría de Sistemas (Curso Adaptación) Práctica 2 29 
Descargar