FACULTAD DE INGENIERA DE SISTEMAS E INFORMTICA Departamento Acadmico de Sistemas e Informtica
GUA USO DEL MATLAB EN SISTEMAS DE CONTROL
Asignaturas: INGENIERA DE CONTROL CONTROL POR COMPUTADORA
Docente:
Ing. BUENAVENTURA RIOS RIOS __________________________ Tarapoto, PER 2012 2
PREFACIO MATLAB es un programa de gran aplicacin en ingeniera, diseado para realizar clculos numricos con vectores y matrices, grficos en dos y tres dimensiones, as como, posee un lenguaje de programacin propio. MATLAB es una abreviatura de MATrix LABoratory. Dentro de las mltiples herramientas que ofrece MATLAB, tambin se encuentra una librera denominada Simulink, que permite precisamente la simulacin de procesos mediante diagramas de bloques, que son de mucha utilidad para la Teora de Control y la Ingeniera de Control. Siempre se ha dicho, modelar un sistema es expresar ese sistema en forma matemtica, es decir, a travs de ecuaciones diferenciales (que contienen derivadas de orden n), porque representan a procesos o fenmenos dinmicos, que estn en permanente cambio y movimiento. Luego, haciendo uso de la Transformada de Laplace podemos pasar cualquier ecuacin diferencial escrita en trminos generalmente del tiempo (t) a trminos de la variable S, que es una variable compleja. En suma, se puede expresar en forma de una Funcin de Transferencia, que relaciona la salida con la entrada del sistema, con un polinomio en el numerador y otro en el denominador llamada ecuacin caracterstica que es clave para determinar la estabilidad de los sistemas. MATLAB como herramienta de clculo nos permite operar con los polinomios, pasarla de una forma a otra, como por ejemplo, expresar la funcin de transferencia como producto de races o expandirla en sus fracciones parciales y viceversa; los polinomios se escriben como vectores y el conjunto de vectores como matrices, lo que le confiere mucha versatilidad como herramienta de clculo matemtico. Los sistemas pueden representarse adems como diagramas de bloques, los que se pueden reducir y/o simplificar, pero sobre todo se pueden simular haciendo uso del subprograma Simulink, en la que podemos observar grficamente cmo evolucionan las diferentes variables que representan el funcionamiento dinmico del Sistema. El ingeniero de sistemas no solo debe tener una concepcin holstica de los sistemas, sino debe ser capaz de modelarlo, es decir, de expresarlo matemticamente y conocer su funcionamiento simulando su comportamiento. Para eso, MATLAB y Simulink constituyen una poderosa herramienta.
3
Conociendo MATLAB Como ya se ha dicho, MATLAB es un programa para realizar clculos numricos con vectores y matrices, as como, realizar grficas en dos y tres dimensiones. Adems, puede simular procesos para efectos de control.
VENTANA INICIAL
MATLAB se puede iniciar como cualquier otro programa, haciendo doble CLICK en el cono correspondiente. Al iniciarse aparecer una Ventana parecida a la que se muestra en la Figura 1:
Figura 1: Ventana INICIAL de MATLAB
En ella se pueden observar varias alternativas como: Command Windows, Current Directory, Command History y Workspace. De ellos el ms importante es el Command Windows (Ventana de Comandos), porque all se trabaja y se ejecutan los comandos del MATLAB. Current Directory.- Es el Directorio Actual, el que se utiliza en el momento, muestra los ficheros con extensin *.m en forma ordenada por fechas, tamaos, nombres, etc. 4
Command History.- Ofrece acceso a las sentencias que se ejecutaron anteriormente en el Command Windows, lo que facilita la seleccin de dichas sentencias cuando se desea repetir. Se puede hacer un Copy. Workspace.- Es el Espacio de Trabajo del MATLAB, contiene informacin sobre las variables y sus valores guardados en la memoria, los que se pueden visualizar y modificar. (>>Whos). La disposicin que se muestra en esta Ventana puede ser cambiada por el usuario a travs de la opcin Desktop Layout del Men Principal. Se tienen varias opciones: - Default: Por defecto. - Command Windows Only: Presenta slo la Ventana de Comandos. - History and Command Windows: Presenta Command Windows y Command History. - All Tabbet. - All but Command Windows Minimized: Todos minimizados en el Command Windows. Es importante hacer mencin a la opcin Editor, a la cual se accede a travs de Desktop/Editor. En esta ventana se puede trabajar un Programa MATLAB, redactando paso a paso un borrador, para despus hacerlo correr en el Command Windows. Ver Figura 2.
Figura 2: Acceso al EDITOR
Tambin revierte importancia el uso de la opcin Start (inicio), ubicado en la parte inferior izquierda del Men Principal, que nos permite el acceso inmediato a algunas capacidades de MATLAB. Para salir del MATLAB basta con escribir en el Prompt del Command Windows quit o exit. Tambin se puede elegir exit en el Men File. 5
VENTANA COMMAND WINDOWS La presencia del smbolo (>>) en la pantalla del Command Windows indica que el programa est listo para recibir instrucciones y ejecutarlas.
Figura 3: Ventana COMMAND WINDOWS
Veamos la potencialidad de Command Windows a travs del siguiente ejemplo: >> A=rand(6), B=inv(A), B*A A = 0.8147 0.2785 0.9572 0.7922 0.6787 0.7060 0.9058 0.5469 0.4854 0.9595 0.7577 0.0318 0.1270 0.9575 0.8003 0.6557 0.7431 0.2769 0.9134 0.9649 0.1419 0.0357 0.3922 0.0462 0.6324 0.1576 0.4218 0.8491 0.6555 0.0971 0.0975 0.9706 0.9157 0.9340 0.1712 0.8235
A es una matriz aleatoria 6x6, mientras que B es una matriz inversa de A. El producto de ambos B*A da como respuesta (ans) una matriz identidad. MATLAB resuelve operaciones en Megaflops (Millones de operaciones aritmticas por segundo). Por ejemplo hagamos el clculo para las siguientes operaciones y mostremos los resultados. >> n=1000; A=rand(n); B=rand(n); C=zeros(n); %matrices 1000x1000 >> tini=clock; C=B*A; tend=clock; mflops=(2*n^3)/1000000; >> mflops/etime(tend,tini) %Calcula Megaflops con "etime" ans = 3.2895e+003
OPERACIONES CON MATRICES Y VECTORES
MATLAB es bsicamente un programa de clculo matricial potente. Recomendaciones: 1. Utilizar letras MAYUSCULAS para identificar matrices. 2. Utilizar letras MINUSCULAS para identificar vectores y escalares. Reglas para las Matrices: - Las Matrices se introducen por filas - Los elementos de una fila se separan por espacios en blanco o comas (,). - Las filas se separan por puntos y coma (;). OPERACIONES BASICAS Se muestran en la Tabla a continuacin: 7
Expresin en MATLAB OPERACIN + Suma aritmtica - Resta aritmtica * Multiplicacin aritmtica (.*): elemento a elemento / Divisin derecha \ Divisin izquierda (con un escalar) ^ Elevar un nmero a una potencia Traspuesta < Relacin menor que > Relacin mayor que <= Relacin menor igual que >= Relacin mayor igual que & Producto lgico (operacin AND) | Suma lgica (operacin OR) ~ Negacin Tabla N 1
Ejemplos: >> A=[1 2;3 4] % Matriz A 2x2 A = 1 2 3 4
>> A*2 % Multiplicacin por el escalar 2. ans = 2 4 6 8
>> A+4 % Sumar a la Matriz A el escalar 4. ans = 5 6 7 8
>> A-4 % Restar a la Matriz A el escalar 4 ans = -3 -2 -1 0 8
Otros ejemplos:
>> A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9
>> A' % Matriz traspuesta de A ans = 1 4 7 2 5 8 3 6 9
>> B=inv(A) % Matriz inversa de A B = 0.1803 0.2213 -0.1885 0.1311 0.0246 0.0902 9
-0.0984 0.1066 0.0574
>> B*A % Para probar que B*A es la Matriz Identidad. ans = 1.0000 0.0000 -0.0000 0 1.0000 0.0000 0 -0.0000 1.0000
Practiquemos:
Definicin del Vector Fila x: >> x=[10 20 30] % Vector Fila "x" x = 10 20 30
>> y=[5;10;15] % Vector Columna "y" y = 5 10 15
>> x+y % Operacin indebida, no se puede sumar un vector fila con otro vector columna. ??? Error using ==> plus Matrix dimensions must agree.
>> y' % Traspuesta del Vector Columna "y" ans = 5 10 15
>> x+y' % Ahora si se puede sumar dos vectores fila. ans = 15 30 45
Clc : Pone en blanco la pantalla del Command Windows. Clear : Elimina todas las variables de Workspace. Clear x : Elimina la variable x del Workspace. Who : Lista las variables del Workspace. 10
GRAFICAS EN 2 DIMENSIONES
Para graficar en dos dimensiones el MATLAB utiliza la funcin plot. Existen adems otras funciones que nos permiten colocar el ttulo del grfico, colocar nombre al eje x y al eje y, grillar o cuadricular el dibujo y colocar textos en cualquier punto de la grfica. Estas son:
title (TITULO) : Aade un ttulo al grfico. xlabel(ejeX) : Aade un nombre al eje X. ylabel(ejeY) : Aade un nombre al eje Y. text(x,y,Prueba) : Agrega un nombre en la coordenada (x,y). gtext(prueba) : Agrega texto en un punto del grfico con el mouse. grid : Incluye cuadrculas al grfico. grid off : Elimina cuadrculas del grfico.
>> x=[-10:0.2:10]; % Define vector x. >> y=sin(x); % Define la funcin seno de x. >> close % Cierra la ventana grfica activa anterior. >> plot(x,y) % Grafica la funcin y=seno(x). >> grid % Coloca cuadrcula
Figura 5: Funcin seno(x)
Colocamos ttulo, nombres a los ejes y texto en las cuadrculas.
>> x=[-10:0.2:10]; >> y=sin(x); >> close >> plot(x,y) >> grid >> title('GRAFICO DE LA FUNCION SENO') >> xlabel('EJE DE LAS ORDENADAS') >> ylabel('EJE DE LAS ABCISAS') >> gtext('Funcin Seno')
12
Figura 6: Funcin Seno con textos indicadores
OPERACIONES CON POLINOMIOS
Cuando se modelan sistemas obtendremos ecuaciones diferenciales de orden n, cuyas soluciones no siempre son fciles de encontrar, por lo que se aplica sobre ellas la Transformada de Laplace que las convierte en ecuaciones algebraicas (polinomios) en trminos de la variable s (compleja). Conocer como se manipulan los polinomios en MATLAB es el objetivo de esta seccin.
REPRESENTACIN DE POLINOMIOS
Supngase los siguientes polinomios:
P 1 (s) = s 4 + 3s 3 15s 2 - 2s + 9 P 2 (s) = s 3 + 5 P 3 (s) = (s+1+j)(s+1-j)(s+5)
Para representarlos en MATLAB los polinomios deben ser completos, es decir, deben tener todos sus coeficiente y en el caso de no tenerlos se lo reemplaza por cero (0).
>> p1=[1 3 -15 -2 9]; % El polinomio se representa por un vector. >> p2=[1 0 0 5]; % Se agregan ceros en las potencias de "s" que faltan. >> p3=poly([-1+j;-1-j;-5]); % Se utiliza la funcin poly.
13
EVALUACIN DE POLINOMIOS
Deseamos encontrar el valor del polinomio P(s) = s 3 + 5 cuando s=2. La respuesta debe ser: P(2)=(2) 3 +5=13.
>> p2=[1 0 0 5]; >> polyval(p2,2) ans = 13
Ejercicio.- Supngase el polinomio: g(x) = -x 5 +3x 3 -2.5x 2 -2.5, evaluado en el intervalo [0,5].
>> x=0:5/200:5; % Graficar 201 puntos en el intervalo de [0,5]. >> a=[-1 0 3 -2.5 0 -2.5]; % Define los coeficientes completos del polinomio. >> g=polyval(a,x); % Genera el polinomio para los diferentes valores de x. >> plot(x,g); >> title('FUNCION POLINOMICA') >> grid
Figura 7: Grfica de la Funcin Polinmica
SUMA DE POLINOMIOS
Sean los polinomios: g(x)=x 4 -3x 2 -x+2.4 y h(x)=4x 3 -2x 2 +5x-16. Se desea sumar y multiplicar f(x) por el escalar 3.
>> h=[0 4 -2 5 -16]; % Definimos la funcin h(x) y completamos con cero la potencia de 5. >> s=g+h % Suma de g(x) y h(x). s = 1.0000 4.0000 -5.0000 4.0000 -13.6000
>> f=3*h % Multiplicacin de h(x) por el escalar 3. F = 0 12 -6 15 -48
MULTIPLICACIN Y DIVISIN DE POLINOMIOS
Estas operaciones no son tan sencillas, se requiere el uso de las funciones conv(a,b) y deconv(n,d). Supngase que se desea hallar el siguiente producto:
g(x)=(3x 3 -5x 2 +6x-2)(x 5 +3x 4 -x 2 +2.5)
>> a=[3 -5 6 -2]; % vector del primer Polinomio. >> b=[1 3 0 -1 0 2.5]; % vector del segundo polinomio. >> g=conv(a,b) % Producto de los polinomios. g = 3.0000 4.0000 -9.0000 13.0000 -1.0000 1.5000 -10.5000 15.0000 -5.0000
El resultado es: q(x)=3x 3 -5x 2 +6x-2 y su residuo r(x)=0.
RAICES DE POLINOMIOS
En muchos problemas de ingeniera se requiere conocer las races de los polinomios, los que se obtienen expresando la forma extendida del polinomio en forma de productos. Si el polinomio es de la forma y=f(x), las races sern los valores de x para los que y=0. 15
Ejemplo.- Sea el polinomio: f(x)=x 2 +x-6= (x+3)(x-2). Haciendo y=f(x)=(x+3)(x-2)=0, entonces los valores de x para que y=f(x)=0 son: x=-3 y x=2.
La funcin MATLAB para obtener las races de un polinomio es roots(a) donde a es el vector de coeficientes del polinomio.
Ejemplo.- Sea la funcin: f(x)=x 3 -2x 2 -3x+10. Hallar las races usando MATLAB.
>> p=[1 -2 -3 10]; >> roots(p) % Races del polinomio p. ans = -2.0000 2.0000 + 1.0000i 2.0000 - 1.0000i
Las races del polinomio son: x=-2, x=2+i y x=2-i. Entonces:
f(x)=(x+2)(x-2-i)(x-2+i).
Si tenemos las races del polinomio y deseamos encontrar los coeficientes del polinomio, en ese caso utilizamos la funcin poly(r).
Ejemplo.- Sea el polinomio expresado en forma de races: f(x)=(x-1)(x+1)(x-3). Hallar los coeficientes del polinomio.
>> a=poly([-1 1 3]) % Las races son (x+1),(x-1) y (x-3), o sea: x=-1, x=1, x=3. a = 1 -3 -1 3
El polinomio es: f(x)=1x 3 -3x 2 -1x+3.
16
CONVERSIONES DE FUNCIONES DE TRANSFERENCIA
La Funcin de Transferencia de un Sistema de Control est formada por un polinomio en el numerador y otro polinomio en el denominador. Las races del polinomio denominador (ecuacin caracterstica) son claves para determinar la estabilidad de los sistemas. De all la importancia de poder manipular los polinomios haciendo las conversiones necesarias.
X(s) Y(s)
La Funcin de Transferencia es la relacin entre la salida Y(s) y la entrada X(s) del sistema representado por la funcin G(s) en el bloque que se muestra.
DETERMINACION DE LA FUNCION DE TRANSFERENCIA G(s).
Las races del numerador Y(s) se denominan ceros y las races del denominador se denominan polos. Los polos son de suma importancia para determinar la estabilidad de los sistemas de control. La funcin printsys define la Funcin de Transferencia.
Ejemplo.- Sea: G(s) = (2s+3)/(s 2 +3s+6). Expresarlo a travs del MATLAB.
>> ng=[2 3]; % Numerador de G(s). >> dg=[1 3 6]; % Denominador de G(s). >> printsys(ng,dg) % Funcin de Transferencia.
num/den = 2 s + 3 ------------- s^2 + 3 s + 6
Para determinar los polos y ceros de G(s) se utiliza la funcin pzmap(ng,dg) de la siguiente forma:
>> [polos,ceros]=pzmap(ng,dg) polos = -1.5000 + 1.9365i -1.5000 - 1.9365i
G(s)=Y(s)/X(s) 17
ceros = -1.5000
Para visualizar grficamente en el Plano S los polos (x) y ceros (o) se procede de la siguiente manera:
>> pzmap(ng,dg) % Visualiza en el Plano S los polos y ceros.
Figura 8: Polos (x) y ceros(o) en el Plano S.
CONVERSIONES DE LA FUNCION DE TRANSFERENCIA
La Funcin de Transferencia de un sistema puede expresarse de diversas formas: Polinomial, cero-polo-ganancia (por races) y extendida en fracciones parciales.
CONVERSION DE POLINMICA A CERO-POLO-GANANCIA Determina los valores de los ceros (z), polos (p) y la constante k que multiplica al numerador de G(s). En muchos caso k=1. Se utiliza la funcin tf2zp. >> num=[1 6 8]; % Polinomio del Numerador. >> den=[1 2 -5 -6]; % Polinomio del Denominador. >> [z,p,k]=tf2zp(num,den) % z=ceros, p=polos y k=ganancia. 18
z = -4 -2
p = 2.0000 -3.0000 -1.0000
k = 1
Se obtienen los ceros: (s+4) y (s+2) Se obtienen los polos: (s-2), (s+3) y (s+1). Se obtiene la constante K: k=1.
CONVERSION DE CERO-POLO-GANANCIA A POLINMICA
Determina los valores num y den que contienen los coeficientes del numerador y denominador de G(s), con las potencias de s en forma descendente. Se utiliza la funcin zp2tf.
>> z=[-2;-4]; % Se determinan los ceros de G(s) y se separan con (;). >> p=[-1 2 -3]; % Se determinan los polos de G(s). >> k=1; % La constante en este caso es 1. >> [num,den]=zp2tf(z,p,k) % Convierte de cero-polo ganancia a polinmica.
num = 0 1 6 8
den = 1 2 -5 -6
Se obtiene el numerador: s 2 +6s+8 Se obtiene el denominador: s 3 +2s 2 -5s-6.
19
CONVERSIN DE POLINMICA A FRACCIONES PARCIALES
Se obtienen las Fracciones Parciales utilizando la funcin residue. Con ella se encuentra los valores del residuo (r), polos (p) y los trminos directos (k).
>> B=[1 6 8]; % Define el numerador de G(s). >> A=[1 2 -5 -6]; % Define el denominador de G(s). >> [r,p,k]=residue(B,A) % Convierte de polinmica a fracciones parciales. r = -0.1000 1.6000 -0.5000
p = -3.0000 2.0000 -1.0000
k = []
Se obtienen los residuos: -0.1,1.6 y -0.5. Se obtienen los polos para cada residuo: (s+3), (s-2) y (s+1). No hay trminos directos: k=0.
CONVERSIN DE FRACCIONES PARCIALES A POLINOMICA
Se convierte de los residuos (r), polos (p) y valor directo (k) el numerador (num) y el denominador (den) de la Funcin de Transferencia G(s).
>> r=[-0.1 1.6 -0.5]; % Define los residuos dela fracciones parciales. >> p=[-3 2 -1]; % Define los polos de cada Fraccin Parcial. >> k=[]; % Define el valor directo de k, en este caso k=0. >> [num,den]=residue(r,p,k) % Convierte de Fracciones Parciales a Polinmica.
num = 1 6 8
20
den = 1 2 -5 -6
Se obtiene el numerador: 1s 2 +6s+8 Se obtiene el denominador: 1s 3 +2s 2 -5s-6.
REDUCCIN DE DIAGRAMAS DE BLOQUES
Nos permite simplificar un sistema de muchos bloques (subsistemas) en un solo Bloque Equivalente que realiza la misma funcin.
Bloques en Serie (cascada):
Sea el siguiente esquema de bloques en serie:
=
Si G 1 (s)=2/(s+5) y G 2 (s)= 3/s(s+6), se desea hallar la ecuacin del bloque equivalente. >> n1=2;d1=[1 5]; % Ganancia G1. >> n2=3;d2=poly([0 -6]); % Ganancia G2 en serie con G1. >> [neq,deq]=series(n1,d1,n2,d2); % Obtiene el numerador y denominador del Bloque equivalente. >> printsys(neq,deq) num/den = 6 ------------------------- s^3 + 11 s^2 + 30 s
Bloques en Paralelo:
+ R(s) C(s) +
G 1 (s) G 2 (s) Geq(s) G 1 (s) G 2 (s) 21
Si G 1 (s)=2/(s+5) y G 2 (s)= 3/s(s+6), se desea hallar la ecuacin del bloque equivalente.
>> n1=2; d1=[1 5]; % Ganancia G1. >> n2=3; d2=poly([0 -6]); % Ganancia G2 en paralelo con G1. >> [neqp,deqp]=parallel(n1,d1,n2,d2); % Obtiene el bloque Equivalente paralelo. >> printsys(neqp,deqp) num/den =
2 s^2 + 15 s + 15 ------------------------- s^3 + 11 s^2 + 30 s
Bloque Realimentado:
R(s) C(s) + -
Si G 1 (s)=2/(s+5) y G 2 (s)= 3/s(s+6), se desea hallar la ecuacin del bloque equivalente.
Simplificacin de Bloques en cascada con races comunes.
>> n1=[1 1];d1=[1 5]; % Ganancia del primer bloque. >> n2=[1 5];d2=[1 2 3]; % Ganancia del segundo bloque. >> [ns,ds]=series(n1,d1,n2,d2); % Producto de los bloques en cascada. >> printsys(ns,ds) % Presenta el bloque equivalente sin simplificar. num/den = s^2 + 6 s + 5 ----------------------------- s^3 + 7 s^2 + 13 s + 15
>> [nss,dss]=minreal(ns,ds); % Para simplificar ceros con races. 1 pole-zero(s) cancelled >> printsys(nss,dss) % Presenta bloque equivalente simplificado. num/den = s + 1 ---------------- s^2 + 2 s + 3
RESPUESTA DE SISTEMAS DE CONTROL EN EL TIEMPO
La respuesta de los sistemas de control en el tiempo muestra grficamente el comportamiento de los sistemas ante una seal de entrada, lo cual nos permite realizar una evaluacin inicial de la estabilidad del mismo antes de su implementacin prctica.
Respuesta al Escaln Unitario:
Dado un sistema como el que se muestra en el diagrama de bloques siguiente:
r(t) y(t)
S+1 S+5 S+5 S 2 +2s+3 G(t) 23
Se desea conocer la respuesta en el tiempo y(t) del sistema cuando se le excita con una seal de entrada r(t) escaln unitario. Para lo cual se utiliza la funcin step con la siguiente forma:
[y,x,t]=step(num,den)
[y,x,t]=step(num,den,t)
num: numerador de G(t). den: denominador de G(t). y: vector que contiene los valores de la salida y(t). x: vector que contiene los valores de la variable interna del sistema. t: vector que contiene el rango de tiempo de observacin del sistema.
Ejemplo: Hallar y graficar y(t).
Controlador Planta r(t) y(t) + -
El controlador tiene una ganancia G 1 (t). La planta tiene una ganancia G 2 (t).
>> n1=6.3*poly([-1.4;-1.4]);d1=[0 1 0]; % ganancia del controlador. >> n2=1;d2=poly([0;-1;-5]); % ganancia de la planta. >> [ns,ds]=series(n1,d1,n2,d2); % realiza el producto de las ganancias G1(s) y G2(s). >> [nlc,dlc]=cloop(ns,ds); % Halla el bloque equivalente realimentado. >> printsys(nlc,dlc) % muestra la funcin de transferencia del sistema realimentado.
>> step(nlc,dlc) % grafica la respuesta en el tiempo de la salida y(t).
Figura 9: Respuesta en el tiempo y(t).
27
Respuesta al Impulso:
>> n1=6.3*poly([-1.4;-1.4]);d1=[0 1 0]; % ganancia del controlador. >> n2=1;d2=poly([0;-1;-5]); % ganancia de la planta. >> [ns,ds]=series(n1,d1,n2,d2); % realiza el producto de las ganancias G1(s) y G2(s). >> [nlc,dlc]=cloop(ns,ds); % Halla el bloque equivalente realimentado. >> printsys(nlc,dlc) % muestra la funcin de transferencia del sistema realimentado.
>>[y,x,t]=impulse(nlc,dlc); % Respuesta a la funcin impulso. >> impulse(nlc,dlc); % grafica la salida y(t) cuando r(t) es la funcin impulso.
Figura 10: Respuesta y(t) a la funcin Impulso.
Respuesta a la funcin Rampa:
Considerando que r(s)=1/s 2 , entonces se aplicar la funcin escaln a la funcin G(s)/s.
R(s) Y(s)
G(s) s 28
Ejemplo: Considerar G(s)=1/(s 2 +s+1) con R(s)=1/s 2 .
R(s)=1/s Y(s)
>> n=1;d=[1 1 1 0]; % numerador de G(s)/s. >> t=0:0.1:7; % asignacin del rango del tiempo. >> y=step(n,d,t); % calculo de la salida y(t). >> step(n,d)
Figura 11: Respuesta Y(t) a la funcin Rampa.
Respuesta a otro tipo de Entrada:
Para este efecto se utiliza la siguiente relacin:
[ y , x ]= lsim(num,den,r,t)
Donde la salida (y), entrada (r) y el tiempo (t) son los parmetros del sistema.
1 s 3 +s 2 +s 29
R(s) Y(s) r(t) y(t)
Ejemplo: Hallar la respuesta de G(s)= (5s+1)/(2s+3) cuando la entrada r(t)=0.2sen(5t+2) cuando t vara entre [0,10].
>> n1=[5 1];d1=[2 3]; % numerador y denominados de la funcin de transferencia. >> t=0:0.05:10; % definicin del rango del tiempo. >> r=0.2*sin(5*t+2); % definicin de la seal de entrada r(t). >> [y,x]=lsim(n1,d1,r,t); % clculo de la salida y(t). >> lsim(n1,d1,r,t)
Figura 12: Respuesta y(t) a una entrada senoidal.
G(s) 30
SIMULANDO CON SIMULINK
EL ENTORNO SIMULINK
Simulink es una librera del MATLAB que nos permite la simulacin de sistemas de control. Es bsicamente un entorno grfico que hace uso de diagramas de bloques para analizar y evaluar el comportamiento dinmico de los sistemas. Para acceder a la librera Simulink, primero se debe abrir la ventana Command Windows de MATLAB (ver Figura 13).
Figura 13: Ventana principal del Simulink.
Luego se escribe la palabra simulink despus del prompt (>>) y se aprieta la tecla Enter o en su defecto hacer click en el smbolo correspondiente de la barra de herramientas en la parte superior de la ventana. Inmediatamente aparecer la ventana de la Figura 14 que muestra las diversas libreras del Simulink. En ella distinguimos dos partes: La izquierda, que muestra el conjunto de temas (toolboxes) del Simulink y, a la derecha, el juego de bloques del Toolbox Simulink que contiene a su vez los bloques especficos para la simulacin de sistemas de control (Commonly Used Blocks, Continuous, Discrete, Math Operations, Sources, Sinks, etc.). 31
Figura 14: Libreras del Simulink.
Los bloques ms utilizados del Simulink se muestran en la Figura 15.
Figura 15: Bloques ms utilizados del Simulink.
32
Funciones de cada Bloque:
BLOQUE
LIBRERIA
FUNCIN Constante Sources Seal de entrada constante Escaln (Step) Sources Seal de entrada Escaln Rampa (Ramp) Sources Seal de entrada Rampa. Senoidal Sources Seal de entrada senoidal. Workspace Sinks Almacena datos de la seal que llega al Bloque. Scope Sinks Grafica la seal con respecto al tiempo. XYgraph Sinks Grafica las entradas en el eje X y el eje Y. Transfer Fcn Continua Funcin de Transferencia de lazo abierto. Integrador Continua Integra la seal que recibe. Ganancia (Gain) Math Amplifica la seal de entrada. Sumador (Sum) Math Suma dos o ms seales. PID Simulink extras Controlador proporcional, integral y derivativo. Mux, Demux Signals & System Multiplexor/Demultiplexor de seales.
Para implementar un Modelo de Simulacin se debe ingresar al Campo de Trabajo (Untitled) del Simulink, esto se logra siguiendo la secuencia File/New/Model, que nos muestra una ventana especial para la diagramacin y la simulacin. Hacia este campo deben ser arrastrados los bloques desde el Toolbox de Simulink, para lo cual se requiere que ambas ventanas aparezcan en la misma pantalla, tal como se muestra en la Figura 16.
Figura 16: Librera Browser y campo Untitled 33
Ejemplo 1.- Funcin de Transferencia a Lazo Abierto Evaluar el comportamiento a lazo abierto del sistema de Primer Orden definida por la siguiente ecuacin: A 1 (dy/dx) + A 0 y = Bx. Si A 1 =1, A 0 =2 y B=2. Analizar la respuesta a la funcin Escaln Unitario.
Solucin: Aplicando la transformada de Laplace se obtiene la Funcin de Transferencia:
El diagrama de bloques a lazo abierto queda como sigue:
X(s) Y(s)
PROCEDIMIENTO DE SIMULACIN:
PASO 1.- Desde la ventana inicial de Simulink elegimos la opcin File/New/Model o digitamos >>simulink, apareciendo directamente la ventana Untiled (Figura 17).
Figura 17: Ventana Untiled del Simulink.
1 0.5s+1 34
PASO 2.- Para trabajar en la Ventana Untiled necesitamos recurrir al Simulink Library Browser, librera que contiene los bloques necesarios para la simulacin. Se recurre entonces a la barra Men de Untiled siguiendo la opcin View/library, mostrndonos la pantalla compuesta que se muestra en la Figura 18. Luego se arrastran los bloques Funcin de Transferencia (Transfer Fcn), funcin Escaln (Step) y el Osciloscopio (Scope) desde la librera correspondiente hacia el campo de trabajo Untiled.
Figura 18: Librera de Simulink y campo de trabajo Untiled.
PASO 3.- Interconexin de los elementos. Debe hacerse un arrastre con el ratn desde la salida de uno de los bloques hasta la entrada del siguiente, como se observa en la Figura 19.
Figura 20: Interconexin de bloques. 35
PASO 4.- Modificacin de parmetros de los bloques. Los parmetros se asignan haciendo doble Click en el bloque correspondiente y llenando los espacios con los valores pertinentes. Para el caso en estudio asignaremos los siguientes parmetros:
Escaln Unitario Funcin de Transferencia Step time = 0 Valor inicial = 0 Valor final = 1 Numerador = [1] Denominador=[0.5 1]
Figura 21: Parmetros del bloque Step (Escaln).
Figura 22: Parmetros del bloque Transfer Fcn. 36
PASO 5.- Lanzamiento de la simulacin y visualizacin de resultados. Se lanza la simulacin siguiendo la opcin simulation/start del Men de Untiled o se hace click en el cono start simulation ( ). Luego se hace doble click en el bloque Scope para visualizar la respuesta del sistema a lazo abierto (Ver Figura 23).
Figura 23.- La salida alcanza el escaln a los 3 segundos.
NOTA.- Para simular se debe guardar previamente los cambios realizados a los parmetros de los bloques, es decir, no debe aparecer el asterisco en el nombre de Untitled*. Ejemplo.- Guardamos nuestro archivo con el nombre SimLA (File/save As/SimLA).
Para visualizar simultneamente el Escaln Unitario (de entrada) y la salida del sistema a lazo abierto, se requiere incluir un bloque Multiplexor (Mux) de la categora de bloques Connections o Commonly Used Blocks y realizar la conexin que se muestra en la Figura 24.
Figura 24: Conexin de MUX para doble visualizacin 37
Luego se lanza la simulacin; se visualiza simultneamente la entrada escaln y la seal de salida haciendo doble click en Scope (Ver Figura 25).
Figura 25: Escaln unitario y seal de salida en simultneo.
Ahora, agreguemos un bloque de ganancia K=10 en el sistema a lazo abierto (Ver Figura 26).
Figura 27: Bloque K=10.
Figura 28: Respuesta con K=10
38
Ejemplo 2.- Funcin de Transferencia a Lazo Cerrado Evaluar el comportamiento a lazo cerrado del sistema de Primer Orden definida por la siguiente ecuacin: A 1 (dy/dx) + A 0 y = Bx.
Si A 1 =1, A 0 =2 y B=2. Analizar la respuesta a las funciones impulso y escaln.
Solucin:
Aplicando la transformada de Laplace se obtiene la Funcin de Transferencia:
Y(s)/X(s) = 1/(0.5s+1)
El diagrama de bloques a lazo cerrado queda como se observa en la Figura 29:
Figura 29: Sistema de Primer Grado en lazo cerrado.
La respuesta del sistema de primer orden de lazo cerrado, al impulso y al escaln de amplitud 5, se muestra en las figuras 30 y 31. En el primer caso, se hace uso del bloque Pulse Generator la misma que da como respuesta un impulso de amplitud cercano a 5 con una duracin de 1 segundo, en el segundo caso, se usa un generador de escaln Step obteniendo una respuesta atenuada en amplitud estabilizndose en 1 segundo.
39
Figura 30: Respuesta del sistema al impulso de amplitud 5.
Figura 31: Respuesta del sistema al escaln de amplitud 5
Ejemplo 3.- Funcin de Transferencia de segundo orden a Lazo Cerrado
Evaluar el comportamiento a lazo cerrado del sistema de Segundo Orden que se muestra en el bloque a continuacin:
R(s) C(s)
Evaluar la respuesta para una entrada escaln unitario y comparar los resultados para realimentacin sin ganancia, con ganancia K=5 y el uso de un Controlador PID.
1 s 2 +5s+6 40
Solucin:
Primero, realimentacin H(s)=1 sin ganancia en el lazo directo. Ante el escaln unitario se obtiene por respuesta una seal que se estabiliza a los 2 segundos con una amplitud baja de 0.14 (Ver Figura 32).
Figura 32: Respuesta al escaln unitario sin ganancia
Segundo, realimentacin H(s)=1 con ganancia K=10 en el lazo directo. Ante el escaln unitario se obtiene por respuesta una seal que se estabiliza a los 2 segundos con una amplitud media de 0.64 (Ver Figura 33).
Figura 33: Respuesta al escaln unitario con ganancia K=10. 41
Para el uso del Controlador PID (PID Controller), el bloque se obtiene de la librera Simulink Extras y se desplaza a Untiled. Los parmetros del Controlador Proporcional Integral Derivativo (K P , K I y K D ) se obtienen empleando el mtodo de Ziegler Nichols, que se obtiene a partir de la respuesta en lazo abierto de la Funcin de Transferencia del sistema materia de anlisis (Ver Figura 34), a partir del cual se obtiene el siguiente cuadro:
Figura 34: Identificacin de parmetros L y T de seal a lazo abierto
Controlador K P K I K D
P T/L 0 0 PI 0.9 T/L 0.3/L 0 PID 1.2 T/L 1/2L L/2
Considerando que la salida del Controlador PID es:
u(t) = K p { e(t) + K i e(t)dt + K d de(t)/dt} y que:
K(s) = U(s)/E(s) = K p { 1 + K i /s + K d s }
En nuestro caso, la respuesta del sistema a lazo abierto se muestra en la Figura 35.
42
Figura 35: Respuesta del sistema a lazo abierto.
A partir del cual se obtiene: L=0.162 y T=2. Con ellos obtenemos los parmetros del Controlador PID segn Ziegler Nichols:
K p =12 K i =2.5 K d =0.1
Con los parmetros obtenidos simulamos el sistema a lazo cerrado con Controlador PID.
Figura 36: Respuesta al escaln unitario con Controlador PID.
43
Figura 37: Cuadro comparativo de los 3 sistemas a lazo cerrado.
Ejemplo 4.- Control de un sistema Resorte Masa Amortiguador. Analizar el comportamiento del sistema que se muestra a continuacin si se le somete a prueba con una seal de entrada escaln unitario:
x(t) K f(t)
B
Solucin: Modelando obtenemos la ecuacin diferencial del sistema:
f(t) = M. d 2 x(t) + B. dx(t) + K x(t) dt 2 dt
En Simulink podemos crear los bloques integrador y sumador como se muestra en las figuras 38 y 39:
M 44
Figura 38: Bloque Integrador.
Figura 39: Bloque Sumador.
Para poder implementar la ecuacin diferencial en Simulink se hace necesaria la siguiente transformacin:
d 2 x(t) = 1 { f(t) - B. dx(t) - K x(t)} dt 2 M dt
Figura 40: Diagrama de bloques en Simulink del sistema Resorte Masa Amortiguador.
Figura 41: Simulacin del sistema R-M-A con K=10, B=1 y M=1.
d 2 x(t) = 1 { f(t) - B. dx(t) - K x(t)} dt 2 M dt
dx(t) dt x(t) 46
Para alcanzar el nivel 1 en la salida se prueba algunos cambios en los parmetros de los bloques. Por ejemplo, para una entrada escaln de 5, con K=10, B=10 y M=4, se obtiene el resultado de simulacin que se observa en la Figura 42, en la que el sistema se estabiliza con una amplitud 1 a los 4.5 segundos.