Académique Documents
Professionnel Documents
Culture Documents
+
+
=
Obtener la F.T.
( ) 4 5
) 7 2 ( 150
) (
2
2
+ +
+ +
=
s s s
s s
s F
Para crear esta Funcin de transferencia de dos polinomios que representan el numerador y el
denominador como F(s) = Num(s) / Den(s), se utiliza la funcin:
Syms = tf (num,den);
donde:
Syms representa la F.T. del sistema
num numerador del sistema
den denominador del sistema
para este ejemplo se tendr:
EDU K=150;
EDU num=K*[1 2 7];
EDU den=[1 5 4 0];
EDU 'F(s)' % despliega F(s) en la pantalla
EDU T=tf(num,den)
Transfer function:
150 s^2 + 300 s + 1050
---------------------- % Resultado de la F.T.
s^3 + 5 s^2 + 4 s
si el numerador y denominador estn expresados en forma factorizada se puede utilizar el
comando:
G = zpk (num, den, K)
donde:
num numerador factorizado
den denominador factorizado
K ganancia del numerador
Comprobar el resultado obtenido en el ejemplo anterior pero ahora con la representacin
factorizada.
Algunos otros ejemplos se dan a continuacin:
29
% Ejemplo 1
numf=[7 9 12]; % Define numerador de F(s).
denf=conv(poly([0 -7]),[1 10 100]); % Define denominador de F(s).
[K,p,k]=residue(numf,denf) % Encuentra residuos y los asigna a K;
% las races o polos del denominador y las asigna
% a p y el coeficiente directo lo asigna a k
% Ejemplo 2
numy=32;
deny=poly([0 -4 -8]);
[r,p,k] = residue(numy,deny) % Calcula residuos, polos y coeficiente
% Ejemplo 3
'Forma polinomial' % Despliega etiqueta.
numf=150*[1 2 7] % almacena 150(s^2+2s+7).
denf=[1 5 4 0] % almacena s(s+1)(s+4)
'F(s)' % Etiqueta.
F=tf(numf,denf) % F.T.
clear % Limpia variables del workspace.
% Ejemplo 4
'Forma Factorizada' % Despliega.
numg=[-2 -4] % almacena (s+2)(s+4)
deng=[-7 -8 -9] % almacena (s+7)(s+8)(s+9)
K=20 % Define K.
'G(s)' % Display label.
G=zpk(numg,deng,K) % F.T. G(s) .
clear % Limpia variables del workspace.
Conversin entere las formas de representar una F.T.
% Ejemplo 5
numftf=[10 40 60] % numerador de F(s) =(10s^2+40s+60)/(s^3+4s^2+5s+7).
denftf=[1 4 5 7] % denominador F(s)
'Roots for F(s)' % Despliega.
[numfzp,denfzp]=tf2zp(numftf,denftf)
% Convierte F(s) a forma factorizada.
'Raices para G(s)' % Despliega.
numgzp=[-2 -4] % numerador de
K=10 % G(s) = 10(s+2)(s+4)/[s(s+3)(s+5)].
dengzp=[0 -3 -5] % denominador
'Coeficientes para G(s)' % Despliega.
[numgtf,dengtf]=zp2tf(numgzp',dengzp',K)
% Convierte G(s) a forma de polinomio, donde numgzp y
% dengzp deben de ser columna.
% Ejemplo 6
'Fzpk1(s)' % Despliega.
Fzpk1=zpk([-2 -4],[0 -3 -5],10) % Fzpk1(s) = 10(s+2)(s+4)/[s(s+3)(s+5)].
'Ftf1' % Despliega.
Ftf1=tf(Fzpk1) % Convierte Fzpk1(s) a forma de coeficientes
'Ftf2' % Despliega.
Ftf2=tf([10 40 60],[1 4 5 7]) % Ftf2(s) = (10s^2+40s+60)/(s^3+4s^2+5s+7).
'Fzpk2' % Despliega.
Fzpk2=zpk(Ftf2) % Convierte Ftf2(s) a forma factorizada.
30
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 4: Introduccin al toolbox de Symbolic de Matlab
Objetivo:
El objetivo de esta prctica es dar una introduccin a algunas funciones del toolbox de symbolic de
Matlab para poder realizar operaciones en forma simblica.
Introduccin:
MATLAB dispone en la actualidad de un amplio abanico de programas de apoyo
especializados, denominados Toolboxes, que extienden significativamente el nmero de funciones
incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prcticamente casi
todas las reas principales en el mundo de la ingeniera y la simulacin, destacando entre ellos el
toolbox de proceso de imgenes, seal, control robusto, estadstica, anlisis financiero,
matemticas simblicas, redes neuronales, lgica difusa, identificacin de sistemas, simulacin de
sistemas dinmicos, etc.
El Toolbox de Matemtica Simblica, aade a MATLAB la capacidad de realizar clculos
simblicos. Entre otros, los principales tipos de operaciones soportados son las siguientes:
Algebra simblica: Derivacin, integracin y simplificacin de expresiones matemticas.
Algebra lineal exacta: Inversas, determinantes, autovalores y formas cannicas de matrices
simblicas.
Aritmtica de precisin variable: Evaluacin de expresiones matemticas con diversos grados
de precisin.
Resolucin de ecuaciones: Resolucin numrica y simblica de ecuaciones algebraicas y
diferenciales.
Funciones matemticas especiales: Evaluacin de la mayora de las funciones utilizadas en
matemticas aplicadas.
Cabe destacar que en esta practica solo s vera un apequea introduccin del toolbox encaminado
al rea de control.
31
Para el uso de elementos simblicos, el nico requerimiento adicional es declarar las variables
simblicas antes de que stas puedan ser usadas con la declaracin syms xl x2 ...,, donde xi son
las variables simblicas.
Algunas de las ventajas de las Rutinas de Matemtica Simblica para el anlisis y diseo de
sistemas son:
1. Las funciones y ecuaciones se pueden ingresar de manera simblica. Por ejemplo: B =
x^2+3*x+7, en lugar de B = [1 3 7].
2. Se pueden manipular algebraicamente y simplificar expresiones simblicas.
3. Se pueden escribir las funciones de transferencia como si lo estuviera haciendo a mano.
Por ejemplo: La declaracin, G=(s+1)*(s+2)/[(s^2+3*s+10)*(s+4)] remplazara tres
declaraciones, numg=poly ([1 2]), deng=conv([1 3 10],[l 4]) y G=tf(numg, deny).
4. Las funciones se pueden imprimir con una mejor presentacin para mayor claridad en la
rea de trabajo de Matlab y entonces imprimirse en papel.
Estas son solo algunas de las ventajas de usar las Rutinas de Matemtica Simblica.
Desarrollo:
En el transcurso de esta practica se probaran algunos comandos utilizados del Toolbox de
Symbolic de Matlab (si se desea saber algunos otros comandos recurre a la ayuda de
Matlab) como son:
- ilaplace(X) Transformada inversa de Laplace para X(s).
- laplace(x) Transformada de Laplace de x(t)
- numden(G) Extrae numerador y denominador en forma simblica a partir de una G(s)
- pretty(x) Mejor impresin de x.
- simple(x) Determina la forma ms sencilla de un objeto simblico x
- simplify(x) Simplifica x.
- expand(x) Expande el objeto simblico.
- sym2poly(P) Convierte un polinomio simblico, P, a un vector.
Ejemplos del uso de las funciones simblicas:
32
1. Para la expansin de una seal o un polinomio se puede utilizar la funcin
>>syms x y
>>F=expand(cos(x+y))
que nos devuelve
F = cos(x)*cos(y)-sin(x)*sin(y)
2. Para simplificar una expresin matemtica se puede lograr con la funcin
>>simplify(sin(x)^2 + cos(x)^2)
que nos devuelve el valor 1.
3. La funcin simple() busca la forma ms simple de expresar la expresin que le
ingresamos como parmetros por ejemplo:
>>syms x y
>>F1=simple(cos(x)2 + sin(x)2)
>>F2 = simple(cos(x)+i*sin(x)
Y nos devuelve la misma expresin pero de una forma ms simple o simplificada.
F1=1
F2=exp(i*x)
4. Ejemplo del calculo de la Transformada de Laplace.
EDU syms t
EDU ft=3*exp(2*t);
EDU Llaplace(It)
Y nos devuelve
L 3/(s-2)
Mejorando la impresin
EDU pretty(L)
3
-----
s - 2
5 Calculo de la Antitransformada de Laplace se usa la siguiente funcin:
EDU F=ilaplace(L)
Y nos devuelve
F = 3*exp(2*t)
Mejorando la impresin
EDU pretty(F)
3 exp(2 t)
A continuacin se muestran algunos ejemplos ms completos:
1. Transformada inversa de Laplace
syms s % Define variable simblica s
'Transformada inversa de Laplace' % Despliega etiqueta
F=2/[(s+1)*(s+2)^2]; % Define F(s)
'F(s)' % Despliega etiqueta.
pretty(F) % Impresin de F(s).
f=ilaplace(F); % Encuentra la Transformada inversa de Laplace.
33
'f(t)' % Despliega etiqueta.
pretty(f) % Impresin de f(t).
F=3/[s*(s^2+2*s+5)]; % Define F(s).
'F(s)' % Despliega etiqueta.
pretty(F) %Impresin de F(s).
f=ilaplace(F); % Encuentra la Transformada inversa de Laplace.
'f(t)' % Despliega etiqueta.
pretty(f) % Impresin de f(t).
2. Transformada de Laplace
syms t % Variable 't'.
'Transformada de Laplace
'f(t)' % Despliega etiqueta.
f=2*exp(-t)-2*t*exp(-2*t)-2*exp(-2*t); % Define f(t).
pretty(f) % Impresin de f(t).
'F(s)
F=laplace(f); % Encuentra la Transformada de Laplace.
pretty(F) % Impresin de f(t).
F=simplify(F); % simplificar
pretty(F) % Impresin
'f(t)'
f=3/5-3/5*exp(-t)*[cos(2*t)+(1/2)*sin(2*t)]; % Define f(t).
pretty(f) % Imprime
'F(s)
F=laplace(f); % Encuentra la Transformada de Laplace.
pretty(F)
'F(s)'
F=vpa(F,3); % Convierte fracciones numricas simblicas a
%presentacin decimal de 3 cifras para F(s)
pretty(F) % Imprime.
F=simplify(F); % Simplifica.
pretty(F) % Imprime.
3. Obtiene numerador y denominador de un a F.T. simblica en forma de vector
syms s % Variable simblica
G=54*(s+27)*(s^3+52*s^2+37*s+73)...
34
/(s*(s^4+872*s^3+437*s^2+89*s+65)*(s^2+79*s+36)); % Forma simblica de G(s).
'Simblica G(s)'
pretty(G) % Imprime G(s).
[numg,deng]=numden(G); % Extrae numerador y denominador en forma simblica.
numg=sym2poly(numg); % Convierte numerador de G(s) a un vector.
deng=sym2poly(deng); % Convierte denominador de G(s) a un vector.
'LTI G(s) in Polynomial Form'
Gtf=tf(numg,deng) % Representa num y den en forma de F.T.
Gzpk=zpk(Gtf) % Convierte G(s) a forma factorizada.
4. Ejercicio Encontrar la F.T. G(s) = I
2
(s) / V(s) de:
(
=
(
(
(
+ +
+
0
) (
) (
) (
1
2
1
2
1
s J
s I
s I
Cs
R Ls Ls
Ls Ls R
(sugerencia utilizar la regla de Cramer para resolver I
2
y la funcin det que obtiene el determinante
de un funcin simblica).
35
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 5: Reduccin de diagrama de bloques con Matlab
Objetivo:
Reducir diagramas de bloques con las utilerias de Matlab. Al Iinalizar la practica, el
estudiante estara en capacidad de:
Realizar operaciones del algebra de bloques para utilizarlos en la reduccion de diagramas
de bloques. Por medio de MATLAB, podemos manipular diagramas de bloques con el Iin
de simpliIicarlos o reducirlos.
Introduccin:
MATLAB dispone en la actualidad de un amplio abanico de programas de apoyo
especializados, Adicionalmente, existen comandos en MATLAB que facilitan la labor, tediosa en
ocasiones, de reducir una representacin en diagramas de bloques.
Se puede utilizar Matlab para la reduccin de diagrama de bloques. Se dispone de tres metodos 1.)
Solucin a travs de los comandos series, parallel y feedback, 2.) Solucin mediante operaciones
algebraicas y 3.) Solucin mediante los comandos append y connect.
Desarrollo:
Matlab tiene rdenes tiles para la reduccin de sistemas de control en diagramas de
bloques, las instrucciones de Matlab que se vern en el transcurso de esta prctica son:
series(G1, G2) Conexin en cascada de G
1
(s) y G
2
(s).
parallel(G1, G2) Conexin en paralelo de G
1
(s) y G
2
(s).
feedback(G, H, sing) Conexiones de lazo cerrado G(s) en la trayectoria directa y H(s) como
realimentacin y sing (signo) es -1 para realimentacin negativa o +1 para
retroalimentacin positiva.
append(G1, G2, , Gn) Agregacin de sistemas (juntar varios sistemas).
connect(G Q inputs, outputs) Interconexin de los argumentos donde G es la matriz de agregacin,
Q es una matriz de conexin de elementos, inputs son las entradas del
36
sistema y outputs son las salidas del seistema.
Para mejor entendimiento de cada una de las funciones utilizadas en la prctica se recomienda
utilizar la ayuda de Matlab.
Ejemplo:
Teniendo el diagrama de bloques de la figura se quiere reducir.
1. Solucin a travs de los comandos Series, Parallel y Feedback
'Solucin a travs de los comandos Series, Parallel, & Feedback'
numg1=[-1]; % Define numerador de G1(s).
deng1=[1]; % Define denominador de G1(s).
numg2=[0 2]; % Define numerador de G2(s).
deng2=[1 2]; % Define denominador de G2(s).
numg3=-0.125*[1 0.435]; % Define numerador de G3(s).
deng3=conv([1 1.23],[1 0.226 0.0169]); % Define denominador de G3(s).
numh1=[-1 0]; % Define numerador de H1(s).
denh1=[0 1]; % Define denominador de H1(s).
G1=tf(numg1,deng1); % Crea funcin de Transferencia G1(s).
G2=tf(numg2,deng2); % Crea funcin de Transferencia G2(s).
G3=tf(numg3,deng3); % Crea funcin de Transferencia G3(s).
H1=tf(numh1,denh1); % Crea funcin de Transferencia H1(s).
G4=series(G2,G3); % Calcula producto
G5=feedback(G4,H1); % Calcula retroalimentacin
Ge=series(G1,G5); % Calcula producto
'T(s) a travs de los comandos Series, Parallel, & Feedback'
T=feedback(Ge,1) % Calcula retroalimentacin
37
2.) Solucin a travs de operaciones algebraicas
' Solucin a travs de operaciones algebraicas '
clear % Limpia variables.
numg1=[-1]; % Define numerador de G1(s).
deng1=[1]; % Define denominador de G1(s).
numg2=[0 2]; % Define numerador de G2(s).
deng2=[1 2]; % Define denominador de G2(s).
numg3=-0.125*[1 0.435]; % Define numerador de G3(s).
deng3=conv([1 1.23],[1 0.226 0.0169]); % Define denominador de G3(s).
numh1=[-1 0]; % Define numerador de H1(s).
denh1=[0 1]; % Define denominador de H1(s).
G1=tf(numg1,deng1); % Crea funcin de Transferencia G1(s).
G2=tf(numg2,deng2); % Crea funcin de Transferencia G2(s).
G3=tf(numg3,deng3); % Crea funcin de Transferencia G3(s).
H1=tf(numh1,denh1); % Crea funcin de Transferencia H1(s).
G4=G3*G2; % Calcula producto.
G5=G4/(1+G4*H1); % Calcula realimentacin.
G5=minreal(G5); % Cancela trminos comunes.
Ge=G5*G1; % Multiplica las F.T. de los lazos internos.
'T(s) a travs de operaciones algebraicas'
T=Ge/(1+Ge); % F.T. de lazo cerrado.
T=minreal(T) % Cancela trminos comunes.
3.) Solucin de otro problema diferente con los comandos Append y Connect.
' Solucin a travs de los comandos Append y Connect'
'G1(s) = (-K1)*(1/(-K2s)) = 1/s' % Imprime etiqueta.
numg1=[-1]; % Define numerador de G1(s).
deng1=[1 0]; % Define denominador de G1(s).
G1=tf(numg1,deng1); % Crea funcin de Transferencia G1(s).
'G2(s) = (-K2s)*(2/(s+2)' % Imprime etiqueta.
numg2=[-2 0]; % Define numerador de G2(s).
deng2=[1 2]; % Define denominador de G2(s).
G2=tf(numg2,deng2); % Crea funcin de Transferencia G2(s).
'G3(s) = -0.125(s+0.435)/((s+1.23)(s^2+0.226s+0.0169))' % Imprime
numg3= - 0.125*[1 0.435]; % Define numerador de G3(s).
deng3=conv([1 1.23],[1 0.226 0.0169]); % Define denominador de G3(s).
38
G3=tf(numg3,deng3); % Crea funcin de Transferencia G3(s).
System=append(G1,G2,G3); % Unir todos los subsistemas.
input=1; % La entrada es el primer subsistema G
1
(s).
output=3; % La salida es el tercer subsistema, G
3
(s).
Q=[1 -3 0 % Subsistema 1, G1(s), obtiene su entrada del
% negative de la salida del subsistema 3, G3(s).
2 1 -3 % Subsistema 2, G2(s), obtiene su entrada del
% subsistema 1, G1(s), y el negativo de la salida
% del subsistema 3, G3(s).
3 2 0]; % Subsistema 3, G3(s), obtiene su entrada del
% subsistema 2, G2(s).
T=connect(System,Q,input,output); % Conecta los subsistemas.
'T(s) a travs de los comandos Append & Connect'
T=tf(T); % Crea F.T. de lazo cerrado.
T=minreal(T) % Cancela trminos comunes.
Ejercicios:
Hacer un programa general que funcione para resolver diferentes diagramas de bloques y probarlo
con la reduccin de los diagrama de bloques de las figuras, adems de utilizar otros dos diagramas
de bloques complejos para probarlo.
39
40
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 6: Introduccin a Simulink
Objetivo:
Realizar operaciones y simulaciones sencillas con el uso grafico de Matlab llamado Simulink.
Introduccin:
MATLAB dispone de un entorno grafico para el desarrollo de las actividades que realiza en el
area de trabajo llamado Simulink. El uso de Simulink es para simular sistemas. ste utiliza una
interfaz grfica de usuario (GUI) para que el usuario interacte con los bloques que representan
subsistemas. Los bloques se pueden situar donde se requiera, modificar su tamao, etiquetarlos,
especificar sus parmetros, e interconectarlos para completar sistemas a partir de los cuales se
pueden correr las simulaciones.
Las caractersticas bsicas de Simulink son: Simulacin de sistemas dinmicos, entorno grfico, el
sistema se representa como una interconexin de bloques elementales, cada bloque lleva
asociado un modelo matemtico que representa su relacin entrada/salida.
Desarrollo:
Primero veremos un demo de Simulink y posteriormente se realizan modelos sencillos. Un ejemplo
de un sistema es el utilizado para demostrar el uso de la condicional if-then-else, que se muestra a
continuacin:
Iniciando Simulink
41
Para iniciar el programa Simulink, se puede realizar de diferentes formas, la ms sencilla teclear
desde la ventana de comandos de Matlab:
>> simulink
Tambin es posible acceder al programa desde el botn Simulink de la barra de botones de
Matlab.
Al iniciar Simulink, se presenta una ventana como la de la figura, que corresponde al Navegador de
libreras o Library browser de Simulink:
En esta ventana se muestran todas las libreras
disponibles; cada una de ellas contiene bloques
elementales con los que se pueden construir sistemas.
En funcin de la instalacin concreta de Simulink, el
nmero de libreras puede ser menor o mayor.
Ayuda en Simulink
Debido a que Simulink es un toolbox de Matlab, la ayuda se estructura del mismo modo:
- Ayuda en lnea
Se accede a travs de la ventana de comandos de Matlab. La ayuda se obtiene en modo texto. Por
ejemplo, al teclear
>> help simulink
se visualizar la ayuda que lista los comandos de Simulink. Si se requiere de algn bloque en
especial se le da el nombre del bloque como ya se ha visto.
- Navegador de ayuda
Se accede desde el men Help, seleccionando la opcin Simulink help.
Ejemplos de demostracin de Simulink
Simulink proporciona ejemplos y demostraciones de sus principales funcionalidades. Se accede a
42
ellos a travs del men Help (de Matlab) seleccionando la opcin Demos.
Ejecucin de un sistema ejemplo
Como primer paso, ejecutaremos el ejemplo ifsub, demostracin de bloques if-Then-Else.
Formas de abrir el sistema ejemplo:
Desde la ventana de comandos de Matlab, teclear ifsub.
Navegar en los ejemplos (demos) de Simulink y seleccionar, dentro de la carpeta Block
Diagramming Features, el modelo If-Then-Else Blocks
El ejemplo debe tener un aspecto parecido al que mostraba la primera imagen de esta prctica.
Forma de ejecutar la simulacin: Para la ejecucin de la simulacin se puede realizar desde el
men Simulation seleccionando la opcin Start o con el icono de la barra de tareas.
El sistema indica con un aviso acstico cuando se ha alcanzado el final de la simulacin; si
deseramos parar la ejecucin antes de llegar al final, bastara con seleccionar, dentro del men
Simulation, la opcin Stop. Esto es particularmente til en simulaciones lentas; una simulacin
rpida como la de este ejemplo puede durar menos de un segundo en un PC normal.
Ms adelante comprobaremos cules han sido los resultados de la simulacin: se han obtenido
tanto la evolucin de la temperatura en el interior de la casa como los costes de calefaccin.
Algunos detalles importantes sobre la simulacin:
Si no se han modificado los parmetros iniciales, Simulink habr simulado el
comportamiento del sistema durante los primeros 10 segundos.
Los instantes de comienzo y fin de simulacin se pueden cambiar dentro del men
Simulation eligiendo la opcin Simulation Parameters. Probaremos a relanzar la
simulacin con distintos tiempos de comienzo (Start time) y fin (Stop Time). El resto de
los parmetros no se modificarn por ahora.
Las ventanas de representacin grfica de resultados: Estas ventanas funcionan de un modo
similar a un registrador de seales o un osciloscopio digital. Sern bastante utilizadas en nuestras
simulaciones y, por tanto, conviene familiarizarse con su comportamiento. Son el elemento Scope
y en el ejemplo aparece una. Para visualizar los resultados deberemos hacer doble clic sobre este
elemento:
43
Una vez hecho doble clic sobre el elemento, aparecer una ventana grfica con los resultados de
la simulacin; es una imagen similar a la que se vera en un osciloscopio digital:
- La ventana de resultados permite ajustar la
zona a visualizar: los tres botones con forma de lupa,
sirven para hacer zoom sobre un rea de la grfica. El
primero de ellos permite definir un rectngulo sobre el
grfico y ampliar exactamente esa rea. Los otros dos
permiten definir una recta horizontal o vertical
respectivamente y hacen zoom slo en una dimensin.
Por ltimo, el siguiente botn, que presenta un dibujo
de unos prismticos, sirve para ajustar el tamao del
grfico a los datos disponibles.
- Si el tiempo de simulacin es muy elevado, la
grfica no retiene todos los datos, sino que descarta
los ms antiguos y conserva slo los ltimos. Para
modificar el nmero de datos a retener, se debe
pinchar sobre el segundo botn de la izquierda
(Parameters) y modificar, dentro de Data History el
valor indicado para el campo Limit data points to last... que, por defecto, debe tener un valor de
5000. Tambin es posible desactivar la opcin de forma que no se descarte ningn valor.
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 categoras. La ventana que aparece al
arrancar Simulink permite comprobar cules son las categoras de bloques existentes. Basta con
hacer clic sobre el signo + que acompaa 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
categora Continuous. Los elementos que aparecen a la derecha son los bloques con los que se
puede construir un modelo.
44
A continuacin se indican algunos de los bloques que se usarn en esta prctica y las siguientes y
la categora a que pertenecen:
Sources: Entradas o fuentes de seales
Step (escaln)
Ramp (rampa)
Sine wave (senoidal)
Pulse generador (tren de pulsos)
From workspace (lectura de datos desde Matlab)
...
Sinks: Salidas o dispositivos de visualizacin/almacenamiento de variables del sistema
Scope (osciloscopio)
Display (indicador numrico)
To workspace (envo de datos a Matlab)
Continuous: Representan sistemas continuos por su relacin entrada-salida
45
Derivative (bloque derivador: la salida es la derivada de la entrada)
Integrator (bloque integrador: la salida es la integral de la entrada)
Transfer Fcn (funcin de transferencia en s expresada como cociente de polinomios)
Zero Pole (funcin de transferencia en s expresada en forma factorizada)
Math operators: Operaciones matemticas sobre seales
Sum (sumador de seales)
Gain (ganancia o multiplicacin de una seal por una constante)
Signal Routing: Permite realizar conexiones especiales entre seales
Mux: (multiplexor: agrupa distintas seales en un vector o bus)
El procedimiento de trabajo para la creacin de un modelo ser seleccionar los bloques adecuados
de entre los presentes en estas categoras, colocarlos sobre la ventana de diseo y establecer las
conexiones correspondientes entre ellos. A continuacin crearemos un modelo de ejemplo.
Creacin de un modelo sencillo
Como ejemplo, crearemos un modelo que nos permita generar una seal cualquiera (una funcin
del tiempo) y representar sus valores. Comenzaremos representando la funcin sen(t).
Primer paso: creacin del modelo.
Desde la ventana Simulink Library Browser, haremos clic sobre el botn Create a new model
(pgina en blanco). Automticamente se abrir una ventana en blanco que ser la ventana de
diseo para nuestro modelo.
Segundo paso: introduccin de bloques en el modelo.
Los elementos se introducen haciendo un arrastre con el ratn desde la ventana que contiene el
listado de todos los bloques hacia la ventana de diseo. En nuestro caso requeriremos los
siguientes bloques:
Dentro de la categora Sources, el bloque Sine Wave. Este elemento se corresponde
con una seal senoidal, que es la que deseamos generar.
Dentro de la categora Sinks, el
bloque Scope. Ser el que
utilicemos para visualizar la seal.
Una vez introducidos estos modelos, la ventana
de diseo presentara un aspecto como el que
se muestra en la Figura.
46
Tercer paso: modificacin de parmetros en los bloques introducidos.
Todos los bloques de Simulink permiten una cierta configuracin. En particular, el bloque
correspondiente a la funcin 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
introduccin de parmetros.
Para nuestra primera simulacin, introduciremos los siguientes valores:
Sine type: time based (buscamos generar una seal continua y no discreta)
Amplitude: 4 (la seal tomar valores de -4 a +4)
Bias: 0 (componente contnua = 0, seal centrada)
Frequency: 3 rad/s (frecuencia de la seal seno)
Phase: 0 (desfase respecto del instante t = 0)
Sample time: 0 (tiempo de muestreo, ser cero para seales continuas)
Cuarto paso: interconexin de elementos.
Una vez situados los elementos en la ventana de diseo, es necesario establecer conexiones entre
ellos. Para conectar 2 elementos debe hacerse un arrastre con el ratn desde la salida de uno de
ellos hasta la entrada del elemento
correspondiente. Una vez establecidas las dos
conexiones necesarias para nuestro sistema,
deberamos obtener un resultado como el que
se muestra en la Figura.
Quinto paso: lanzamiento de la simulacin
y comprobacin de resultados.
Lanzaremos la simulacin con la opcin Start del men
Simulation y comprobaremos los resultados obtenidos
haciendo doble clic sobre el bloque Scope. Se mostrar una
ventana grfica 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 en la Figura.
Una vez creado el esquema, probaremos a representar otras
seales que nos ofrece Simulink dentro de la categora 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:
47
Step (escaln)
Ramp (rampa)
Pulse generator (tren de pulsos)
En cada uno de los casos deberemos lanzar de nuevo la simulacin
Creacin de un segundo modelo
A continuacin crearemos un modelo algo ms complicado, en el que se realice alguna operacin
con las seales. Vamos a crear un sistema que nos permita calcular la integral de una seal.
El bloque que realiza la integral de una seal
se encuentra dentro de la categora
Continuous. Es el bloque denominado
Integrator. Con l, y con los bloques que
tenamos del esquema anterior, deberemos
realizar un montaje como el que se muestra en
la Figura.
Si ejecutamos la simulacin y visualizamos los resultados veremos cmo se obtiene la integral de
la seal de entrada. Podemos probar a cambiar la seal de entrada para comprobar como:
La integral de una seal escaln es una seal rampa
La integral de una seal rampa es una seal parbola
Etc.
A continuacin haremos un cambio en el esquema que nos permita ver en el mismo grfico las dos
seales: la original y su integral.
Para visualizar dos seales en el elemento Scope es necesario recurrir al bloque multiplexor
Mux de la categora Signals Routing. Este bloque tiene por finalidad agrupar dos o ms
seales para formar un vector. De este modo, se agruparn la seal de entrada y la seal de salida
y el conjunto ser lo que se enve al osciloscopio. Las conexiones se deben realizar tal y como se
muestra en la figura.
48
En este esquema hay algo nuevo que an no
sabemos hacer: cmo crear una rama nueva
sobre una conexin ya existente (la segunda
rama que llega al multiplexor no parte de la salida de un bloque, sino de un punto intermedio de
una conexin). La forma de crear este tipo de conexiones es pulsando el botn Ctrl al mismo
tiempo que se empieza a arrastrar con el ratn.
Lanzando una nueva simulacin, debemos comprobar que en la ventana del osciloscopio se
muestran las dos seales: la original y la integral, tal y como muestra la figura siguiente:
49
Simulacin de un sistema descrito por una ecuacin diferencial
En el ejemplo anterior se ha comprobado como es posible obtener la integral de una seal cualquiera.
Esta ser la herramienta que utilizaremos para representar una ecuacin diferencial.
En nuestro caso queremos representar un sistema fsico consistente en una masa M unida a un
muelle de constante elstica K, y con un rozamiento viscoso B, tal y como se describe en la figura:
El objetivo ser ver cmo afecta la fuerza aplicada
f(t) al movimiento de la masa, descrito por x(t)
La ecuacin diferencial que rige el comportamiento
de este sistema es:
) (
) ( ) (
) (
2
2
t x K
dt
t dx
B
dt
t x d
M t f + + =
Para representar este sistema en Simulink, veremos a continuacin unos ejemplos de utilizacin de
los bloques integrador, sumador y multiplicador por constante (se encuentran dentro de las categoras
Continuous y Math). Dado que no son ejemplos completos, no se deben introducir en Simulink, se
incluyen slo como ayuda para entender la forma de representar una ecuacin cualquiera:
Bloque integrador: permite obtener a partir de d
2
x(t)/dt
2
sus integrales dx(t)/dt y x(t):
Bloque sumador: permite sumar/restar seales (se muestra un ejemplo):
50
2
2
) (
dt
t x d
dt
t dx ) (
) (t x
dt
t dx
t x
) (
) ( +
Bloque multiplicador o ganancia: permite multiplicar un bloque por una constante:
2
2
) (
dt
t x d
dt
t dx ) (
) (t x
dt
t dx ) (
5
dt
t dx
t x
) (
5 ) ( +
Una vez vistos estos ejemplos pasaremos a representar la ecuacin diferencial propuesta. Para ello
despejaremos de la ecuacin inicial el trmino d
2
x(t)/dt
2
, obteniendo:
|
.
|
\
|
= ) (
) (
) (
1 ) (
2
2
t x K
dt
t dx
B t f
M dt
t x d
51
K = 10 B = 1 1
1
=
M
Analizando el diagrama podemos comprobar cmo responde exactamente a la ecuacin diferencial
planteada para el sistema. Otros sistemas de cualquier tipo (elctricos, trmicos, etc.) podran
representarse de la misma forma si se conoce su ecuacin diferencial.
Se han elegido los siguientes valores para las constantes y para f(t):
K: 10
B: 1
M:1
f(t): funcin escaln
Nota: en el diagrama que se muestra alguno de los bloques se encuentran girados para que sea ms
fcil realizar las conexiones. Esto se hace seleccionando el bloque y eligiendo la opcin Flip Block
del men Format.
Despus de comprender el funcionamiento del esquema
propuesto, se introduce en Simulink y observaremos cul es
el resultado obtenido en el elemento Scope (ver Figura).
Lo que se ve es el efecto que una fuerza en forma de
escaln (seal de entrada) produce sobre la posicin (seal
de salida). En el conjunto muelle-amortiguador, el
movimiento de la masa debe presentar oscilaciones que
52
poco a poco deben ir desapareciendo.
Una vez que hemos creado el esquema que permite simular un determinado sistema fsico, podemos
comprobar hasta qu punto es til disponer de una simulacin 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 simulacin y comprobaremos
el efecto de las variaciones de este parmetro.
Haremos lo mismo con la constante elstica K y con el rozamiento viscoso B.
Por ltimo, probaremos la respuesta ante otros tipos de seal de entrada: senoidal, pulsos,
etc.
EJERCICIO SIMULINK
El objetivo es simular el comportamiento de un sistema elctrico del que conocemos su ecuacin
diferencial:
}
+ + = dt t i
C dt
t di
L t i R t v ) (
1 ) (
) ( ) (
F . C H L R 1 0 1 5 . 0 = = =
Se tomar como entrada la seal v(t) y como salida la seal i(t).
Se comprobarn los resultados obtenidos para dos tipos de entradas:
v(t) = escaln. (amplitud de 1V, tiempo de simulacin de 20 segundos). En este caso lo que
estamos haciendo es similar a un anlisis transitorio en continua. El tipo de respuesta depender
del coeficiente de amortiguamiento. Para modificarlo variaremos los valores R, L, C.
v(t) = senoidal. (amplitud 5V y frecuencia 1 rad/seg, tiempo de simulacin de 20 segundos).
Este caso corresponde al anlisis de un circuito en alterna. Para comprobar la salida en rgimen
permanente, que ser lo que nos interese en este caso, tendremos que fijar un tiempo de
simulacin lo suficientemente largo.
Nota: al igual que en el caso del muelle lo ms conveniente para la representacin en Simulink era
despejar d
2
x(t)/dt
2
, en este caso lo ms apropiado es despejar di(t)/dt. De este modo podemos
representar el sistema utilizando slo el operador integral; en otro caso deberamos utilizar el
operador derivada, que ofrece mayores dificultades para la simulacin.
53
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 7: Aspectos avanzados Matlab/Simulink
Objetivo:
Realizar operaciones de transmisin de datos entre el rea de trabajo de Matlab y Simulink.
Introduccin:
En la prctica previa se ha utilizado el elemento Scope para representar los valores que toma
una seal cualquiera en un esquema Simulink. Sera interesante disponer, no slo de la
representacin de esas seales sino tambin de sus valores numricos, para poder trabajar
posteriormente sobre ellos (por ejemplo, para poder calcular el valor mximo y mnimo de una seal y
los instantes de tiempo en que se producen, etc).
El elemento Scope permite, al mismo tiempo que representa los resultados de una simulacin,
guardar esos resultados en una variable de Matlab, de modo que se puedan consultar sus valores
desde la ventana de comandos.
Desarrollo:
Como ejemplo volveremos a trabajar sobre el esquema utilizado en la prctica anterior para simular el
comportamiento de un conjunto muelle amortiguador. El aspecto del esquema es el que se muestra a
continuacin:
Se realizar la simulacin de este esquema con los siguientes parmetros:
Tiempo de simulacin: 10 segundos.
Amplitud del escaln de entrada: 5 unidades.
El resultado debera ser igual al que muestra la siguiente figura:
54
Nota: en caso de no obtener exactamente estos resultados es posible que la configuracin del bloque
escaln no sea la correcta. En la Figura siguiente se muestran los parmetros del bloque escaln y su
significado sobre la representacin grfica del mismo:
En general, el escaln se producir en el instante cero (no estar retrasado) con lo que el parmetro
step time deber ser siempre cero; el valor inicial del escaln (initial value) tambin ser cero; y el
valor final (parmetro final value) deber indicar la amplitud del escaln, que en este caso particular
es cinco.
Ahora haremos click sobre el botn Parameters del elemento Scope, para abrir la ventana de
configuracin:
55
En la ventana de configuracin deberemos seleccionar la solapa Data History y en ella marcaremos
la opcin Save data to workspace o, lo que es lo mismo, guardar los datos en el espacio de trabajo
de Matlab. Ser necesario indicar dos parmetros:
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 (posicin 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 guardarn en
forma de vector.
Una vez hecho esto, realizamos de nuevo la simulacin. El resultado sobre la ventana de Simulink
ser el mismo, pero en la ventana de comandos de Matlab podremos comprobar cmo se han creado
dos nuevas variables. Para ello bastar teclear el comando who:
>> who
Your variables are:
posicion tout
Se han creado dos variables: posicion y tout. La nica variable que nos interesa es la primera de
ellas. Si comprobamos el tamao 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 segn los ordenadores):
56
>> 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 instruccin format long para mostrar
ms cifras decimales):
>> format long
>> posicion (1:10,:)
ans =
0 0
0.00000000000000 0.00000000000000
0.00004019018290 0.00000000403807
0.00024114109742 0.00000014536088
0.00124589567003 0.00000387902391
0.00626966853305 0.00009806359195
0.03138853284814 0.00243553350653
0.13244976834872 0.04137887820543
0.31114891413343 0.20203969791657
0.51114891413343 0.44779711805874
La primera de las columnas, como se ha dicho,
corresponde a los instantes de tiempo; y podemos
comprobar cmo no estn separados uniformemente. La
segunda columna corresponde a los valores que toma la
seal, y podemos comprobar que los datos son correctos
haciendo zoom sobre el grfico que aparece en el
elemento Scope (por ejemplo, en el instante 0.511
segundos el valor de la seal es 0.448 aproximadamente).
Desde la ventana de comandos de Matlab, tambin ser
posible representar mediante la instruccin plot la seal
guardada en la variable posicin. Dado que la primera
columna contiene valores de tiempo y la segunda columna
contiene valores de posiciones, la forma correcta de la
57
instruccin plot debera ser:
>> plot(posicion(:,1), posicion(:,2))
Si lo que nos interesa calcular el valor mximo de la seal. Dado que los valores de la seal estn
contenidos en la segunda columna de la variable posicion, bastar con utilizar el comando max de
Matlab:
>> [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 clculos. En cualquier caso, el comando max recorre la segunda columna de la variable posicion y
nos devuelve su valor mximo y cul 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 mximo,
bastar con comprobar el valor que toma la primera columna de la variable posicion para ese mismo
ndice (nota: se utiliza la instruccin format short para mostrar menos cifras decimales).
>> format short
>> posicion(indice, :)
ans =
0.9111 0.7883
En resumen, hemos obtenido como resultado que la posicin de la masa mvil (x) en el ejemplo del
sistema muelle-amortiguador alcanza un valor mximo de 0.7883 metros en el instante 0.9111
segundos.
Introduccin de seales arbitrarias en Simulink
En la prctica anterior se comprob como Simulink dispone de muchas seales de entrada, vlidas
para la mayor parte de las aplicaciones: se dispone de las seales escaln, rampa, senoidal, tren de
pulsos, etc.
No obstante, en algunas ocasiones se desea utilizar seales de forma arbitraria, no disponibles
directamente en Simulink. Por ejemplo, podramos desear utilizar una seal de entrada (fuerza
aplicada al conjunto muelle-amortiguador en el sistema sobre el que se est trabajando en esta
prctica) como la que se muestra a continuacin:
58
La forma ms sencilla de introducir una seal como la propuesta es mediante el bloque From
Workspace de la categora Sources. A continuacin se muestra el aspecto que debe tener el
esquema Simulink de la prctica una vez sustituido el bloque escaln por el bloque From workspace:
Gain1
Una vez modificado el esquema Simulink, haremos clic sobre el elemento From Workspace para
acceder a sus parmetros de configuracin. Aparecer una ventana como la que se muestra a
continuacin:
El nico parmetro 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 ms 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 travs del bloque
Scope: la primera columna debe contener los valores de
los instantes de tiempo y la segunda los valores de
la seal.
59
Un dato importante que hay que fijar es el intervalo entre cada dos instantes de tiempo. Cuanto ms
pequeo sea este intervalo, mejor ser la definicin de la seal. En este ejemplo utilizaremos un
intervalo de 0.1 segundos.
A continuacin pasaremos a definir la seal (vase el grfico anterior de x(t)). Lo ms cmodo ser
definirla por tramos, utilizando un tramo para cada trazo recto de la seal. Adems, y para simplificar
la creacin de la seal, se usarn variables distintas para el tiempo y para la seal. Los tiempos se
guardarn en la variable tmp y los valores de la seal (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 seal (vector dat1) deber responder a la ecuacin de la recta x=10t.
Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp1 = [0:0.1:10]
>> dat1 = 10*tmp1
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 seal (vector dat2) deber responder a
la ecuacin de la recta x=100. Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp2 = [10.1:0.1:30]
>> dat2(1:200)=100
La segunda instruccin 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 seal (vector dat3) deber responder a la ecuacin de la recta
x=20t-500. Esto lo conseguimos con las siguientes sentencias de Matlab:
>> tmp3 = [30.1:0.1:35]
>> dat3 = 20*tmp3-500
El ltimo paso es crear las variables tmp y dat como concatenacin de las variables tmp1, tmp2,
60
tmp3 y dat1, dat2, dat3 disponibles. Dado que tanto tmp como dat deben ser vectores columna, se
debern combinar los vectores y trasponer el resultado, tal y como indican las siguientes sentencias
de Matlab (atencin a la comilla final que indica la operacin de trasposicin):
>> tmp = [tmp1, tmp2, tmp3]
>> dat = [dat1, dat2, dat3]
Para comprobar que la seal se ha generado correctamente, lo ms sencillo es utilizar el comando
plot de Matlab: la instruccin plot(tmp,dat) debera 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, con lo que las instrucciones Matlab a utilizar sern:
>> fuerza(:,1)=tmp
>> fuerza(:,2)=dat
Con la variable fuerza creada, es posible lanzar la simulacin. Dado que la seal est definida durante
35 segundos, el tiempo de simulacin se fijar exactamente en 35 segundos (desde la opcin
Simulation parameters del el men Simulation). El resultado sobre el osciloscopio se muestra en la
figura siguiente, y se debe apreciar cmo la salida del sistema (posicin) reproduce aproximadamente
los valores de la entrada (fuerza aplicada) con pequeas oscilaciones.
61
EJERCICIO SIMULINK
El objetivo es simular el comportamiento de un motor de CD cuyos parmetros se muestran en la hoja
anexa con el siguiente tipo de entradas:
Entrada escaln
Entrada senoidal
Con la siguiente entrada.
62
63
El grfico siguiente muestra la salida que debe producir el sistema ante una entrada en forma de
escaln de 10cm (la referencia aumenta bruscamente de 0 a 10cm). El sistema se ha simulado
durante los primeros 20 segundos de funcionamiento:
15
10
5
0
0 2 4 6 8 10 12 14 16 18 20
Debe comprobarse como la salida sigue a la entrada: una variacin de 10cm en la posicin de
referencia ocasiona en rgimen permanente una variacin de 10cm en la posicin del elemento mvil.
Las sobreoscilaciones que se producen en los instantes iniciales se analizarn posteriormente.
Una vez comprobado el funcionamiento del sistema se deber llevar la seal de salida a una variable
de Matlab, utilizando el bloque Scope, y crear un programa Matlab que se guardar como analiza.m y
que deber realizar los siguientes clculos sobre la seal de salida:
Clculo del valor final de la seal (valor en rgimen permanente)
Clculo del valor mximo (sobreoscilacin) y el instante en el que se produce.
Clculo 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 grfico siguiente:
La declaracin de la funcin debe ser como la siguiente:
function [xfin, xmax, tmax, testab] = analiza (posicion)
Como ltimo punto de la prctica, se comprobar la respuesta del sistema ante una seal como la
mostrada en el grfico siguiente, que deber ser introducida al sistema mediante el bloque From
64
Workspace:
x(t)
10
0 20 40 60 t(seg).
A incluir en el informe de la prctica:
Copia del esquema Simulink empleado.
Grfico Matlab de la respuesta ante entrada escaln de 10 unidades, en el que el ttulo del
grfico contendr el nombre y apellidos del alumno.
Listado del programa Matlab creado para el clculo de los valores caractersticos de la seal
de salida; y resultados obtenidos al ejecutar dicho programa.
Grfico Matlab mostrando la respuesta ante la entrada en forma de trapecio del ltimo
apartado; el ttulo tambin mostrar nombre y apellidos del alumno.
65
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 8: Funcin de Transferencia y Variables de Estado
Objetivo:
Convertir la representacin de funcin de transferencia a variables de estado y viceversa.
Introduccin:
Matlab tiene comandos tiles para transformar un modelo matemtico de un sistema lineal a otro.
Tales transformaciones son tiles para resolver problemas de ingeniera de control, entre las ms
importantes estn:
Cambio de Funcin de Transferencia a Variable de estado.
[A,B,C,D]=tf2ss(num,den)
Convierte un sistema representado en variables de estado de la forma
( ) D B A sI C
den
num
s U
s Y
+ = =
1
) (
) (
a variables de estado de la forma
Du Cx v
Bu Ax x
+ =
+ =
Es importante notar que la representacin en variables de estado para un sistema no es nica. Hay
una infinidad de representaciones de un sistema en variables de estado. Matlab da una posible
representacin en variables de estado.
Tambin se puede utilizar el comando:
[A,B,C,D]=zp2ss(z,p,k)
Convierte un sistema representado en variables de estado de la forma
( ) D B A sI C
p s p s p s
: s : s : s
K
s U
s Y
m
n
+ =
+ + +
+ + +
=
1
) )...( 2 )( 1 (
) )...( 2 )( 1 (
) (
) (
a variables de estado de la forma
Du Cx v
Bu Ax x
+ =
+ =
Variables de estado a Funcin de Transferencia
66
Si el sistema tiene una entrada y una salida, el comando
[num,den]=ss2tf(A,B,C,D)
Obtiene la funcin de transferencia
) (
) (
s U
s Y
si el sistema involucra mas de una entrada, utilice el siguiente comando
[num,den]=ss2tf(A,B,C,D,iu)
este comando convierte al sistema de su representacin en espacio de estado
Du Cx v
Bu Ax x
+ =
+ =
a la funcin de transferencia
( ) D B A sI C
den
num
s U
s Y
i
+ = =
1
) (
) (
Note que el escalar iu es un ndice en las entradas del sistema y especfica cual de las entradas va a
ser usada para encontrar la funcin de Transferencia.
Tambin existe el comando
[z, p, k]=ss2zp(A,B,C,D,iu)
Obtiene la funcin de transferencia
) (
) (
s U
s Y
en representacin de polos y ceros.
Graficacin de polos y ceros de la funcin de transferencia.
Para graficar los polos y ceros de una Funcin de Transferencia se usa el comando:
[p , z] = pzmap(sistema)
Si solo se requiere la graficacin de polos y ceros, el que regresa la funcin [polos (p), ceros (z)] no
se pone puede ser opcional.
Representaciones alternas de modelos de sistemas
Un sistema representado como un solo objeto (cuando se utilizo el comando tf) se puede ahora
obtener su representacin en las diferentes formas que ya se han visto en las prcticas como son
funcin de transferencia, funcin de transferencia en polos y ceros, y variables de estado todo esto
con los comandos:
[p, z, k] = zpkdata (sistema, v)
[a, b, c, d] = ssdata (sistema)
[num, den] = tfdata (sistema, v)
Desarrollo:
Probar los siguientes ejemplos:
67
1.- Considere el siguiente sistema que contiene 2 entradas
2 1
, u u y dos salidas
2 1
, v v .
(
+
(
=
(
(
2
1
2
1
2
1
1 0
1 1
4 25
1 0
u
u
x
x
x
x
(
+
(
=
(
2
1
2
1
2
1
0 0
0 0
1 0
0 1
u
u
x
x
v
v
Como se puede observar, de este sistema se pueden obtener cuatro funciones de transferencia. La
primera relaciona la salida
1
v con la entrada
1
u , la segunda
2
v con
1
u , la tercera
1
v con
2
u y la
cuarta
2
v con
2
u (cuando se obtiene una de ellas se asume que la otra entrada es cero).
Para obtenerlas usamos en Matlab los comandos
A=[0 1;-25 -4];
B=[1 1;0 1];
C=[1 0;0 1];
D=[0 0;0 0];
[num,den]=ss2tf(A,B,C,D,1)
num =
0 1 4
0 0 -25
den =
1 4 25
[num,den]=ss2tf(A,B,C,D,2)
num =
0 1.0000 5.0000
0 1.0000 -25.0000
den =
1 4 25
Por lo que las funciones de transferencia son
25 4
4
) (
) (
2
1
1
+ +
+
=
s s
s
s U
s Y
25 4
25
) (
) (
2
1
2
+ +
=
s s s U
s Y
25 4
5
) (
) (
2
2
1
+ +
+
=
s s
s
s U
s Y
25 4
25
) (
) (
2
2
2
+ +
=
s s
s
s U
s Y
2.- De la Funcin de Transferencia
) 16 4 )( 10 ( ) (
) (
2
+ + +
=
s s s
s
s U
s Y
Obtener su representacin e variables de estado de la forma:
68
u
x
x
x
x
x
x
(
(
(
+
(
(
(
(
(
(
=
(
(
(
(
(
0
0
1
0 1 0
0 0 1
160 56 14
3
2
1
3
2
1
[ ] [ ]u
x
x
x
v 0 0 1 0
3
2
1
+
(
(
(
=
3.- De la Funcin de Transferencia
008 . 5 1026 . 25 03247 . 5
008 . 5 04 . 25
) (
) (
2 3
+ + +
+
=
s s s
s
s U
s Y
Obtener su representacin e variables de estado de la forma:
u
x
x
x
x
x
x
(
(
(
+
(
(
(
(
(
(
=
(
(
(
(
(
0
0
1
0 1 0
0 0 1
00 . 5 102 . 25 032 . 5
3
2
1
3
2
1
[ ] [ ]u
x
x
x
v 0 008 . 5 04 . 25 0
3
2
1
+
(
(
(
=
4.- Del sistema de ecuaciones de estado:
u
x
x
x
x
x
x
(
(
(
+
(
(
(
(
(
(
=
(
(
(
(
(
0 . 121
04 . 25
0
032 . 5 1026 . 25 032 . 5
1 0 0
0 1 0
3
2
1
3
2
1
[ ] [ ]u
x
x
x
v 0 0 0 1
3
2
1
+
(
(
(
=
Obtenindose la F.T. del ejemplo anterior.
Otros ejemplos
1. Utilice el comando adecuado para modelar los siguientes sistemas, observe el diagrama de polos y
ceros respectivo.
2. Obtenga las representaciones alternas de los modelos creados en el punto anterior, es decir
obtenga mediante transformacin, los modelos ZPK, TF y SS de cada uno de los sistemas.
3. Halle la funcin de transferencia G2/G3 mediante comandos de polinomios, obtenga su diagrama
de polos y ceros.
69
Ejercicio:
1. Pruebe de los ejemplos anteriores que tienen la representacin de variables de estado a
representacin de polos y ceros y compruebe los resultados con el mismo Matlab.
2. Obtenga la representacin en variables de estado de:
) 125 . 0 )( 5 . 0 (
) 25 . 0 ( 2
) (
) (
=
s s
s
s U
s Y
3. Grafique los polos y ceros de cada uno de los primeros ejemplos de la prctica.
4. Realizar un programa en Matlab que pueda cambiar de una forma de representacin de un sistema
a otro. La seleccin la debe de realizar el usuario por medio de un men que presente el Matlab. El
programa debe de funcionar para cualquier orden del sistema. As como la graficacin de polos y
ceros.
70
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 9 y 10: Anlisis de Respuesta Transitoria de Sistemas de
Control I y II
Respuesta en el Tiempo de Sistemas de Primer y Segundo Orden
Objetivo:
Utilizar distintas herramientas de MATLAB y SIMULINK para simular sistemas de primer y segundo
orden.
Analizar como cambia la respuesta temporal de sistemas de primer y segundo orden segn cambian
sus parmetros.
Analizar el efecto en sistemas de aadir ceros e incrementar el orden del sistema.
Introduccin:
Las respuestas transitorias (tales como respuesta al escaln, al impulso y a la rampa) son usadas
frecuentemente para investigar las caractersticas en el dominio del tiempo de los sistemas de control.
Las caractersticas de respuesta transitoria, tales como rapidez, mximo sobreimpulso, tiempo de
establecimiento, error en estado estacionario pueden ser determinadas a partir de la respuesta al
escaln unitario.
Si se conoce el numerador y el denominador de la Funcin de Transferencia en lazo cerrado,
entonces se puede usar el comando
step(num,den)
o bien
step(num,den,t)
La cual genera los valores de la respuesta al escaln unitario (t se utiliza para especificar el tiempo).
Para un sistema de control definido en variables de estado el comando
step(A,B,C,D)
genera la grfica de la respuesta al escaln. Este vector es generado automticamente cuando t no
es incluido en el comando escaln.
Cuando existen argumentos a la izquierda del comando tales como
[y,x,t]=step(num,den,t)
[y,x,t]=step(A,B,C,D,iu)
[y,x,t]=step(A,B,C,D,iu,t)
con este comando no se grafica en la pantalla, sino que hay que usar el comando plot para ver las
curvas de la respuesta.
Las matrices y, x contienen la salida y la respuesta de estado del sistema respectivamente para los
puntos del intervalo t, la salida y tiene tantas columnas como salidas y un rengln por cada elemento
71
en t, x tiene tantas columnas como estados tenga el sistema y un rengln por cada elemento en t.
Adems iu es un ndice para las entradas del sistema y especfica cual entrada es utilizada para
obtener la respuesta y t es utilizada para especificar el tiempo. Si el sistema involucra mltiples
entradas y salidas, el comando step descrito anteriormente, produce una serie de grficas de
respuesta al escaln unitario, una por cada combinacin entrada salida del sistema.
Ejemplo.- Obtener la respuesta al escaln unitario del sistema
25 4
25
) (
) (
2
+ +
=
s s s R
s C
En Matlab usamos
% respuesta del sistema a una entrada escaln unitario
% funcin G(s)
num=25;
den=[1 4 25];
% comando para graficar
step(num,den);grid
title('Respuesta al escaln unitario');
Ejemplo. - Obtener la respuesta al escaln unitario de un
sistema descrito en variables de estado.
Du Cx v
Bu Ax x
+ =
+ =
donde
(
(
(
(
=
8 32 80 100
1 0 0 0
0 1 0 0
0 0 1 0
A
(
(
(
(
=
60
5
0
0
B [ ] 0 0 0 1 = C
El programa en Matlab es
% Respuesta al escaln unitario
% matrices A,B,C y D
A=[0 1 0 0;0 0 1 0;0 0 0 1;-100 -80 -32 -8];
B=[0;0;5;60];
C=[1 0 0 0];
D=[0];
% Se obtiene la respuesta al escaln unitario
step(A,B,C,D); grid;
title('Respuesta al escaln unitario');
si se desea graficar los valores de las variables de
estado se puede realizar de la siguiente forma en Matlab
% Calcula la respuesta al escaln obteniendo
% los resultados en matrices
[y,x,t]=step(A,B,C,D);
% Graficar todas las variables de estado
Time (sec.)
A
m
p
litu
d
e
Respuesta al escalon unitario
0 0.5 1 1.5 2 2.5 3
0
0.2
0.4
0.6
0.8
1
1.2
1.4
From: U(1)
T
o
: Y
(1
)
Time (sec.)
A
m
p
litu
d
Respuesta al escaln unitario
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
-14
-12
-10
-8
-6
-4
-2
0
2
4
t seg
x
1
,
x
2
,
x
3
curvas de la respuesta de x1,x2,x3 vs t
72
plot(t,x); gris on;
xlabel('t seg');ylabel('x1,x2,x3');
title('curvas de la respuesta de x1,x2,x3 vs t')
% En forma individual las variables de estado
% para x1 vs t
x1=[1 0 0 0]*x';subplot(221);plot(t,x1)
grid on;xlabel('t seg');
ylabel('x1');title('respuesta de x1 vs t');
% para x2 vs t
x2=[0 1 0 0]*x';subplot(222);plot(t,x2)
grid on;xlabel('t seg');
ylabel('x2');title('respuesta de x2 vs t');
% para x3 vs t
x3=[0 0 1 0]*x';subplot(223);plot(t,x3)
grid on;xlabel('t seg');
ylabel('x3');title('respuesta de x3 vs t');
% para x4 vs t
x4=[0 0 0 1]*x';subplot(224);plot(t,x4)
grid on;xlabel('t seg');
ylabel('x4');title('respuesta de x4 vs t');
Respuesta al impulso.
La respuesta al impulso de ) (s G es la misma que la respuesta al escaln unitario de ) (s sG .
Ejemplo, la respuesta al impulso unitario del sistema
1
1
) (
) (
) (
+
= =
s
s G
s R
s C
dado que 1 ) ( = s R para una entrada impulso, tenemos
s s
s
s C
1
1
) ( |
.
|
\
|
+
=
% La respuesta al impulso unitario de G(s)=1/(s+1)
% usando el comando de respuesta al escaln (step)
% numerador y denominador del sistema sG(s)
num=[1 0];
den=[1 1];
% Comando de la respuesta al escaln
[y,x,t]=step(num,den,'k');
plot(y,t,'k'); grid on;
title('respuesta al impulso unitario de G(s)=1/(s+1)');
xlabel('t seg');ylabel('Amplitud');
Para obtener la respuesta al escaln y al impulso de un
sistema de la forma
u
x
x
x
x
x
x
x
x
(
(
(
(
+
(
(
(
(
(
(
(
(
=
(
(
(
(
0166 . 0
0347 . 0
0878 . 0
0
4791 . 1 4791 . 0 0878 . 0 0073 . 0
1 0 0 0
0 1 0 0
0 0 1 0
4
3
2
1
4
3
2
1
0 2 4 6
0
0.5
1
1.5
t seg
x
1
respuesta de x1 vs t
0 2 4 6
-0.5
0
0.5
1
1.5
t seg
x
2
respuesta de x2 vs t
0 2 4 6
-4
-2
0
2
4
t seg
x
3
respuesta de x3 vs t
0 2 4 6
-15
-10
-5
0
5
t seg
x
4
respuesta de x4 vs t
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
1
2
3
4
5
6
respuesta al impulso unitario de G(s)=1/(s+1)
t seg
A
m
p
lit
u
d
73
[ ]
(
(
(
(
=
4
3
2
1
0 0 0 1
x
x
x
x
v
Para obtener la respuesta al escaln del sistema usamos
[y,x,t]=step(A,B,C,D);
debido a que la respuesta al impulso es la derivada de la respuesta al escaln, la derivada de la salida
) (
1
x v = proporciona la respuesta al impulso. Para las ecuaciones de estado, se puede ver que la
derivada de v es
2
x . Por lo tanto
2
x vs t dar la respuesta al impulso del sistema. Donde
2
x puede
ser obtenida de la forma
[ ] ' * 0 0 1 0
2
x x =
El programa en Matlab puede ser el siguiente
% Respuesta al impulso
% Entrada del sistema en variables de estado
A=[0 1 0 0;0 0 1 0;0 0 0 1;-0.0073 -0.0878 -0.4791 -1.4791];
B=[0;0.0878;-0.0347;0.0166];
C=[1 0 0 0];
D=[0];
% Calcula la respuesta al escaln
[y,x,t]=step(A,B,C,D);
% As la respuesta est dada por x2
x2=[0 1 0 0]*x';
plot(t,x2,'k');
grid on;title('Respuesta al impulso = x2');
xlabel('t seg');ylabel('Salida del impulso (x2)')
Respuesta a una entrada rampa.
Para obtener la respuesta de una rampa de la funcin de transferencia del sistema ) (s G , se divide
) (s G por s , y usamos el comando de respuesta al escaln.
Ejemplo, el sistema de lazo cerrado
1
1
) (
) (
2
+ +
=
s s s R
s C
Para una entrada rampa,
2
1
) (
s
s R = se tiene
s s s s s s s
s C
1
) 1 (
1 1
1
1
) (
2 2 2
+ +
=
+ +
=
Para obtener la respuesta de una rampa en Matlab el numerador y denominador del sistema se
convierte en
num=[0 0 0 1]; den=[1 1 1 0];
0 10 20 30 40 50 60
-0.05
0
0.05
0.1
0.15
0.2
Respuesta al impulso = x2
t seg
S
a
lid
a
d
e
l
im
p
u
ls
o
(
x
2
)
74
Con lo cual se puede utilizar el comando para la respuesta escaln (step)
% Respuesta a la rampa es obtenida como la respuesta al escaln de G(s)/s
% numerador y el denominador del sistema G(s)/s
num=[0 0 0 1];
den=[1 1 1 0];
% Especifica el tiempo de clculo (t=0:0.1:7)
% y el comando de respuesta al escaln
t=0:0.1:7;
c=step(num,den,t);
% Grafica la respuesta y la entrada de referencia
% La entrada de referencia es t
plot(t,c,'ko',t,t,'k-'); grid on;
title('Respuesta a una Rampa del sistema
G(s)=1/(s^2+s+1)');
xlabel('t seg');ylabel('Salida c');
La respuesta a la rampa de un sistema definido en variables de estado, descrita por el sistema
u
x
x
x
x
(
+
(
=
(
1
0
1 1
1 0
2
1
2
1
[ ]
(
=
2
1
0 1
x
x
v
Cuando las condiciones iniciales son cero, la respuesta a la rampa es la integral de la respuesta al
escaln. As la respuesta a la rampa puede escribirse como
}
=
t
vdt :
0
As
1
x v : = =
Definiendo
3
x : = entonces
1 3
x x =
Combinando la ecuacin anterior con la original del sistema, obtenemos
u
x
x
x
x
x
x
(
(
(
+
(
(
(
(
(
(
=
(
(
(
0
1
0
0 0 1
0 1 1
0 1 0
3
2
1
3
2
1
[ ]
(
(
(
=
3
2
1
1 0 0
x
x
x
:
que puede ser reescrita como
BBu AAx x + = DDu CCx : + =
donde
[ ]
[ ] [ ] (
(
(
=
(
(
(
=
0
0
0
0 0 1
0 1 1
0 1 0
C
A
AA
(
=
(
(
(
=
0
0
1
0
B
BB
[ ] 1 0 0 = CC [ ] 0 = DD
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
Respuesta a una Rampa del sistema G(s)=1/(s
2
+s+1)
t seg
S
a
lid
a
c
75
Note que
3
x es el tercer elemento de x . En matlab se puede obtener de la siguiente forma
% Respuesta a una Rampa
% La respuesta a una rampa es obtenida por la adicin de una nueva variable de
% estado, x3. La dimensin de las ecuaciones de estado es aumentada en uno.
% sistema en ecuaciones de estado
A=[0 1;-1 -1];
B=[0;1];
C=[1 0];
D=[0];
% nuevo sistema de ecuaciones AA,BB,CC,DD
AA=[A zeros(2,1);C 0];
BB=[B;0];
CC=[0 0 1];
DD=[0];
% Calcula la respuesta al escaln
[z,x,t]=step(AA,BB,CC,DD);
% grafica la respuesta a la rampa x3
x3=[0 0 1]*x';plot(t,x3,'k',t,t,'k-');
% adiciona etiquetas
grid on;title('Respuesta a una rampa de un sistema
en variables de estado');
xlabel('t seg');ylabel('Salida');
zoom on
Las Respuestas de los sistemas tambin se pueden obtener a partir de la ecuacin representada en
el tiempo como se muestra en los siguientes ejercicios:
Ejercicio: Calcula y representa grficamente la respuesta de un sistema de 1 orden con una
entrada en escaln unitario.
%Respuesta de un sistema de 1 orden con entrada en escaln unitario.
k=input('Introduce la ganancia del sistema:');
T=input('Introduce la constante de tiempo del sistema:');
t=0:0.1:20;
y=k-k*(exp((-t)/T)); %Definicin de la ecuacin de entrada en escaln unitario.
plot(t,y);
Ejercicio: Calcula y representa grficamente la respuesta de un sistema de 1 orden con una
entrada impulso.
%Respuesta de un sistema de 1 orden con entrada impulso.
k=input('Introduce la ganancia del sistema:');
T=input('Introduce la constante de tiempo del sistema:');
t=0:0.1:20; %Definicin del intervalo de representacin y del incremento.
y=(k/T)*exp((-t)/T); %Definicin de la ecuacin de 1 orden impulso.
plot(t,y); %Orden de dibujo de la grfica.
Ejercicio: Calcula y representa grficamente la respuesta de un sistema de 1 orden con una
entrada en rampa.
%Respuesta de un sistema de 1 orden con entrada en rampa.
k=input('Introduce la ganancia del sistema:');
T=input('Introduce la constante de tiempo del sistema:');
t=0:0.1:20;
y=k*(t-T)+k*T*(exp((-t)/T));
0 1 2 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
7
8
9
10
Respuesta a una rampa de un sistema en variables de estado
t seg
S
a
li
d
a
76
plot(t,y);
Otra forma de introducir seales de prueba a un sistema es como se muestra en el siguiente ejercicio:
Ejercicio: Simular y representar la respuesta a una entrada senoidal contaminada por ruido, siendo:
3 2
1 5 2
) (
) (
) (
2
2
+ +
+ +
= =
s s
s s
s R
s C
s G
En este caso, ser necesario utilizar una funcin universal que pueda ser utilizada para todas las
entradas y es lsim (ver ayuda de lsim).
A esta funcin, hay que especificarle la seal que le estamos aplicando, mediante la variable u que,
por ejemplo, para el caso de la rampa sera u=t y para el caso de una seal contaminada por otra
senoidal, ser: u=sin(t)+rand(size(t)), donde se sumarn una seal senoidal sobre el tiempo t y otra
seal aleatoria sobre el mismo tiempo, lo que dar lugar a una seal aleatoria que puede ser utilizada
como ruido, porque el ruido, en realidad, es eso, una seal aleatoria.
En Matlab el programa quedara:
% Parmetros del sistema.
t=0:0.1:10;
u=sin(t)+randn(size(t));
num=[2 5 1];
den=[1 2 3];
lsim(num,den,u,t);
Ejercicio:
1. El objetivo fundamental es el de observar como
un sistema de primer orden cambia su
respuesta de acuerdo al cambio de
parmetros.
1.1. - Anlisis de respuesta debida a cambios en parmetros
Realizar un programa (archivo .m) que calcule la respuesta al escaln, impulsiva y rampa de
un sistema de primer orden, donde (constante de tiempo) vara de 0 100 en pasos de 10 y los
visualice en una sola figura. Para ello utilice el comando step
Realizar un programa que calcule el tiempo de subida (Tr), establecimiento (Ts) y error de
posicin utilizando los datos generados por la funcin step.
Realizar una grfica del Tr vs. y Ts vs. .
Utilice el LTIVIEW para comprobar los resultados (use help LTIVIEW para ver como funciona).
1.2. - Anlisis en SIMULINK
Implemente el siguiente sistema de primer orden en SIMULINK,
1 5 . 0
2
) (
) (
) (
+
= =
s
s G
s R
s C
Utilizando como entrada una seal escaln y colocando un integrador y un derivador a la
salida, simule el modelo.
Analice las respuestas y comprelas con los resultados del ejercicio anterior.
2. Simulacin de sistemas de segundo orden
2.1. - Anlisis de respuesta debida a cambios en parmetros
Time (sec.)
A
m
p
l
i
t
u
d
e
Linear Simulation Results
0 2 4 6 8 10
-3
-2
-1
0
1
2
3
77
Implemente un programa que muestre la respuesta de un sistema de segundo orden con wn
=1 y donde (factor de amortiguamiento) vari desde 0 hasta 1.0 en pasos de 0.2.
Escriba un programa que le permita calcular el Mp, el tiempo de establecimiento en funcin de
los valores de los parmetros.
Haga un graco de Ts vs el Mp, para valores de y Wn entre 0 y 1.0.
Utilice el LTIVIEW para comprobar sus programas.
3. Sistemas de orden superior y efectos de adicin de ceros.
Implemente un programa que visualice la respuesta del siguiente sistema cuando wn =1 y
=0.55, variando desde 0 hasta 0.01 en pasos de 0.005.
2 2
2
2
) (
n n
n
s s
s G
+ +
=
Utilizando los mismos valores de parmetros anteriores, aada un cero z
o
=-1/a a la funcin de
transferencia
2 2
2
2
) 1 (
) (
n n
n
s s
as
s G
+ +
+
=
Comprobar el efecto de dicho cero para a = 10, 1, 0.5, 0.2, 0.1, 0.05.(comparar tambin en
una sola grafica la respuesta del sistema con el cero y sin el cero)
Para que valores de a puede despreciarse el efecto del cero?
Utilizando los mismos valores de parmetros anteriores, aada un polo p a la funcin de
transferencia
( )( ) p s s s
p
s G
n n
n
+ + +
=
2 2
2
2
) (
Comprobar el efecto de dicho polo para p = 10, 5, 1, 0.7, 0.2, 0.1, 0.05. .(comparar tambin en
una sola grafica la respuesta del sistema con el polo y sin el polo)
Para que valores de a puede despreciarse el efecto del polo?
4. Utilizando los anlisis expuestos en los ejercicios anteriores llegue a conclusiones especficas
sobre el comportamiento de los sistemas de segundo y primer orden. Presente un reporte completo
que incluya adems los programas y grficos realizados.
5. Identificacin de Sistemas de segundo orden.
78
79
UNIVERSIDAD MICHOACANA DE SAN NICOLS DE HIDALGO
FACULTAD DE INGENIERA ELCTRICA
LABORATORIO DE TEORA DE CONTROL I
Prctica 11 y 12: Diseo de Controladores
Objetivo:
Utilizacin del Matlab y Simulink para el diseo de controladores.
Introduccin:
La forma de utilizar un controlador en serie con la planta se muestra a continuacin:
Las acciones de controles automaticos se pueden clasiIicar basicamente en:
- Controlador on-oII
- Controlador proporcional (P)
- Controlador integral (I)
- Controlador proporcional - integral (PI)
- Controlador proporcional - derivativo (PD)
- Controlador proporcionalintegral- derivativo (PID)
ACCIN DE CONTROL ON-OFF.
Conecta o desconecta la entrada de la planta de acuerdo con el error actuante.
El comportamiento de este controlador queda descrito como.-
<
>
=
0 ) (
0 ) (
) (
2
1
t e para U
t e para U
t m
80
ACCIN DE CONTROL PROPORCIONAL.
u(t) = K
p
e(t) (1)
en el dominio de la frecuencia
p
K
s E
s U
=
) (
) (
(2)
donde K
p
es la ganancia proporcional.
El control proporcional esencialmente es un ampliIicador con ganancia ajustable y su
diagrama.
Sistema de nivel de liquido en lazo cerrado con control P.
La Iuncion de transIerencia de lazo cerrado es.-
KpR RCs
KpR
s R
s H
+ +
=
1 ) (
) (
Aplicando una entrada escalon unitario
s
s R
1
) ( =
s KpR RCs
KpR
s H
1
1
) (
+ +
=
Obteniendo h(t)
1 1
) (
1
+
+
+
=
|
.
|
\
| +
KpR
RKp
e
KpR
RKp
t h
t
RC
KpR
asi el valor Iinal de h(t).
1 1
lim
sH(s) lim
) (
0
0 s
+
=
+ +
=
=
KpR
KpR
KpR RCs
KpR
h
s
o bien por
( )
1 1 1
) (
1
+
=
+
+
+
=
|
.
|
\
| +
KpR
RKp
KpR
RKp
e
KpR
RKp
h
RC
KpR
81
En esta accion de control siempre existe un error en estado estacionario.
Suponiendo R100 s/m
2
, C2m
2
v Kp99. Entonces,
9998 . 0
1 ) 99 ( 100
) 100 ( 99
) ( =
+
= h
Respuesta del sistema ante una entrada escalon.
De la Figura, se ve que el hecho de tener una ganancia Kp grande, permite que el
error estacionario sea pequeo.
ACCIN DE CONTROL INTEGRAL.
dt t e
T
t m
i
}
= ) (
1
) ( (3)
donde:
Ti es la constante de tiempo Integral
en funcin de transferencia.
Ejemplo.- Para el sistema de nivel de lquido.
82
Sistema de nivel de lquido con accin integral.
la Iuncion de transIerencia en lazo cerrado es.-
R RCs s T
R
RCs
R
s T
RCs
R
s T
s R
s H
i
i
I
+ +
=
+
+
+
=
) 1 (
1
1
1
1
1
) (
) (
con una entrada escalon unitario
s
s R
1
) ( =
s R RCs s T
R
s H
i
1
) 1 (
) (
+ +
=
Por el teorema del valor Iinal
1
1
) 1 (
lim ) (
0
= =
+ +
=
R
R
s R RCs s T
R
s h
i
s
Graficando la respuesta del sistema con los mismos datos que el ejemplo anterior y
con Ti=0.001, tenemos una respuesta altamente oscilatoria, aunque el error en
estado estable sea cero ( 0 1 1 ) ( ) ( ) ( = = = h R e ).
Respuesta del sistema de nivel de lquido con accin integral.
ACCIN DE CONTROL DERIVATIVA.
dt
t de
T t m
d
) (
) ( = (4)
donde:
Td.- es la constante de tiempo derivativa
83
Accin de control derivativa.
ACCIN DE CONTROL PROPORCIONAL-INTEGRAL.
}
+ =
t
i
p
p
dt t e
T
K
t e K t u
0
) ( ) ( ) ( (5)
en funcin de transferencia:
|
|
.
|
\
|
+ =
s T
K
s E
s U
i
p
1
1
) (
) (
(6)
Diagrama del control proporcional integral.
donde 1/Ti recibe el nombre de Irecuencia de reposicion y es la cantidad de veces que se
repite la accion proporcional por minuto.
a) Entrada Escalon unitario b) Accion del control PI-ante un escalon unitario
Si
i p i
K K T =
s
K
Kp
s E
s M
I
+ =
) (
) (
(7)
ACCIN DE CONTROL PROPORCIONAL DERIVATIVA.
dt
t de
T K t e K t u
d p p
) (
) ( ) ( + = (8)
en funcin de transferencia:
( ) s
d
T
p
K
s E
s U
+ = 1
) (
) (
(9)
donde K
p
es la ganancia proporcional y T
d
es una constante denominada tiempo derivativo.
84
a) Entrada rampa unitaria b) Accion del control PD ante una entrada rampa unitaria.
Diagrama del control proporcional y derivativo.
ACCIN DE CONTROL PROPORCIONAL INTEGRAL DERIVATIVA.
}
+ + =
t
d p
i
p
p
dt
t de
T K dt t e
T
K
t e K t u
0
) (
) ( ) ( ) ( (10)
en Iuncion de transIerencia:
|
|
.
|
\
|
+ + = s T
s T
K
s E
s U
d
i
p
1
1
) (
) (
(11)
Donde:
- K
p
es la ganancia proporcional
- T
i
es el tiempo integral
- T
d
es el tiempo derivativo.
Diagrama del control proporcional y derivativo e integral
El PID tiene ventajas con respecto a las tres acciones de control anteriores; si no se eligen
adecuadamente sus parametros Kp, Ti y Td puede empeorar el comportamiento del sistema.
85
Respuesta del control PID ante una entrada rampa unitaria.
Consejos generales para el diseo de un controlador PID.
1. Obtener la respuesta en bucle abierto y determine los parmetros que deben ser
mejorados.
2. Aada un control proporcional para mejorar el tiempo de subida.
3. Aada un control derivativo para mejorar el sobreimpulso.
4. Aada un control integral para eliminar el error en rgimen permanente.
5. Ajuste los valores de K
p
, T
i
y T
d
para obtener la respuesta deseada. Puede
dirigirse a la tabla para averiguar qu controlador controla cada caracterstica.
6. Por ltimo, tenga en cuenta que, si no es necesario, no se tiene porqu implantar
los tres controladores (proporcional, derivativo e integral) en un nico sistema.
Por ejemplo, si un controlador PI proporciona una respuesta suficientemente
buena entonces no es necesario implantar el controlador derivativo en el sistema.
Mantenga el controlador tan sencillo como sea posible.
SINTONIZACIN DE PIDs.
Mtodo de Ziegler y Nichols.
Ziegler y Nichols encontraron que la mayora de los sistemas de control de procesos
proporcionan, como respuesta a una entrada escaln unitario, una curva en forma de
S, denominada Curva de Reaccin del Proceso. Dicha curva se puede generar
experimentalmente o a partir de la simulacin dinmica de la planta.
86
Curva S, respuesta de un proceso tpico a la entrada escaln unitario.
s
o
t
e
s
K
s G
+
=
1
) (
(12)
donde: K es la ganancia esttica.
es la constante de tiempo aparente.
t
o
es la constante de tiempo muerto.
Tabla 1.- Reglas para sintonizar controladores, por el Mtodo
de Respuesta Transitoria de Ziegler y Nichols.
Mtodo de la Respuesta
Transitoria de Ziegler y Nichols
Controlador K
C
T
I
T
D
P T/L
o
0
PI 0.9*T/L L/0.3 0
PID 1.2*T/L 2*L 0.5*L
Mtodo de Oscilaciones Sostenidas. o Mtodo de la Ganancia Lmite
Esquema de control para determinar la Ganancia Lmite y el Periodo ltimo.
Donde K
U
es la ganancia limite y esta definida como la ganancia del controlador
proporcional a la cual el sistema retroalimentado oscila de manera indefinida a la
frecuencia ltima (1/T
U
). De tal manera que el sistema tendr la respuesta mostrada
en la Figura.
87
Respuesta del Sistema Retroalimentado cuando la Ganancia del
Controlador es igual a la Ganancia Limite.
Tabla 2.- Frmulas de Sintonizacin para el Mtodo de la Ganancia Lmite.
Mtodo de la Ganancia Lmite
Controlador K
C
T
I
TD
P K
U
/2 0
PI K
U
/2.2 T
U
/1.2 0
PID K
U
/1.7 T
U
/2 T
U
/8
Ejercicio:
Para el sistema:
La funcin de transferencia que relaciona la entrada (ngulo theta) con la salida
(posicin de la bola) esta dada por:
2
2
1
) (
) (
s
m
R
J
L
mgd
s T
s R
|
.
|
\
|
+
=
Sustituyendo valores:
2
21 . 0
) (
) (
s s T
s R
=
REQUERIMIENTOS DE DISEO
Los requerimientos de diseo para el problema son:
88
-tiempo de establecimiento menor que 3 segundos
-sobrepaso mximo menor que 5%
RESPUESTA DEL SISTEMA EN LAZO ABIERTO
Recordamos la respuesta del sistema en lazo abierto a una entrada escalon de 0.25 rad.
Aadimos, para ello, el comando:
t=0:0.1:25;
num=0.21;
den=[1 0 0];
gs=tf(num,den);
step(0.25*gs,t,k)
Respuesta que hace evidente la necesidad de
un controlador para cumplir los requerimientos
de diseo especificados.
DISEO DEL CONTROLADOR
Comenzamos analizando la respuesta del sistema en
lazo cerrado a una entrada escalon de 0.25 rad.
Se propone el siguiente comando
[numc, denc]=feedback(num,den,1,1);
gsc=tf(numc,denc);
step(0.25*gsc,k)
-a que tipo de controlador equivale cerrar el lazo?
-que conclusiones se obtienen de la respuesta a la
entrada escalon- se hace el sistema estable? se cumplen los requerimientos de diseo?
Aadiendo un controlador proporcional con Kp10 y aplicando una entrada escalon:
Kp=10;
nump = Kp*num
[numc,denc]=feedback(nump,den,1,1)
gsp=tf(numc,denc);
step(0.25*gsp,k);
-se hace el sistema estable?
-qu ocurre al variar Kp? se obtienen mejores resultados?
-pueden cumplirse los requerimientos de diseo con un controlador proporcional
exclusivamente?
Time (sec.)
A
m
p
l
i
t
u
d
e
Step Response
0 5 10 15 20 25
0
2
4
6
8
10
12
14
16
18
From: U(1)
T
o
:
Y
(
1
)
Time (sec.)
A
m
p
li
t
u
d
e
Step Response
0 10 20 30 40 50 60
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
From: U(1)
T
o
:
Y
(
1
)
Time (sec.)
A
m
p
l
i
t
u
d
e
Step Response
0 5 10 15 20 25 30 35
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
From: U(1)
T
o
:
Y
(
1
)
89
El Lugar de las Raices permite observar la posicion
de los polos en lazo cerrado al variar la ganancia K el
cual se obtiene con el comando:
rlocus (num,den) %planta original
Si variando la ganancia K, es posible que el lugar de
las raices (LDR) pase por los polos deseados no haria
Ialta ningun otro tipo de regulador, el regulador
proporcional es suIiciente. Si aun variando la
ganancia no se consigue que el LDR pase por dichos
polos hay que introducir ceros y polos adicionales de Iorma que se modiIique el LDR hasta
que pase por los polos requeridos.
Aadiendo un controlador proporcional derivativo (para con el cero que inserta el derivador
elimine los polos de la planta que estan en el origen) con Kp10 y td1 y aplicando de nuevo
la entrada escalon anterior:
kp=10;
td=1;
numd=kp*[td 1];
numcd=conv(num,numd);
[numcd, dencd] = feedback(numcd,den,1,1)
siscd=tf(numcd,dencd)
step(0.25*siscd,k);
En simulink:
s+1
s
Transfer Fcn1
0.21s
s
2
Transfer Fcn
Sum
Step
Scope
10
Gain
Aadiendo un controlador proporcional - integral derivativo con Kp=10, td=10 y
ti=0.1 y aplicando de nuevo la entrada escaln anterior,
kp=10;
td=1;
ti=10;
numpid=kp*[td*ti ti 1];
denpid=[ti 0];
numcpid=conv(num,numpid);
dencpid=conv(den,denpid);
[numcpid, dencpid] =
feedback(numcpid,dencpid,1,1)
siscpid=tf(numcpid,dencpid)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-1.5
-1
-0.5
0
0.5
1
1.5
Real Axis
I
m
a
g
A
x
i
s
Time (sec.)
A
m
p
l
it
u
d
e
Step Response
0 1 2 3 4 5 6
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Time (sec.)
A
m
p
l
it
u
d
e
Step Response
0 1 2 3 4 5 6
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
90
step(0.25*siscpid,k);
En simulink:
10s +10s+1
2
10s
2
Transfer Fcn1
0.21s
s
2
Transfer Fcn
Sum
Step
Scope
10
Gai n
MTODO ALTERNATIVO DE DISEO DEL REGULADOR
Partiendo de la siguiente tabla y utilizando un procedimiento de tanteo obtener un controlador
que cumpla los requerimientos especiIicados.
A la hora de determinar los valores de Kp, KD y Ki utilizar esta tabla tan solo como
reIerencia. Recordar que el cambio de uno de ellos condiciona el valor de los otros.
RESPUESTA TIEMPO SUBIDA SOBREIMPULSO
TIEMPO.
ESTABLECIMIENTO
ERROR
K
p
Disminuye Aumenta Poca variacin Disminuye
T
i
Disminuye Aumenta Aumenta Elimina
T
d
Poca variacin Disminuye Disminuye Poca variacin