Presentacion Matlab
Short Description
Download Presentacion Matlab...
Description
UNIVERSIDAD DEL ZULIA PROGRAMA DE INGENIERIA. NUCLEO CABIMAS
DIPLOMADO DE CONTROL DE PROCESOS E INSTRUMENTACION DE PLANTAS.
Análisis y control de sistemas utilizando MATLAB
CURSO INTRODUCTORIO
UNIVERSIDAD DEL ZULIA PROGRAMA DE INGENIERIA. NUCLEO CABIMAS
Análisis y control de sistemas utilizando MATLAB
PONENTE: Ing. Marco Ferrer CABIMAS, MARZO 2010
Expectativas sobre el curso Que estoy haciendo aquí ??? Que es MA MATLAB TLAB ??? Para que me sirve ??? Base fundamental necesaria ??? (Matemática y Computacional)
Que es MATLAB? MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos.
ORIGEN DEL PROGRAMA MATLAB
El nombre MATLAB viene de "Matrix Laboratory" (Laboratorio Matricial). Fue originalmente escrito para proveer acceso fácil al software matricial desarrollado por los proyectos LINPACK y EISPACK, que juntos representan al mayor fabricante de software para computación matricial.
Programas de apoyo especializado que extienden significativamente el número de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales en el mundo de la ingeniería y la simulación
proceso de imágenes, señal, control robusto, control de procesos, estadítica, análisis financiero, matemáticas simbólicas, redes neurales, lógica difusa, identificación de sistemas, simulación de sistemas dinámicos, etc.
MATLAB se puede arrancar como cualquier otra aplicación de Windows 95/98/NT, clicando dos veces en el icono correspondiente en el escritorio o por medio del menú inicio. En la ventana inicial se sugieren ya algunos comandos para el usuario inexperto que quiere echar un vistazo a la aplicación. En dicha ventana aparece también el prompt (aviso) característico de MATLAB (»).
Otro de los puntos fuertes de MATLAB son los gráficos » x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Función seno(x)')
Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal se pueden utilizar las funciones clc y home. La función clc (clear console) elimina todas las salidas anteriores, mientras que home las mantiene, pero lleva el prompt (» ) a la primera línea de la ventana. Si se desea salir del programa, basta teclear los comandos quit o exit, o bien elegir Exit MATLAB en el menú File (también se puede utilizar el Alt+F4 de todas las aplicaciones de Windows).
clf borra la figura actual y por tanto despeja la ventana de gráficos. clear no afecta a las ventanas, pero si borra todas las variables de la memoria Para ver algunas de las capacidades de MATLAB, usar el comando demo, que inicia el MATLAB EXPO, un entorno gráfico de demostración que ilustra algunos tipos de operaciones que se pueden realizar con MATLAB. Para abortar un comando en MATLAB, mantener presionada la tecla de control y oprima c (Ctrl. + c). Esto ocasiona un interrupción local dentro del MATLAB. Para acceder al menú de ayuda se debe usar el comando help. El “;” al final de la instrucción omite el “eco” o salida a la pantalla.
OPERACIONES CON VECTORES Y MATRICES MATLAB es fundamentalmente un programa para cálculo matricial. Inicialmente se utilizará MATLAB como programa interactivo, en el que se irán definiendo las matrices, los vectores y las expresiones que los combinan y obteniendo los resultados sobre la marcha. Si estos resultados son asignados a otras variables podrán ser utilizados posteriormente en otras expresiones. En este sentido MATLAB sería como una potente calculadora matricial Antes de tratar de hacer cálculos complicados, la primera tarea será aprender a introducir matrices y vectores desde el teclado. Más adelante se verán otras formas más potentes de definir matrices y vectores.
Como introducir datos en Matlab? DEFINICIÓN DE MATRICES DESDE TECLADO Para definir una matriz no hace falta establecer de antemano su tamaño Las matrices se definen por filas; los elementos de una misma fila están separados por blancos o comas, mientras que las filas están separadas por pulsaciones intro o por caracteres punto y coma (;).
Por ejemplo, el siguientge comando define un vector de tres elementos
» A=[1 2 3] La respuesta del programa es la siguiente: A= 123
El siguiente comando define una matriz A de dimensión (3x3): » A=[1 2 3; 4 5 6; 7 8 9] La respuesta del programa es la siguiente: A= 123 456 789
A partir de este momento la matriz A está disponible para hacer cualquier tipo de operación con ella (además de valores numéricos, en la definición de una matriz o vector se pueden utilizar expresiones y funciones matemáticas). Por ejemplo, una sencilla operación con A es hallar su matriz traspuesta. En MATLAB el apóstrofo (') es el símbolo de trasposición matricial. Para calcular A' (traspuesta de A) basta teclear lo siguiente (se añade a continuación la respuesta del programa): » A' ans = 147 258 369
La variable ans puede ser utilizada como operando en la siguiente expresión que se introduzca. También podría haberse asignado el resultado a otra matriz llamada B:
» B=A' B= 1 4 2 5 3 6
7 8 9
Ahora ya están definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deberá resultar una matriz simétrica):
» B*A ans = 66 78 78 93 90 108
90 108 126
En MATLAB se accede a los elementos de un vector poniendo el índice entre paréntesis (por ejemplo x(3) ó x(i)). Los elementos de las matrices se acceden poniendo los dos índices entre paréntesis, separados por una coma (por ejemplo A(1,2) ó A(i,j)). teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).
Invertir una matriz es casi tan fácil como trasponerla.
» A=[1 4 -3; 2 1 5; -2 5 3] A= 1 4 -3 2 1 5 -2 5 3 B=inv(A) B= 0.1803 0.2213 -0.1885 0.1311 0.0246 0.0902 -0.0984 0.1066 0.0574
Para comprobar que este resultado es correcto basta pre-multiplicar A por B;
» B*A ans = 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 » x=[10 20 30] % vector fila x= 10 20 30
» y=[11; 12; 13] % vector columna y= 11 12 13
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta sumar los vectores x e y se obtendrá el siguiente mensaje de error: » x+y ??? Error using ==> + Matrix dimensions must agree. Estas dificultades desaparecen si se suma x con el vector traspuesto de y: » x+y' ans = 21 32 43
OPERACIONES CON MATRICES: MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), así como la función invertir inv(). Los operadores matriciales de MATLAB son los siguientes:
Los operadores anteriores se pueden aplicar también de modo mixto, es decir con un operando escalar y otro matricial. En este caso la operación con el escalar se aplica a cada uno de los elementos de la matriz. Considérese el siguiente ejemplo: » A=[1 2; 3 4] A= 12 34 » A*2 ans = 24 68 » A-4 ans = -3 -2 -1 0
En MATLAB MATLAB existe también la posibilidad de aplicar elemento a elemento los operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por ejemplo: » [1 2 3 4]^2 ??? Error using ==> ^ Matrix must be square. » [1 2 3 4].^2 ans = 1 4 9 16 » [1 2 3 4]*[1 -1 1 -1] ??? Error using ==> * Inner matrix dimensions must agree. » [1 2 3 4].*[1 -1 1 -1] ans = 1 -2 3 -4
•rand(n,m) - matriz n*m de entradas aleatorias entre 0
uno. •eye(n) - matriz identidad n*n. •zeros(n,m) - matriz cero de tamaño n*m. •ones(n,m) - matriz n*m con todas las entradas uno. Combinando estas instrucciones podemos generar matrices bastante complicadas. Por ejemplo, la instrucción »E=[eye(2),ones(2,3);zeros(2),[1:3;3:-1:1]] genera la siguiente matris
y
La instrucción round(x) redondea "x" al entero más cercano a "x". Podemos combinar funciones en MATLAB. Por ejemplo, round(10*rand(4)) genera una matriz con entradas aleatorias entre 0 y 10.
Funciones
de Matrices
MATLAB posee una gran cantidad de funciones matriciales. De las más comunes tenemos: •min(A), max(A) - dan
el mínimo y máximo respectivamente por columnas de A
•sum(A), prod(A) - producen la
suma y producto respectivamente por columnas
de A •norm(A,p) - norma p de la matriz A donde p=1,2, ó inf •eig(A) - vector cuyos componentes son los valores propios de A •det(A) - el determinante de A •inv(A) - la matriz inversa de A
Matrices especiales
ones(2)
Hace una matriz de unos, de 2 x 2.
zeros(5,4)
Hace una matriz de ceros, de 5 x 4
rand(3)
Hace una matriz de 3 x 3,
eye(4)
Hace una matriz identidad de 4 x 4.
TIPOS DE DATOS Ya se ha dicho que MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular también trabaja con variables escalares (matrices de dimensión 1). MATLAB trabaja siempre en doble precisión, es decir guardando cada dato en 8 bytes, con unas 15 cifras decimales exactas. Ya se verá más adelante que también puede trabajar con cadenas de caracteres (strings) y, desde la versión 5.0, también con otros tipos de datos: Matrices de más dos dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.
NÚMEROS REALES DE DOBLE PRECISIÓN Los elementos constitutivos de vectores y matrices son números reales almacenados en 8 bytes (53 bits para la mantisa y 11 para el exponente de 2; entre 15 y 16 cifras decimales equivalentes). Es importante saber cómo trabaja MATLAB con estos números y los casos especiales que presentan. MATLAB mantiene una forma especial para los números muy grandes (más grandes que los que es capaz de representar), que son considerados como infinito. Por ejemplo, obsérvese cómo responde el programa al ejecutar el siguiente comando: » 1.0/0.0 Warning: Divide by zero ans = Inf
MATLAB tiene también una representación especial para los resultados que no están definidos como números. Por ejemplo, ejecútense los siguientes comandos y obsérvense las respuestas obtenidas: » 0/0 Warning: Divide by zero ans = NaN » inf/inf ans = NaN En ambos casos la respuesta es NaN, que es la abreviatura de Not a Number.
NÚMEROS COMPLEJOS: FUNCIÓN COMPLEX En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos, con parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos. Para ver como se representan por defecto los números complejos, ejecútense los siguientes comandos:
» a=sqrt(-4) a= 0 + 2.0000i » 3 + 4j ans = 3.0000 + 4.0000i
» A = [1+2i 2+3i; -1+i 2-3i] A= 1.0000 + 2.0000i 2.0000 + 3.0000i -1.0000 + 1.0000i 2.0000 - 3.0000i » A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesario A= 1.0000 + 2.0000i 2.0000 + 3.0000i -1.0000 + 1.0000i 2.0000 - 3.0000i
MATLAB dispone asimismo de la función complex, que crea un número complejo a partir de dos argumentos que representan la parte real e imaginaria, como en el ejemplo siguiente:
» complex(1,2) ans = 1.0000 + 2.0000i Es importante advertir que el operador de matriz traspuesta ('), aplicado a matrices complejas, produce la matriz conjugada y traspuesta. Existe una función que permite hallar simplemente la matriz conjugada (conj()) y el operador punto y apóstrofo (.') que calcula simplemente la matriz traspuesta.
CADENAS DE CARACTERES MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las cadenas de texto van entre apóstrofos o comillas simples
s = 'cadena de caracteres’ MATLAB distingue entre mayúsculas y minúsculas en los nombres de variables. Los nombres de variables deben empezar siempre por una letra y pueden constar de hasta 31 letras y números. El carácter guión bajo (_) se considera como una letra.
FUNCIONES MATEMÁTICAS ELEMENTALES QUE OPERAN DE MODO ESCALAR Estas funciones, que comprenden las funciones matemáticas trascendentales y otras funciones básicas, actúan sobre cada elemento de la matriz como si se tratase de un escalar. Se aplican de la misma forma a escalares, vectores y matrices. Algunas de las funciones de este grupo son las siguientes:
. FUNCIONES QUE ACTÚAN SOBRE VECTORES Las siguientes funciones actúan sobre vectores (no sobre matrices ni sobre escalares)
FUNCIONES PARA CÁLCULOS CON POLINOMIOS
4 2 X -8X +6X-10=0 se puede representar mediante el vector [1, 0, -8, 6, -10].
MATLAB puede realizar diversas operaciones sobre él, como por ejemplo evaluarlo para un determinado valor de x (función polyval()) y calcular las raíces (función roots()): » pol=[1 0 -8 6 -10] pol = 1 0 -8 6 -10 » roots(pol) ans = -3.2800 2.6748 0.3026 + 1.0238i 0.3026 - 1.0238i » polyval(pol,1) ans = -11
Para calcular producto de polinomios MATLAB utiliza una función llamada conv() (de producto de convolución). En el siguiente ejemplo se va a ver cómo se multiplica un polinomio de segundo grado por otro de tercer grado: » pol1=[1 -2 4] pol1 = 1 -2 4 » pol2=[1 0 3 -4] pol2 = 1 0 3 -4 » pol3=conv(pol1,pol2) pol3 = 1 -2 7 -10 20 -16 Para dividir polinomios existe otra función llamada deconv().
GRAFICAS MATLAB provee excelentes funciones para gráficas en dos y tres dimensiones. Veamos un par de ejemplos sencillos. Suponga que queremos trazar la gráfica de la función
Esto lo podemos lograr con las instrucciones: » x=-5:.1:5; » y=x.^2.*exp(-x.^2); » plot(x,y)
Supongamos ahora que queremos dibujar la superficie: Esto lo hacemos con la secuencia de instrucciones: » x=-5:.4:5; » y=x; » [X,Y]=meshgrid(x,y); » Z=X.^2.*exp(-Y.^2); » surf(X,Y,Z)
MATLAB dispone de cuatro funciones básicas para crear gráficos 2-D. Estas funciones se diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de ordenadas. Estas cuatro funciones son las siguientes:
REALICE LA SUMA DE LAS SIGUIENTES MATRICES Y CALCULE EL DETERMINANTE DE LA MATRIZ RESULTANTE. A= 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 B= 4 1 2 9
13 8 5 15
9 3 7 10
11 6 4 12
introducimos las matrices como lo señalamos al inicio del curso de la siguiente forma: >> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; >> B=[4 13 9 11; 1 8 3 6; 2 5 7 4; 9 15 10 12]; >> C=A+B C= 20 6 11 13
15 19 12 29
>> det(C) ans = -14809
12 13 13 25
24 14 16 13
SOLUCIÓN DE SISTEMAS LINEALES Considere el sistema lineal 3x1 – 2x2 + 5x3 = 2 2 x1 + 3 x2 – 8 x3 = 6 4 x1 + 9 x2 – 7 x3 = -1 Definimos la matriz de coeficientes y el lado derecho por las instrucciones
»A=[3 -2 5; 2 3 -8; 4 9 -7]; »B=[2 6 -1]';
>> flops(0) >> x=A\b x= 1.3105 -1.4429 -0.9635
RESOLUCION DE ECUACIONES DE CÁLCULO PARA INGENIERIA. Dado que los problemas se resuelven utilizando matemáticas simbólicas para Matlab se deben definir previamente cuales de las variables se deben trabajar como simbólicas. » syms s a w t T Hallar L{e-at} introducimos el comando y obtenemos la respuesta » laplace(exp(-a*t)) ans = 1/(s+a)
Hallar L{coswt} » laplace(cos(w*t)) ans = s/(s^2+w^2)
Determinar la solución de la ecuación diferencial. con f(0) = 6
df + 2f = 0 dt » dsolve('Df+2*f=0','f(0)=6') ans = 6*exp(-2*t)
Encontrar el valor inicial y el valor final de:
f(t) = 3e-2t + 6e-t teorema del valor final » a=laplace((3*exp(-2*t))+(6*exp(-t))) a= 3/(s+2)+6/(s-1) » b=s » c=a*b c= (3/(s+2)+6/(s-1))*s » limit(c,0) ans = 0 teorema del valor inicial c= (3/(s+2)+6/(s-1))*s » limit(c,inf) ans = 9
Conseguir la transformada inversa de laplace de:
» ilaplace(1/(s+a)^2) ans = t*exp(-a*t)
Conseguir la transformada inversa de laplace de: Fs
3s
s
2
5
4s
» ilaplace((3*s+5)/(s^2+4*s+3)) ans = 2*exp(-3*t)+exp(-t)
3
ANÁLISIS Y CONTROL DE SISTEMAS USANDO MATLAB En lo que sigue, se va a realizar una introducción a los comandos de matlab relacionados con la teoría de control de sistemas. Casi todas las funciones que se describen pertenecen al Control System Toolbox. Las funciones principales se van a explicar sobre ejemplos demostrativos, con el fin de que su uso y comprensión sean lo mas sencillos posible.
Tratamiento mediante funciones de transferencia. (Sistemas continuos) Para el ejemplo se va a partir de una descripción de una planta en forma de función de transferencia. En matlab las funciones de transferencia se introducen dando el par de polinomios numerador denominador.
num = [.2 .3 1]; den1 = [1 .4 1]; den2 = [1 .5]; den = conv(den1,den2)
Para ver los polos (o los ceros) de la función de transferencia, podemos usar: roots(den) y roots(num). Una forma mas completa de convertir una función de transferencia dada por dos polinomios numerador y denominador mediante el comando tf2zp: [ceros ,polos ,gan] = tf2zp (num,den); que devuelve un vector conteniendo los ceros de la función de transferencia, un vector conteniendo los polos, y un escalar correspondiente a la ganancia estática. La función complementaria a ésta también existe: [num,den] = zp2tf (ceros,polos,gan);
DOMINIO TEMPORAL Función step t = [0:.3:15]’; y = step(num,den,t); plot (t,y); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
DOMINIO TEMPORAL Función impulse impulse (num,den,t)
La respuesta del sistema a cualquier tipo de entrada también puede obtenerse. Para ello es necesario tener la señal de entrada en un vector u, que lógicamente deberá tener la misma dimensión que el vector de tiempos.
DOMINIO TEMPORAL En sistemas multivariables, en vez de un vector de entradas tendremos una matriz. A estos efectos se usa la función lsim. Un ejemplo característico es la respuesta a una entrada en rampa: ramp = t; y = lsim (num,den,ramp,t); plot (t,y,t,ramp); title (’Respuesta a una rampa’); xlabel (’tiempo(seg)’);
DOMINIO TEMPORAL Otro ejemplo característico es la respuesta a un ruido uniforme aleatorio. Es importante darse cuenta del filtrado que se produce en la señal cuando pasa por el sistema (hace de filtro paso bajas). noise = rand (size(t)); y = lsim (num,den,noise,t); plot (t,y,t,noise); title (’Respuesta a un ruido aleatorio’); xlabel (’tiempo(seg)’);
DOMINIO FRECUENCIAL La respuesta en frecuencia de los sistemas se puede obtener usando las funciones bode, nyquist y nichols.
Función bode A continuación se presentan ejemplos de las tres posibles sintaxis de la función bode: 1.- bode(num,den) 2.- [mag,phase,w] = bode (num,den) 3.- [mag,phase] = bode (num,den,w)
DOMINIO FRECUENCIAL Función nyquist El comando nyquist tiene la misma sintaxis: nyquist (num,den,w); [re,im] = nyquist (num,den,w);
DOMINIO FRECUENCIAL Función nichols nichols (num,den,w), ngrid; [mag,phase] = nichols (num,den,w);
MÁRGENES DE ESTABILIDAD Como es bien sabido en la teoría clásica del control, los márgenes de estabilidad son el margen de fase y el margen de ganancia. Estos márgenes se calculan usando el comando margin. margin (num,den); [mg,mf,wmg,wmf] = margin (num,den);
EFECTOS DE LOS RETARDOS Los retardos existen en numerosas aplicaciones de control automático. En sistemas lineales continuos invariantes en el tiempo, el retardo viene representado por e−sT . La forma más sencilla de manipular los retardos en matlab es en el dominio de la frecuencia. Por ejemplo:
num = [0.2 0.3 1]; den = [1 0.9 1.2 0.5]; T = 1; % Tiempo de retardo puro w = logspace (-2,1,100)’; [mag,fase] = bode (num,den,w); faseDelay = fase - (T*w*180/pi); subplot(211); semilogx (w, 20*log10(mag)); grid; subplot(212); semilogx (w, [fase, faseDelay]); grid;
COMANDOS RELACIONADOS CON OPERACIONES DE BLOQUES Existen una serie de comandos relacionados con las operaciones típicas en diagramas de bloques: – [N12,D12] = series (N1,D1,N2,D2): Devuelve la resultante de colocar en serie dos Funciones de transferencia
– [N12,D12]
= series (N1,D1,N2,D2): Devuelve la resultante de colocar en serie dos Funciones de transferencia
COMANDOS RELACIONADOS CON OPERACIONES DE BLOQUES [Nbc,Dbc] = feedback (N1,D1,N2,D2,-1): A partir de un sistema en bucle abierto, dado por el numerador y denominador N1,D1, proporciona el correspondiente en bucle cerrado, considerando que en la cadena de realimentación hay otra función de transferencia, dada por N2, D2
– [Nbc,Dbc]
= cloop (N1,D1,-1): En el caso en que se pretenda obtener la función de transferencia en bucle cerrado con realimentación unitaria, puede emplearse este comando mías compacto, en el que se evita tener que especificar una segunda función de transferencia.
LUGAR DE LAS RAÍCES El análisis mediante el lugar de las raíces se puede obtener definiendo un vector de ganancias deseadas (que es el parámetro usado habitualmente para ver la evolución de los polos en bucle cerrado). Lá sintaxes ES: r = rlocus (N,D,K); rlocus (N,D);
[K,polos] = rlocfind (num,den)
LUGAR DE LAS RAÍCES Otra utilidad para ver la sobre oscilación que correspondería a un par de polos complejos conjugados situados en el lugar, seria dibujar los lugares geométricos de factor de amortiguamiento y (δ) frecuencia natural (ωn) constantes, mediante el comando sgrid.
ESTUDIO TEMPORAL Y FRECUENCIAL DE SISTEMAS DE PRIMER Y SEGUNDO ORDEN Sistemas de primer orden La representación en forma de función de transferencia viene dada por:
G(s)= K 1+tS que en notación matlab se introduce: K = 1; tau = 1; num = K; den = [tau 1]; La respuesta a un escalón unitario es: t = [0:0.1:10]’; ye = step(num,den,t); plot(t,ye); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
Sistemas de segundo orden La representación normal de un sistema de segundo orden en forma de función de transferencia viene dada por:
donde: K: ganancia estática del sistema. Se va a suponer en el análisis siguiente, sin perdida de generalidad, que K = 1. δ: Coeficiente de amortiguamiento. wn: Frecuencia natural no amortiguada del sistema.
Caso 1: Si δ > 1 → 2 raíces reales distintas (sobre amortiguado).
t = [0:0.2:20]’; wn = 1; d = 2; num = [wn^2]; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
Caso 2: Si δ = 1 → 2 raíces reales iguales sistema críticamente amortiguado.
d = 1; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
Caso 4: Si δ = 0 → Respuesta oscilatoria. Sistema críticamente estable. Raíces en eje imaginario. d = 0; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (’Respuesta a un escalon unitario’); xlabel (’tiempo(seg)’); grid;
Caso 5: Sistema inestable d = -0.1; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot(t,ye); title (’Respuesta a un escalon unitario’); xlabel (’tiempo(seg)’); grid;
Caso 3: Dos raises complejas conjugadas d = 0.5; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
Se puede también analizar para este tercer caso de dos raíces complejas el efecto de modificar el factor de amortiguamiento. Se muestra para valores δ = {0.1, 0.2, ...0.9} t = [0:0.2:20]’; wn = 1; vectDelta = [0.1:0.1:0.9]; num = wn^2; Y = []; for ind = 1:length(vectDelta) d = vectDelta(ind); den = [1,2*d*wn,wn^2]; y = step (num,den,t); Y = [Y, y]; end plot (t,Y); title (’Respuesta a un escalón unitario’); xlabel (’tiempo(seg)’); grid;
Se mantiene el valor de δ = 0.2 para el siguiente análisis: d = 0.2; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); La salida del sistema viene dada por la ecuación:
Los parámetros característicos del transitorio vienen dados por:
Análisis del efecto de un cero en la respuesta temporal de un sistema de segundo orden Los ceros afectan al valor de la ganancia y a la forma de respuesta transitoria, pero no a la estabilidad. Supongamos la función de transferencia siguiente:
Función rltool Este comando facilita el estudio de la función de transferencia de una planta y esta disponibles en versiones de Matlab superiores al 5.3.
RESUMEN DE LOS COMANDOS MAS IMPORTANTES DEL CONTROL SYSTEM TOOLBOX
RESUMEN DE LOS COMANDOS MAS IMPORTANTES DEL CONTROL SYSTEM TOOLBOX
RESUMEN DE LOS COMANDOS MAS IMPORTANTES DEL CONTROL SYSTEM TOOLBOX
INTRODUCCIÓN AL SIMULINK Simulink es una herramienta para la simulación de sistemas dinámicos. Esto es decir que resuelve ecuaciones diferenciales ordinarias usando métodos numéricos (Euler, Runge Kuta, etc.). Los sistemas dinámicos (representados por ecuaciones diferenciales) se deben introducir a este programa por medio de su descripción en diagramas de bloques. La descripción por diagrama en bloques usa líneas para representar variables y bloques para representar funciones. Las líneas son usadas para interconectar los bloques entre sí.
Librería de bloques. Para la elaboración del diagrama de bloques, se dispone de una librería de bloques. Ésta librería se invocará ejecutando el siguiente comando: » simulink En la siguiente figura se puede ver la ventana que se abre en consecuencia.
AGREGAR UN BLOQUE AL ÁREA DE TRABAJO
UNIR BLOQUES CON UNA LINEA
BLOQUES MÁS COMUNES
BLOQUES MÁS COMUNES
BLOQUES MÁS COMUNES
que puede ser escrita en forma integral:
EJEMPLO ELEMENTAL ELEMENTAL Supóngase que desee ver una curva senoidal y su integral en el tiempo. Esto responde a la siguiente ecuación diferencial: que puede ser escrita en forma integral:
PARÁMETROS PARÁMETROS DE SIMULACIÓN
PID. DESCRIPCIÓN Y REGLAS HEURÍSTICAS DE SINTONIZACIÓN SINTONIZACIÓN Para comenzar abordaremos el problema del control de un sistema simple de primer orden con retardo, definido por la función de transferencia.
donde k representa la ganancia estática del sistema, t es su constante de tiempo y L es el retardo del mismo. Comenzaremos viendo la respuesta de este sistema a lazo abierto ante una entrada en escalón, y para ello construiremos el siguiente sistema en SIMULINK
CONTROLADOR PID
CONTROL A LAZO CERRADO.
View more...
Comments