Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intro Simulink
Intro Simulink
Pedro Corcuera
Dpto. Matemtica Aplicada y Ciencias de la Computacin Universidad de Cantabria
corcuerp@unican.es
Objetivos
Introducir conceptos de diseo basado en modelos Aprender a disear modelos de sistemas Conocer el entorno Simulink y sus aplicaciones Disear y simular modelos en Simulink
Simulink
ndice
Modelado dinmico de sistemas Introduccin a Simulink Simulacin de ecuaciones diferenciales Creacin de subsistemas Herramientas de anlisis en Simulink Depuracin Extensiones de Simulink
Simulink
Modelado dinmico de sistemas El modelo matemtico de un sistema dinmico es descrito por un conjunto de ecuaciones El modelo de diagrama de bloques de Simulink es una representacin grfica del modelo matemtico de un sistema dinmico Las ecuaciones matemticas descritas por un modelo de diagrama de bloques son conocidas como ecuaciones algebraicas, diferenciales y/o de diferencia
Simulink
4
Modelos de sistemas Dependiendo del sistema modelado y del propsito de la simulacin, el modelo matemtico puede ser:
Lineal o No Lineal: los modelos lineales obedecen al principio de superposicin Parmetros Distribudos: son descritos por ecuaciones diferenciales parciales usualmente con el tiempo y una o ms coordenadas espaciales como variables independientes Estticos y Dinmicos: los modelos estticos no toman en cuenta la variacin del tiempo mientras que los modelos dinmicos si lo hacen
Simulink
5
Modelos de sistemas
Continuos y Discretos: los modelos de tiempo continuo son descritos por ecuaciones con variables continuas en el tiempo. Los modelos discretos son descritos por ecuaciones cuyas variables dependientes son muestreadas en intervalos fijos de tiempo Determinstico o Estocstico: un modelo determinstico, produce el mismo resultado al ejecutarse si se cumplen las mismas condiciones iniciales. Un modelo estocstico es aquel en el cual la informacin pasada, no permite la formulacin de una regla para determinar el resultado preciso de un experimento
Simulink
6
Introduccin a Simulink Es una herramienta interactiva (tipo drag and drop), para modelar, simular y analizar sistemas dinmicos, basada en diagramas de bloques Permite a los usuarios concentrarse en la estructura del problema, en lugar de tener que preocuparse acerca de un lenguaje de programacin Los parmetros de cada bloque de seal y sistema son configurados por el usuario. La simulacin se realiza sobre un tiempo determinado Simulink es una extensin de MATLAB
Simulink
7
Definicin de los parmetros del sistema Seleccionar un mtodo de integracin apropiado Ajuste de las condiciones de ejecucin de la simulacin
Simulink
Entorno de desarrollo Simulink Para activar el entorno de desarrollo Simulink se escribe en la ventana de comandos Matlab >> simulink o se pulsa sobre el icono
Simulink
Simulink
10
Diagramas de bloque Simulink proporciona un conjunto muy amplio de diagramas de bloques para describir sistemas continuos, discretos e hbridos Un sistema continuo es un sistema que se representa por ecuaciones diferenciales. Un sistema discreto se representa por ecuaciones en diferencia. Un sistema hbrido contiene componentes continuos y discretos Un diagrama de bloques describe un conjunto de relaciones que puede representar un conjunto de ecuaciones simultneas
Simulink
11
Diagramas de bloque: sistemas continuos La mayora de sistemas fsicos son modelados como sistemas continuos, porque pueden ser descritos mediante ecuaciones diferenciales (ecdif) Hay cuatro bloques primitivos que pueden modelar cualquier sistema descrito por ecdif. lineales:
Ganancia Suma Derivada Integrador
El bloque de funcin de transferencia es muy usado para el modelado se sistemas fsicos y controladores
Simulink
12
Bloque suma
c = a b
a +b x du/dt y c
Bloque derivada
dx y= dt
t
Notacin Laplace x s y
Bloque integrador
y (t ) = y (t0 ) + x( )d
t0
Notacin Laplace x
Simulink
1/s
y
13
Ejemplo:
1/ m s 2 + (c / m) s + ( k / m)
G(s)
Simulink
15
Bloque de espacio de estado continuo El bloque de espacio de estado es alternativo al bloque funcin de transferencia Representa de forma compacta la dinmica de un sistema
Permite especificar condiciones iniciales y proporciona acceso a variables internas Permite modelar sistemas con mltiples entradas y mltiples salidas (MIMO)
Ecuaciones generales:
Diagramas de bloque: sistemas discretos Un sistema discreto puede ser representado usando ecuaciones en diferencia y operan con seales discretas (representadas por pulsos x(k), k es el nmero de pulso) Los bloques discretos bsicos son:
Ganancia discreta Suma discreta Retardo unitario (unit delay) Integrador discreto en tiempo
Simulink
17
x(k)
Bloque integrador
T ( k 1)
u (t )dt
Simulink
Representacin:
General Equivalente Simulink
z zk
1 zk
Simulink
19
Bloque de espacio de estado discreto Similar al bloque de espacio de estado continuo siendo las variables de estado discretas Ecuaciones generales:
x(k + 1) = Ax(k ) + Bu (k ) y (k ) = Cx(k ) + Du(k )
donde: x vector de variables de estado u vector de entrada y vector de salida
Simulink
20
Bloques no lineales Simulink proporciona un amplio conjunto de bloques adicionales a los lineales. Los ms comunes son.
Producto Abs Lgicos (AND, OR, NOT) Relacionales (<,>) Sign Funcin saturacin Retardo de transporte Bsqueda en tabla (interpolacin)
Simulink
21
Bloques Simulink
Continuos Discontinuos Discretos Lgicos y Op. Bit
Simulink
22
Bloques Simulink
Bsqueda tabla Operaciones matemticas Sinks Lgicos y Op. Bit
Simulink
23
Configuracin de bloques Haciendo doble-click sobre cualquier bloque o seleccionando con el botn derecho del ratn los parmetros del bloque se obtiene una ventana para configurar el bloque segn las necesidades del modelo
Simulink
24
Blocksets Es posible desarrollar bloques para Simulink y agruparlos para la modelacin y simulacin de sistemas especficos Existen varios blocksets que se pueden aadir a Simulink
Aerospace Blockset Communications Blockset Gauges Blockset Signal Processing Blockset Video and Image Processing Blockset
Simulink
25
Sources
27
Abrir ventana de nuevo modelo Para crear un modelo en Simulink se pulsa sobre el icono New model del Simulink Library Browser o se selecciona File New Model
Simulink
28
Espacio de trabajo En el espacio de trabajo se colocarn los diagramas de bloque del modelo
Espacio de trabajo
Simulink
29
Aadir bloques
Hacer click sobre una librera para desplegar los bloques
Simulink
30
Simulink
31
Posteriormente se pueden mover el bloque para que las lneas de conexin queden rectas
Simulink
32
Guardar el modelo Para guardar el modelo seleccionar File Save El sufijo de los modelos Simulink es .mdl Desde la ventana de comandos de Matlab se puede abrir el modelo escribiendo el nombre del fichero
Simulink
35
Ejecucin de la simulacin del modelo Asignar los parmetros de la simulacin Ejecutar una simulacin desde la ventana del modelo Poner y sacar valores en/desde los modelos
Utilizar en Matlab los valores obtenidos en la simulacin Variables definidas en Matlab y Simulink
Simulink
36
Simulink
37
Parmetros de la simulacin Cuando se ejecuta una simulacin, Simulink resuelve el conjunto de ecuaciones diferenciales y diferencia numricamente usando uno de los solvers
Simulink
38
Parmetros de la simulacin El tipo de Solver que proporciona Simulink es amplio y son los ms mtodos ms rpidos y precisos Algunos de los solvers proporcionados son:
ode45: Mtodo basado en Dormand - Prince , un paso Runge Kutta y es recomendado como un primer mtodo ode23: Mtodo basado en Bogacki Shampine, un paso un paso Runge Kutta y pude ser ms eficiente que ode45 cuando la tolerancia es amplia ode113: Este es un multipaso , de orden variable Adams Bashforth Moulton PECE. Es recomendable cuando la funcin evaluacin consume tiempo y la tolerancia es poca ode15s: Es un multipaso , de orden variable basado en la frmula de diferenciacin backward ode23: un paso basado en la frmula de Rosembrock de orden 2.
Simulink
39
Simulink
40
Parmetros de la simulacin Otros parmetos tiene que ver con la entrada/salida de datos al modelo y desde el modelo
Simulink
41
Parmetros de la simulacin Los parmetros y variables de los modelos se pueden acceder desde la ventana de Comandos de Matlab
Simulink
42
Parmetros de la simulacin Los parmetros y variables de los modelos se pueden acceder desde la ventana de Comandos de Matlab
Despus de ejecutar la simulacin en Simulink
Simulink
43
Variables definidas en Matlab y Simulink Tanto desde la ventana de Matlab como la de Simulink se ve el mismo Workspace o Espacio de trabajo
Matlab
T=2; K=1;
Simulink
Espacio de trabajo
T=2 K=1 t = 0:0.01:10 pi=3.14159...
Simulink
44
Simulink
45
Solucin de ecuaciones diferenciales que modelan Sistemas Continuos Construir un modelo en Simulink que resuelva la siguiente ecuacin diferencial: dx = 5sin ( 4t ) dt Condicin inicial: x(0) = 2. Primero se dibuja un diagrama de bloques de la simulacin del modelo matemtico (ecuacin)
Simulink
47
Diagrama del modelo Input: funcin 5sin(4t) Output: x(t) que es la solucin de la ecuacin diferencial
x(0) = 2
dx dt
5sin(4t) (input)
1 s integrador
x( t ) (output)
Seleccin de bloques para el modelo La siguiente tabla resume el bloque y la librera donde se encuentra para ser inludo en el modelo
Se arrastra el bloque de la librera hasta la ventana de trabajo Modelo Input Integrador Output Librera Sources Continuous Sink Bloque Sink Integrator Scope
Simulink
49
Simulink
50
Simulink
51
Simulink
52
Simulink
El valor inicial es: -2 Para ello se hace doble click en el bloque Integrator y se ingresa la condicin inicial = -2
Simulink
55
Ejecutar la simulacin
Simulink
56
Hacer doble click en el bloque Scope Se visualiza el output x(t) en la ventana Scope Se puede mejorar la visualizacin utilizando los iconos de la ventana. Ej.: Autoscale y Tick labels all
Simulink
57
Ejemplo de Sistema Continuo de segundo orden El siguiente sistema muelle-masa-amortiguador se resuelve segn la ecuacin de movimiento (ignorando friccin):
Notacin simplificada:
d 2x dx m 2 + c + kx = f (t ) dt dt
mx + cx + kx = f (t )
Considerar que:
el sistema inicialmente est en equilibrio: x = 0, x = 0 funcin de la fuerza es un escaln con magnitud 3 valores de los parmetros: m = 0.25, c = 0.5, k = 1
Simulink
58
Diagrama de simulacin del sistema continuo de segundo orden Si se expresa la ecuacin en trminos de la derivada de mayor orden
mx + cx + kx = f (t )
f(t) input
1 k c x = f (t ) x x m m m
1 s
c/m
1 s
x(t) output
k/m
Simulink
59
Diagrama de bloques Simulink del sistema continuo de segundo orden A partir del modelo se identifican los bloques necesarios en las libreras Simulink:
Bloque Step (1) - Librera Sources Bloque Sum (1) - Librera Math Operations Bloque Gain (3) - Librera Math Operations Bloques Integrator (2) - Librera Continuos Bloque Scope (1) - Librera Sink
Cada bloque requiere ser configurado con las ICs: el sistema inicialmente est en equilibrio: x = 0, x = 0
input: escaln con magnitud 3 valores de los parmetros: m = 0.25, c = 0.5, k = 1
Simulink
60
Doble click en Gain para cambiar los parmetros del bloque Cambiar etiqueta
Simulink
62
Doble click en Step para cambiar los parmetros Step time a 0 y Final value a 3
Simulink
63
El bloque integrator tiene por defecto valor inicial 0. No es necesario modificarlo. Se cambian los ttulos
Simulink
64
Simulink
65
Para girar el bloque gain, seleccionarlo, y elegir Flip Block en el men Format. Cambiar etiqueta. Doble click en los bloques Gain para modificar los parmetros. c/m =2, k/m = 4
Simulink
66
Ejecutar
Simulink
67
Simulink
68
Comprobacin de resultados Forma Standard Frecuencia natural Tasa de amortiguamiento Ganancia esttica
x k m c 1 + x + x = f (t ) k k
k = 2.0 m
n =
2
c = = 0.5 n k
1 K = =1 k
Simulink
69
Uso del bloque de funcin de transferencia en un scso El siguiente sistema muelle-masa-amortiguador se resuelve segn la ec. de movimiento (sin friccin):
mx + cx + kx = f (t )
Tomando la transformada de Laplace e ignorando las condiciones iniciales ms 2 X ( s ) + csX ( s ) + kX ( s ) = F ( s ) La funcin de transferencia (output/input X(s)/F(s)) es: X (s) 1/ m 4 G(s) = = G (s) = 2 F (s) s 2 + c s + k s + 2s + 4 m m
Simulink
70
Bloque de espacio de estado El bloque espacio de estado (state-space) es una alternativa al bloque funcin de transferencia Las variables de estado para el sistema mma son posicin y velocidad
x1 = x x2 = x
Las derivada de las variables de estado son x1 = x2 k c 1 x2 = x1 x2 F m m m
Simulink
72
y = Cx + Du y = x1 C = [1 0] D=0
donde: A = matriz del sistema B = matriz de entrada C = matriz de salida D = matriz de transmitancia directa
Simulink
73
Ajustar los valores de las matrices A=[0 1;-4 -2], B=[0; 4], C=[1 0] y D=[0] del bloque State Space
Simulink
74
b(k ) = rb( k 1) p (k )
donde: b(k) pago mensual r = i+1 siendo i el inters mensual, y p(k) pago de final de mes.
Modelo de bloques
p(k)
+
b(k) z-1 ki
Simulink
75
b(k-1)
b(k ) = rb( k 1) p (k )
Considerar como condiciones iniciales: Balance inicial: 15000 Inters: 1% Pago mensual = 200
Simulink
76
Modelo de bloques de sistema discreto Simulink A partir del modelo se identifican los bloques necesarios en las libreras Simulink:
Bloque Constant (1) - Librera Sources Bloque Sum (1) - Librera Math Operations Bloque Gain (3) - Librera Math Operations Bloques Unit delay (1) - Librera Discrete Bloque Scope y Display (1) - Librera Sink
-K Gain Scope
En Parameter Configuration de Simulation ajustar a Solver type: Fixed-step Solver: discrete Start time: 0 Stop time: 100
Simulink
78
-K Gain Scope
Simulink
79
Subsistemas y enmascarado Simulink proporciona la capacidad de crear subsistemas que equivalen a las subrutinas o funciones de los lenguajes de programacin Los subsistemas permiten la abstraccin y reusabilidad Los modelos pueden crecer y hacerse ms complejos de comprender y mantener. Con los subsistemas se divide un gran modelo en un conjunto de jerrquico de modelos ms pequeos
Simulink
80
Simulink
81
Creacin de Subsistemas : Encapsulado Si se sabe que es necesario subsistemas para crear un modelo, es conveniente construir el subsistema en una ventana de subsistema directamente
Para ello se arrastra el bloque Subsystem de la librera de bloques Ports & Subsystems a una ventana de modelo. Despus hacer doble-click sobre el bloque.
Simulink
84
Se hacen dos copias del bloque subsystem y se conectan los bloques como se muestra
Simulink
86
Desplazamiento
Tiempo (seg)
Simulink
88
Enmascarado de bloques El enmascarado es una capacidad de Simulink que extiende el concepto de abstraccin Con ello se trata un subsistema como si fuera un bloque simple con su propio icono y dilogo de configuracin de parmetros Para producir un bloque enmascarado se construye el subsistema como se ha mostrado antes, se selecciona y se selecciona Edit:Mask Subsystem Usando el editor de mscara, se configura la documentacin, dilogo de propiedades e icono
Simulink
89
Seleccionar el bloque y se escoje Edit:Mask Subsystem en el men de la ventana de modelos para obtener la ventana de dilogo del editor Mask. Guardar el modelo (CartMask)
Simulink
90
Simulink
91
Simulink
93
Simulink
94
Simulink
95
2 Izq
-K Add 1 Res.der
Simulink
96
Si en la pgina Initialization se agrega la lnea: m_etiq=sprintf('%1.1f kg',mass); y en Drawing Commands: text(0.45,0.6,'m') text(0.25,0.4,m_etiq)
Simulink
97
Simulink
98
Simulink
99
Simulink
100
Herramientas de anlisis en Simulink Simulink dispone de herramientas de anlisis para ganar en la comprensin de los modelos desarrollados, que se usan dentro del espacio de trabajo de Matlab As se puede obtener la estructura del vector del espacio de estado del modelo, el nmero de entradas y salidas y otros parmetros importantes. Tambin se puede ejecutar la simulacin desde Matlab y modificar los parmetros del modelo, as como linealizar un modelo, hallar puntos de equilibrio
Simulink
101
Vector de estado del modelo Un modelo Simulink es una descripcin grfica de un conjunto de ecuaciones diferenciales, en diferencia y algebraicas El comando model permite determinar la estructura del vector de estado del modelo Simulink
sizes = model([],[],[],0) [sizes,x0] = model([],[],[],0) [sizes,x0,states] = model([],[],[],0)
En la ventana de comandos Matlab se Gain ejecuta el comando: 0.4 >> [sizes,x0,states]=ejmod([],[],[],0) Gain 1 sizes = 2 0 x0 = 0 0 0 0 0 states = 0 'ejmod/Desplazamiento' 1 'ejmod/Velocidad'
0.2
Simulink
103
Ejecucin de modelos desde Matlab El comando Matlab sim permite ejecutar los modelos Simulink desde Matlab El comando sim se puede usan conjuntamente con el comando simset para crear y editar una estructura de datos de opciones y simget que obtiene la estructura de datos de opciones del modelo La sintaxis del comando sim es
[t,x,y]=sim(model,TiemSpan,Options,utd) donde model es el nombre del modelo
Simulink
104
Ejemplo: ejecucin de modelos desde Matlab Para ejecutar el modelo almacenado en el fichero ejmod.mdl usando la configuracin por defecto, equivalente a seleccionar Simulation:Start en la barra del men del modelo. En Matlab se ingresa el comando:
sim('ejmod')
Simulink ejecutar el modelo y si Scope est abierto mostrar la grfica del resultado cuando la simulacin se completa
Simulink
105
Ajuste y obtencin de parmetros de simulacin desde Matlab El comando simset se usa para crear y editar la estructura de opciones de la simulacin Hay tres formas del comando simset, siendo la ms comn:
options=simset('RelTol',1.0E-4, 'Solver','ode4')
Herramientas de linealizacin Aun cuando la dinmica de la mayora de los sistemas fsicos son no lineales, muchas tcnicas tiles para el anlisis y diseo de sistemas de control se basan en modelos lineales Ejemplos: diagramas de Bode y de lugar de races Las ecuaciones lineales del espacio de estado son:
x = Ax + Bu y = Cx + Du
donde x es el vector de estado y u es el vector de entrada
Simulink
107
Comandos de linealizacin Simulink proporciona tres comandos para extraer la aproximacin lineal del espacio de estado a partir de los modelos Simulink
linmod para sistemas continuos linmod2 alternativo a linmod para reducir errores de truncamiento dlinmod para sistemas continuos y discretos
= x2 3 x2 = x1 + x2 3 x2
1 s x1 Integrator 1 x1 Out
2 x2 Out
pow(u[1],3)-3*u[1]
Comando para hallar el equilibrio El comando trim encuentra el punto de equilibrio de un sistema mediante la bsqueda numrica del punto donde el mximo valor absoluto de la derivada de estado es minimizado La sintaxis del comando es
[x,u,y,dx] = trim(model,x0,u0,y0,ix,iu,iy,dx0,idx,options,t)
Callbacks Los callbacks son comandos Matlab que se ejecutan automticamente cuando ocurren ciertos eventos (abrir un modelo, doble-click en un bloque, etc.) Se pueden aadir tambin callbacks para aadir animaciones Los callbacks estn relacionados con el Handle Graphics de Matlab Los callbacks se pueden asociar con un modelo o con un bloque particular
Simulink
111
Funciones S Permiten definir bloques personalizados usando cdigo en Matlab, C, C++, Ada o Fortran
Se pueden usar en varias situaciones: si existe cdigo que modela una porcin o la totalidad de un sistema, para describir el modelo dinmico de forma algortmica en lugar de grfica, para aumentar la eficiencia de una simulacin y como mecanismo para aadir animaciones a un modelo Simulink Una funcin S se incluye en un modelo Simulink usando el bloque S-Function que se encuentra en la librera de bloques User-Defined Functions
Simulink
112
Depuracin Simulink dispone de herramientas y tcnicas para identificar y corregir errores de programacin que pueden ser:
debidas a la construccin del modelo (sintaxis)
lneas de seal sin conectar , bloques de entrada y salida sin conectar y datos de configuracin de bloque sin asignar
de implementacin
overflows que causan errores de ejecucin y lazos algebraicos que ralentizan la ejecucin
Simulink
113
Encontrando errores de construccin del modelo Simulink puede detectar automticamente errores durante el paso de compilacin del modelo y lo reporta mediante la ventana de dilogo Simulation Diagnostics (simulacin interrumpida) o mediante mensajes warning en la ventana de Matlab (simulacin contina) Para asegurar que todos los errores sean detectados se configura las opciones en Simulation:Configuration Parameters:Diagnostics
Simulink
114
Run
Simulink
115
Encontrando problemas de implementacin Un problema de implementacin es una caracterstica del modelo no deseada que puede no impedir su ejecucin pero sea incorrecta o ineficiente Tipos de errores:
Errores de ejecucin Ejecucin lenta
Oscilacin por cruce de cero Lazos algebraicos Stiffnes Complejidad del modelo
Resultados incorrectos
Simulink
116
Depurador (debugger) de Simulink Un debugger interactivo es una herramienta que permite controlar la ejecucin de un programa y monitorizar los valores de las variables Para ejecutar el debugger seleccionar en la bbra de mens de la ventana del modelo Tools:Simulink Degugger La barra de herramientas de la ventana del debugger contiene una serie de botones (13) que permiten controlar el proceso de depuracin
Simulink
117
Simulink
118
Help Animation delay Enabled/Disabled Animation Display current I/O of selected block Display I/O of selected block when executed Break before selected block Stop debugging Pause Start/Continue Go to the next block method Go to first method at start of next time step Step out of current method Step over current method Step into current method
Simulink
119
Simulink
120
Stateflow Stateflow es una extensin de Simulink que proporciona un entorno muy potente para aadir mquinas de estado finito a los modelos de Simulink Se fundamenta en los diagramas Statechart que representan las mquinas de estado finito y los diagramas de transicin de estado
Para incluir un bloque Chart en un modelo Simulink se selecciona el blockset Stateflow y arrastrar el bloque Chart en el modelo Haciendo doble click en el bloque Chart se obtiene la ventana de Stateflow
Simulink
121
Real-Time Workshop Real-Time Workshop es una extensin de Simulink que convierte los modelos Simulink en cdigo ejecutable. RTW se puede configurar para producir cdigo ejecutable para el computador en el que Simulink se ejecuta, otro computador, una tarjeta de procesado digital de seales o un controlador embebido El cdigo producido se ejecuta ms rpido que el modelo Simulink y su ejecucin se puede controlar de forma remota
Simulink
122