Tutorial para MATLAB Control System Toolbox y SimulinkÍNDICE 1.- Introducción 2.- Modelos LTI (Linear Time-Invariant) 2.1.- Creación de modelos 2.2.- Conversión entre modelos 2.3.- Conversión entre tiempo continuo y tiempo discreto 3.- Herramientas de análisis 3.1.- Simulación (respuesta temporal) 3.2.- Polos, valores propios y ceros 3.3.- Respuesta frecuencial 3.4.- Aproximación de Pade 3.5.- La función visor de modelos LTI 4.- Herramientas de diseño de control 4.1.- Lugar de las raíces 4.2.- Recolocación de los polos 4.3.- Control óptimo 4.4.- Estimador de Kalman (o filtro) 5.- Obtención de la respuesta temporal 5.1.- Raíces reales 5.2.- Raíces complejas 6.- Overview over functions in Control System Toolbox 7.- SIMULINK: Diagramas de bloques y simulación . 3.4329 0.0000 2.0. % » » » » Definición de vectores.2619 0. pudiendo ser útil en cualquier campo de trabajo.3000 » inv(m) % ans = 0.0.2381 -0. otras operaciones sobre matrices: % det. cond.2619 0.0000 % Análogamente. Si mientras se está programando aparece alguna duda sobre una función. eig.1000 0 % 0 2.v2'.1443 » ide=a*m % ide = 1.2000 % 3. » m=[1.4762 0.4329 0.1. Una de las virtudes de este programa está en la posibilidad de uso sin requerir grandes conocimientos del mismo.1587 % -0.0000 % 0 0 1.0.2381 -0.0.4762 -0.Introducción El programa MATLAB (MATrix LABoratory) es una herramienta cuya finalidad es facilitar el cálculo.1.1746 % 0..0000 1.2.2..0000 0. una de forma inmediata.2381 0.0000 % 0..1. basta teclear en el Command Window la función help seguida del nombre de la función. Se presenta un breve recordatorio de las funciones más habituales de MATLAB. en la que se introducen los datos y la función en el Command Window y automáticamente aparece la respuesta.0000 0 0. rank.2. para que aparezca un texto de ayuda.v3'] % m2 = % % % m2t = % % % ans = 1 % ans = 3 % Warning: operaciones más comunes 1 2 3 0 2 0 3 3 » m2t=m2' » size(m1) » size(m2) » m2inv=inv(m2) 1 2 0 0 0 3 1 2 3 1 0 1 2 0 2 0 3 3 9 3 Matrix is singular to working precision.3] % m = 1.3.4762 0.2381 0.1] % v1 = 1 0 v2=[2.m.v2. % % Información sobre las variables que están en la memoria .. svd.2] % v2 = 2 0 v3=[0 3 3] % v3 = 0 3 v1t=v1' % v1t = 1 % 0 % 1 » m1=[v1.v3] % m1 = 1 0 1 2 » m2=[v1'. matrices y v1=[1.1587 % -0.0000 1.1443 » a=inv(m) % a = 0. Permite dos maneras de trabajar...1746 % 0. únicamente se deben conocer las funciones que se van a necesitar. se puede trabajar mediante programas de usuario que se almacenan en ficheros .0. o bien.0000 0 3.4762 -0. FOR-NEXT » for k=1:20 --» end WHILE » while expression --» end IF THEN ELSE » if condition --» else --» end .) elimina la respuesta inmediata. MATLAB. permite la realización de bucles repetitivos sujetos a una condición y bifurcaciones.» who » whos % Your variables are: % a m m2inv v1t % ans m1 m2t v2 % ide m2 v1 v3 % Name Size Bytes Class % a 3x3 72 double % ans 1x2 16 double % ide 3x3 72 double % m 3x3 72 double % m1 1x9 72 double % m2 3x3 72 double % Grand total is 77 elements using 616 array array array array array array bytes % » clear % --> Borra todas las variables en la memoria % Nota: punto y coma (. Programación de lazos: Al igual que todos los lenguajes de programación. % diferencia de dos FdT Transfer function: s --------------2 s^2 + 3 s + 1 » p5=p1/p2 % cociente de dos FdT Transfer function: 2 s + 1 ------s + 1 » p6=feedback(p1. y operaciones elementales: num. ejecutando "bode(sys1)" se obtiene el diagrama de Bode del proceso sys1.num=[a b]. *..d. 2.[2 1]). % p1=1/(s+1) p2=tf(1. Por ejemplo.p2) % realimentación p1/(1+p1.ft. pudiendo incorporar también tiempo muerto (consulte “help tf”).. y tanto funciones de transferencia como en espacio de estado.T.Modelos LTI (Linear Time-Invariant) Los sistemas o modelos se representan como objetos LTI (Linear TimeInvariant) y se consideran como una variable MATLAB. % p2=1/(2s+1) p3=p1*p2 % producto de dos FdT en serie Transfer function: 1 --------------2 s^2 + 3 s + 1 » p4=p1-p2.2.+-.1. Los modelos soportados son tanto continuos como discretos. La utilización de objetos LTI simplifica la sintaxis de las funciones.[1 1]). como sys1.den.Creación de modelos Funciones de transferencia continuas La función "tf" genera funciones de transferencia a partir del polinomio numerador y del polinomio denominador.den) Transfer function: 2 s + 1 ------------4 s^2 + s + 1 % » » » Otras operaciones sobre la FdT: p1=tf(1.p2) Transfer function: 2 s + 1 --------------2 s^2 + 3 s + 2 ./ % Ejemplo: » a=2.den= [4 1 1]. % Construcción de F. b=1.sys=tf(num. 2]. B=[0. u(t) es la variable manipulada y y(t) es la variable medida (estas variables son generalmente vectores).D) a = x1 x2 b = x1 x2 c = y1 d = y1 u1 0 x1 1 x2 0 u1 0 2 x1 0 -4 x2 1 -2 Continuous-time model. ss1=ss(A.% Nota: se pueden utilizar números o variables definidas previamente Presencia de tiempo muerto Cuando hay tiempo muerto se especifica el valor precedido por la palabra clave ‘iodelay’.5) Transfer function: 2 s + 1 exp(-5*s) * ------------4 s^2 + s + 1 Modelos continuos en espacio de estado La función "ss" crea modelos lineales en espacio de estado de la forma: dx/dt=Ax + Bu y=Cx + Du donde A.1.C.den. x(t) es el vector de estado. C y D son matrices. D=[0].B. b=1. C=[1.-4. tiempo muerto de 5 sys=tf(num.num=[a b]. % » % » Ejemplo: a=2.'iodelay'.den= [4 1 1].-2].0]. . B. % % % % » » Ejemplo: dx1/dt=x2 dx2/dt=-4*x1 -2*x2 + 2*u y=x1 A=[0. 5*z+2) sampling time 0. Hdis=tf(numdis.2].'variable'.5.Funciones de transferencia discretas Las funciones de transferencia discretas (en z) y los modelos en espacio de estado discretos se construyen de la misma manera que los modelos continuos. Ts) donde Ts es el periodo de muestreo 2. >> Hdis=tf(numdis. dendis=[1.1.Tsdis.5 --------------z^2 + 1.5)/(z2+1.4.4 También se puede trabajar con funciones de transferencia en z-1.dendis.4 (unidades de tiempo) numdis=[1.0..5 z^-1 + 2 z^-2 Sampling time: 0. Q.4 NOTA: darse cuenta que las dos últimas funciones de transferencia son diferentes. C y D son matrices. Q.2.5 z + 2 Sampling time: 0. » ssdis=ss(P. x(k) es el vector de estado. u(k) es la variable manipulada y y(k) es la variable medida (estas variables son generalmente vectores).5 z^-1 --------------------1 + 1.Conversión entre modelos De espacio de estado a función de transferencia .dendis. C. Tsdis=0. Modelos discretos en espacio de estado Estos modelos se suponen de la forma: x(k+1)=P*x(k) + Qd*u(k) y(k)=C*x(k) + D*u(k) donde P. D. % % % » » Ejemplo: Hdis(z)=(z+0.'z^-1') Transfer function: 1 + 0.5].Tsdis) Transfer function: z + 0. D).0000 2.0000 De función de transferencia a espacio de estado "ss" convierte la función de transferencia a espacio de estado.5 u1 0. » tfss1=tf(ss1) Transfer function: 2 ------------s^2 + 2 s + 4 También se puede utilizar la función “ss2tf” que proporciona el numerador y el denominador de la función de transferencia.B.D) NUM = 0 DEN = 1.5 0 x1 -2 8 x2 -0. D=[0].0]. por lo que "ss" escoge la “controller-canonical form”.B. >> n=2. Pero como esta conversión no es única.d=[1 2 4].0000 4.0000 -0.C.-4. C=[1.La función "tf" convierte los modelos en espacio de estado a las correspondientes funciones de transferencia de acuerdo con las siguientes expresiones: H(s) = C(sI-A) -1B + D Hd(z) = C(zI-P) -1P + D (tiempo continuo) (tiempo discreto) » A=[0.DEN] = SS2TF(A.0000 2. porque hay infinitas representaciones en espacio de estado. » ss1=ss(A. B=[0.C.1. >> [NUM.5 0 . >> g=tf(n.d) Transfer function: 2 ------------s^2 + 2 s + 4 >> ss(g) a = x1 x2 b = x1 x2 c = y1 x1 0 x2 0.2].-2]. d) A= -2 1 B= 1 0 C= 0 D= 0 -4 0 2 2. the matched pole-zero method.d = y1 u1 0 Continuous-time model.5 z^(-5) * ----------z . ejemplo K=2. Ts=0.'zoh') Transfer function: 0. >> [A..2. Tdelay=1. Tustin's method of bilinear transformation. También se puede utilizar la función “tf2ss” que necesita el numerador y el denominador de la función de transferencia.C.1].Ts.D]=tf2ss(n.0].0.0. utilizando la sintaxis: » sysdis=c2d(syscont.3. T=4.'ioDelay'.2 .Tdelay).9512 Sampling time: 0. den=[T.metodo) Ts es el periodo de muestreo. first order hold. método es el procedimiento de discretización a utilizar. Hcont4=tf(num. Hdis4=c2d(Hcont4.5 z . num=[K.den. a escoger entre los siguientes: 'zoh' 'foh' 'tustin' 'prewarp' 'matched' % » » » » for for for for for zero order hold. Tustin's method with frequency prewarping.Conversión entre tiempo continuo y tiempo discreto De tiempo discreto a tiempo continuo Un modelo de tiempo continuo se puede discretizar utilizando la función "c2d".Ts.B. .De tiempo discreto a tiempo continuo Utilizar la función "d2c". Simulación (respuesta temporal) Se puede simular la respuesta al escalón unitario mediante la función "step".5 0.4 0.p1=tf(k.3 0.p1=tf(k.20 1 0.3.d=[T.1].6 0.10.d) Transfer function: 1 -------10 s + 1 » step(p1) % Construcción de la primera curva del gráfico » hold % Current plot held % Tau=5 » T=5. uso del escalón (default) Tau=10 k=1. % % % % % » Respuesta de LA de un sistema de primer orden a una entrada escalón al variar la constante de tiempo Tau Secuencia de comandos.d) Transfer function: 1 ------5 s + 1 » step(p1) % Construcción de la segunda curva del gráfico % Tau=20 » T=20.1 0 0 20 40 60 tiempo 80 100 120 .d=[T.8 0.2 0. % para los otros comandos: --> help plot » title('Respuesta de un sistema de primer orden: Tau=5..20') » xlabel('tiempo') » ylabel('respuesta') » gtext('5') » gtext('10') » gtext('20') Respuesta de un sistema de primer orden: Tau=5..1.10.d=[10.7 5 10 20 respuesta 0.1].d) Transfer function: 1 -------20 s + 1 » step(p1) % Construcción de la tercera curva del gráfico % Ver gráfico siguiente.9 0.1].Herramientas de análisis 3.p1=tf(k. d=[T.p1=tf(n.4 A m plit ud 0. para saber cómo hacerlo. % Respuesta temporal para otras entradas % % A) Impulso (TdL del impulso = 1) » n=1.dx=[1 0 om^2]. ejecutar “help step”. impulse(p1x) Current plot held IRespuesta 1 0.2 0 -0.om=1.d) % def.1].Se puede fijar el tiempo total con el fin de mejorar la superposición de los gráficos o su comparación o también se puede definir el vector de tiempos.dx)% def. también se puede utilizar para obtener la respuesta a otras entradas que tengan transformada de Laplace.nx=A*om.2 -0. proceso de orden 1 Transfer function: 1 ------2 s + 1 » A=1. entrada sinusoidal en TdL Transfer function: 1 ------s^2 + 1 % NOTA: se trata la señal de entrada como si fuera una función de transferencia y se calcula la respuesta a la entrada impulso (resultado correcto pero tratamiento incorrecto) » p1x=p1*px % proceso x entrada Transfer function: 1 --------------------2 s^3 + s^2 + 2 s + 1 » impulse(px) » hold.T=2.px=tf(nx.8 0.6 -0. Para obtener la respuesta al impulso se utiliza la función "impulse".) respuesta y1 x= entrada senoidal .6 0.4 -0.8 -1 0 5 10 15 20 25 30 35 40 Time (sec. . La ecuación se incluye de la forma siguiente: .100)..m produce el gráfico: .. constituyen un ciclo do.u.t) % calcula la """" La función "initial" simula la respuesta libre desde el estado inicial para un modelo en espacio de estado.También se puede utilizar la función “lsim” que sirve para cualquier entrada. clf t=linspace(0. Open file-M (New/Old). Crear Nuevo Objeto.0… El fichero Fichero.. % crea un vector con 3 val.t) % grafica la respuesta del proceso p..2.click sobre el punto de inserción .20.M y de la figura MATLAB: Respuesta de un sistema de primer orden al variar la constante de tiempo τ. para un tiempo t » y=lsim(p. » t=.u. a la entrada u. % Activar el Editor de Matlab: File. Utilización de ficheros m y realización de informes Los ficheros .M son útiles cuando se tiene una serie de comandos que pueden ser utilizados varias veces o bien para conservar las acciones relizadas al margen del Command History de MATLAB. % definición del vector tiempo » u=.t) hold on end title('Respuesta de un sistema de primer orden: Tau=1. % definición del vector de entrada (analítico o datos numéricos) » p=.5') % La serie de comandos for … end.d) pause step(p1. esta función requiere un vector de tiempos equiespaciados y un vector con los valores de la entrada. % definición del proceso » lsim(p.de la ToolBar de Word: Insertar. Objeto. %B) Uso de lsim para entradas u(t). Microsoft editor de ecuaciones 3. tau=[1 2 5].. Preparación del documento mediante WORD con integración del programa.para la constante de tiempo n=1 for i=1:3 i d=[tau(i) 1] p1=(tf(n. 5.Step Response sistema de orden 1. T=1.1 0 0 5 10 Time (sec. Edit.1].2.0.2.zer]=pzmap" se calculan los polos y ceros.5 1 0. Copy Options En el entorno Figure. d=[10. » n=[2 1]. Edit.) 15 20 Para insertar el gráfico en el texto.zeros]=pzmap(pro) poles = % calcula polos y ceros (o grafica) % calcula polos % define el proceso .Polos.6 0.2 0.4 0.7 Amplitude 0.. Copy Figure En WORD elija Pegado especial y escoja la selección que prefiera (evite copiar imágenes en mapa de bits. primero se seleccionan las opciones de copia y luego se copia: En el entorno Figure. porque ocupan mucho espacio) 3. los polos y ceros (“pzmap”). En el caso de sistemas en espacio de estado se pueden calcular los valores propios con “eig”.1936i » [poles. O. valores propios y ceros A partir del modelo se pueden obtener los polos (“pole”). los ceros y la ganancia (“tzero”).1936i -0.9 0. Si se ejecuta sólo “pzmap” aparece un gráfico de los polos y ceros en el plano complejo.L.2500 + 0.d) Transfer function: 2 s + 1 ---------------10 s^2 + 5 s + 1 » pole(pro) ans = -0.5 0.2500 .. pro=tf(n.3 0.8 0. Con "[pol. 2500 .gain]=tzero(pro) zero = -0.94e-001i -2.91e-001 7.50e-001 . w.16e-001 3.1.k]=residue(n.0.-0.p. (rad/s) 3.16e-001 Residuos y expansión en fracciones parciales >> [r.50e-001 + 1. .Respuesta frecuencial La respuesta frecuencial (diagrama de Bode) se puede calcular con la función "bode".5000 gain = 0.1000 . >> damp(pro) Eigenvalue -2.91e-001 Freq.2500 .0.2500 + 0. La ganancia en dB y el defase en grados frente a la frecuencia en rad/s.1936i -0.1936i -0.1291i p = -0. 3. no la ganancia del sistema comúnmente entendida.1291i 0.1936i zeros = -0.5000 » [zero. ésta puede obtenerse con el comando: dcgain >> dcgain(pro) ans = 1 %la ganancia del sistema % calcula ceros y ganancia (K’) La función "damp" calcula el coeficiente de amortiguamiento y la frecuencia de resonancia.1000 + 0..d) r = 0.0.La ganancia (K’) es la constante de la expresión GPZ(s). Con "bode(sys.1936i k = [] Nota: En este caso k es el término constante de la expansión en fracciones parciales (k=0: m=n).2500 + 0.3.w)" se utiliza el vector de frecuencia indicado.2000 Nota: .94e-001i Damping 7. 5. 3.1]) % primer orden con constante de tiempo T=10 . >> margin(pro) La función “margin” también soporta sistemas con tiempo muerto. pro=tf(n.También se puede obtener el diagrama de Nichols o el de Nyquist con "nichols" o "nyquist".4. son útiles para aquellas funciones que no soportan el tiempo muerto. % Retardo y Approximaciones de Padé % Ejemplo para el sistema FOPTD: T=D=10 » p1=tf(1. » n=[2 1]..2) Transfer function: 2 s + 1 exp(-2*s) * ---------------10 s^2 + 5 s + 1 >> bode(protd) La función “bode” soporta sistemas con tiempo muerto.[10. d=[10.Aproximación de Pade Las aproximaciones de Pade son funciones de transferencia racionales que aproximan el comportamiento del tiempo muerto.d. Análisis de estabilidad basado en la respuesta frecuencial La función "margin" calcula el margen de fase y el margen de ganancia y presenta también el diagrama de Bode.d) % define el proceso Transfer function: 2 s + 1 ---------------10 s^2 + 5 s + 1 >> bode(pro) Magnitude (dB) Bode Diagram 0 -10 -20 -30 -40 0 Phase (deg) -45 -90 10 -2 10 -1 10 Frequency (rad/sec) 0 10 1 >> protd=tf(n.'iodelay'.1]. dd1]=pade(10.dd5]=pade(10. % proceso FOPTD con Pde. de orden n=3 del retardo D=10. % proceso FOPTD con Pde.3024 % proceso FOPTD con Pde.6 s + 0.dd3]=pade(10.512 s + 0.1).3024 ---------------------------------------------------s^5 + 3 s^4 + 4.2 s^2 .2 s^3 + 3.2 -----------------10 s^2 + 3 s + 0. » pd3=tf(nd3. » [nd3.approx.0.2 s^3 + 3. de orden n=1 del retardo D=10.2 % » » » » » » » comparación de la respuesta al escalón unitario p13=p1*pd3.'ioDelay'.10) % Retardo exacto Transfer function: 1 exp(-10s)-------10 s + 1 » » » » » » step(p1del) % respuesta al escalón exacta grid gtext('n=1') gtext('n=3') gtext('n=5') gtext('exacto') .approx.dd3) Transfer function: -s^3 + 1.2 -------s + 0.[10. de orden n=5 step(p11) % respuesta al escalón Pde.dd5) Transfer function: -s^5 + 3 s^4 .36 s^2 .Transfer function: 1 -------10 s + 1 % construcción Pde.approx.4.12 % construcción Pde.dd1) Transfer function: -s + 0.36 s^2 + 1. n=3 step(p15) % respuesta al escalón Pde.2 s^2 + 0.5). de orden n=3 p15=p1*pd5. » pd5=tf(nd5.approx. de orden n=5 del retardo D=10.512 s + 0.3). n=5 p1del=tf(1.12 ----------------------------s^3 + 1. » [nd1. » [nd5.1].6 s + 0.1.approx. » pd1=tf(nd1. de orden n=1 » p11=p1*pd1 Transfer function: -s + 0.2 % costrucción Pde. n=1 hold % Current plot held step(p13) % respuesta al escalón Pde.approx. » title('Efecto de las approximaciones de Padé') » gtext('proceso: FOPTD. %para otras funciones de Matlab (ej. fedback) es necesario usar Pade Step Response Efecto de las aproximaciones de Padé 1 0.2 n=3 0 n=5 n=1 0 14 28 Time (sec..8 A mp litu d 0. Rlocus. >> ltiview(pro) .4 0.) proceso: FOPTD. T=D=10') » gtext('proceso: FOPTD. donde se puede seleccionar los gráficos que se deseen. T=D=10') % Nota: La aprox. T=D=10 42 56 70 exacto 3.5.La función visor de modelos LTI “ltiview” presenta en un solo gráfico compuesto. de Pade de orden n=3 da precisión suficiente en general.6 0. 6576 + 1. % » » » » Definición del proceso g(s) n=1. g1=tf(n..g2=tf(n. Estos polos constituyen el lugar de las raíces del sistema de lazo cerrado. situando los ejes sobre el valor.1. La función "rlocus" calcula los polos de lazo cerrado en función de k.4. gtc=g1*g2*g3 Transfer function 1 -----------------------------0.1667 s^3 + s^2 + 1.t2=1/2.t3=1/3. como la aproximación de Pade.d1).8478i .833 s + 1 % Uso de Rlocus (default) » rlocus(gtc) Root Locus 5 4 3 2 Imaginary Axis 1 0 -1 -2 -3 -4 -5 -8 -7 -6 -5 -4 -3 -2 -1 0 1 Real Axis La función "rlocfind" permite calcular la ganancia para un determinado polo.d3=[t3 1]. MATLAB devuelve el valor del polo y de la ganancia >> rlocfind(gtc) Select a point in the graphics window selected_point = -2.d2=[t2 1].Lugar de las raíces A partir de un sistema de lazo cerrado con realimentación negativa y función de transferencia de lazo abierto kG(s). donde k es una constante. d1=[t1 1].g3=tf(n.d2).d3)..t1=1. La función “rlocus” no admite funciones de transferencia con tiempo muerto por lo que será necesario utilizar una aproximación racional.Herramientas de diseño de control 4. % file % la respuesta se puede salvar con yn=y y dibujada % % repetido para Kc=1.75') » gtext('Kc=0.0].y075.y1) » hold » plot(t.dc). MATLAB encuentra el valor de k correspondiente al valor más cercano.y075. ver instrucciones a continuación » plot(t.dp).ans = 1. % y dibujados con plot.pade. % proceso FOPTD t=linspace(0.p1=tf(np. cpi=tf(nc.':') » gtext('Kc=1') » gtext('Kc=1.') » plot(t.t) % gráfico y=step(eta.y05.100).100.dd). regulador PI.del=tf(nd.75. Regulador:Taui=10') » xlabel('tiempo') » ylabel('Yr') .'-. n=3 pd=p1*del. [nd. % definición del intervalo de t % % Controlador PI: CPI=Kc*(1+1/Ti*s)= (Kc*Ti*s+Kc)/(Ti*s+0).step.y05. T=D=10.1). Ejemplo de aplicación a un controlador PI % Respuesta en lazo cerrado.t). % proceso de orden 1.3). Proceso: FOPTD. 1.feedback.y125. % Yr=g/(1+g)*r step(eta. % retardo D=10.plot % Definición del proceso np=1. g=cpi*pd % OL Function eta=feedback(g. Ti=10.50 % resultados salvados en y1. 0.25') » gtext('Kc=0.dp=[10.5250 NOTA: De hecho el punto seleccionado no tiene por qué estar exactamente en el lugar de las raíces.y125. dc=[Ti. 0.dd]=pade(10.25') » gtext('Kc=1.'--') » grid » plot(t. pade.5') » title('Respuesta Yr. Controlador PI % al variar la ganancia del controlador % comandos Matlab:num. T=10. Proceso:FOPTD') » gtext('proceso:T=D=10.den.tf.Kc=input('dar los valores de Kc= ') % Kc.25.1]. Ti=10 nc=[Kc*Ti Kc]. 6 0.2 0 20 40 tiempo 60 80 100 Kc=0. Se desea controlar por realimentación del vector de estado: u=-Kx donde K es la matriz de ganancia. P FOPTD Kc=1. La función "place" calcula K tal que los valores propios de (A-BG) sean los que se deseen.. regulador PI. Suponga que el sistema a controlar tiene el modelo x(k+1)=Px(k)+Qu(k) y el controlador es u(k)=-Kx(k). Suponga que el sistema a controlar es dx/dt=u y que el valor propio de lazo cerrado deseado es = -4: » E=-4.4 1.25 Kc=1 Kc=0.1.E) K = 4 La función "place" trabaja de forma similar para sistemas en tiempo discreto.Recolocación de los polos Suponga que el sistema a controlar tiene un modelo en espacio de estado (tiempo continuo) dx/dt=Ax+Bu.2 Respuesta Yr.B=1.8 1.2 0 -0. » K=place(A.2.8 0.4 0. El sistema en lazo cerrado tiene el siguiente modelo en espacio de estado dx/dt=Ax+B(Kx)=(A-BK)x.6 1.75 1 Yr 0. El sistema de lazo cerrado tiene el modelo en espacio de estado siguiente: x(k+1)=(P-QK)x(k) .B.5 4. » A=0. W=1.Estimador de Kalman (o filtro) "kalman" diseña filtros de Kalman tanto para sistemas continuos como discretos.W.2.T. [K.Q.2. Esto significa que el vector de ganancia.S.E]=dlqr(P.15.3.T. » » » » P=0.1797 S = 2.S.T=0.N) La matriz N se pone a cero si se omite.T) G = 1.Control óptimo La función "dlqr" realiza el diseño de un regulador lineal-cuadrático para sistemas discretos. S=1.3370 E = 0. K.E] = LQRY(SYS. "lqry" minimiza la función de coste J=Sum {y'Wy + u'Tu+ 2*y'Nu} en que interviene el vector de salida en lugar del vector de estado.E]=dlqr(P. E contiene los valores propios de lazo cerrado (P-QK). S es la solución de la ecuación de Riccati. [G..S. ."place" calcula K de modo que los valores propios de (P-QK) son los especificados en el vector E.T=0.W.4. en la realimentación es: u(k)=-Kx(k) para el sistema x(k+1)=Px(k)+Qu(k) se calcula tal que se minimiza la función de coste: J=Sum {x'Wx + u'Tu + 2*x'Nu} La sintaxis es: [K.Q.Q=0.W. 4.N) 4.6731 "lqr" trabaja de forma similar con sistemas continuos. "place" también se puede utilizar para calcular la ganancia de un estimador.85.. x(k|k)][x .x(k|k-1)][x . 2) (Eq.x(k|k)]'} EJEMPLO: » A=0.D=1.C=1. El modelo se genera mediante la expresión: sys=ss(A. En un estimador de Kalman "one-step".y(k|k)] donde y(k|k)=Cx(k|k) + Du(k) En un estimador de Kalman "two-step" el estimado “a posteriori” o "measurement update estimate" – que es la estimación que normalmente se necesita se consigue por la ecuación 3.N) N puede ser omitida. E{wv'}=N El estimador de Kalman es x(k+1|k)=Ax(k|k-1) + Bu(k) + L[y(k) .Q. R y N son las matrices de covarianza del ruido: E{ww'}=Q.Ts=0.R.xest] como salidas.Z]=kalman(sys.Se supone un sistema discreto tal que: x(k+1)=Ax(k) + Bu(k) + Gw(k) y(k)=Cx(k) + Du(k) + Hw(k) + v(k) donde w(k) es el ruido del proceso y v(k) es el ruido de medida. M es la “innovation gain” o ganancia del estimador para un estimador "two-step". E{vv'}=R. la ecuación 1 proporciona el estimado.[B. P=E{[x . 1) (Eq.L. y [yest.H]) Q.1.C.yv] como entradas (yv es la medida).[D.H=0.y(k|k)] =Ax(k|k) + Bu(k) x(k|k)=x(k|k-1) + M[y(k) .15. La sintaxis de "kalman" es [Kest. L es la “innovation gain” o ganancia del estimador para un estimador "one-step".M. Kest es el estimador de Kalman en la forma de un objeto LTI con [u. (Eq. 3) (Covarianza del error del estimado “a priori”) (Covarianza del error del estimado “a posteriori”) .x(k|k-1)]'} Z=E{[x .85. » G=1. P y Z son las covarianzas del error. mientras que el estimado “a priori” o "time update estimate” se consigue por la ecuación 2.G].B=0.P. » [Kest.8488 Z = 0.1 Discrete-time model.» s1=ss(A.7215 P = 1.[B.L.1512 -0.1698 I/O I I O O Channel(s) 1 2 1 2 .7215 x1_e 0.Ts).P.M.R) a = x1_e b = x1_e c = y1_e x1_e d = y1_e x1_e u1 0.1226 M = 0.Z]=kalman(s1. L = 0.1512 0.2.8488 0.H].8488 y1 0.1512 u1 -0.C. R=0.Q.8488 x1_e 0.1285 I/O groups: Group name KnownInput Measurement OutputEstimate StateEstimate Sampling time: 0.G].5715 y1 0. » Q=1.[D. Raíces reales Sea una función de transferencia: s+4 ----------------------------------60 s^3 + 47 s^2 + 12 s + 1 Se introducen el numerador (num) y el denominador (den) >>num=[1 4] >>den=[60 47 12 1] Se multiplica por la transformada de Laplace de la entrada. resp(s) = 12 s+4 ⋅ 3 s 60s + 47s 2 + 12s + 1 Se recalculan el numerador y el denominador >>num1=[12 48] >>den1=[60 47 12 1 0] A partir de la función residue se calcula la descomposición en fracciones simples >>[R.0000 720.0000 -570.P. por lo que el resultado corresponde a: del denominador) .den1) MATLAB responde: R = -198.K]=residue(num1.. Suponiendo una entrada escalón de 12.2500 -0.0000 48.5.0000 P = -0. su transformada es 12/s.1.3333 -0.2000 0 K = [] cociente = 0 Cada residuo va emparejado con su polo (raíz correspondiente..Obtención de la respuesta temporal 5. 8483 1.0000 P = -0. suponiendo ahora una entrada escalón unitario.den1) MATLAB responde: R = -0.0721 .2982i .20 t + 48 5.resp(s) = − 198 720 − 570 48 + + + s + 0.0.P.K]=residue(num1.Raíces complejas Sea una función de transferencia con alguna pareja de raíces complejas.2982i -0.0721 . por lo que la descomposición que propone MATLAB es: resp(s) = .6058 s .333 t + 720e −0.9242 + 0. 4s+1 -----------------------------4 s^3 + 3 s^2 + 2 s + 1 No hay que olvidarse de multiplicar por la entrada.0.20 s Cada una de las fracciones se encuentra en las tablas.9242 . por lo que la respuesta en función del tiempo será: resp(t ) = −198e −0.6383i s + 0..0.2982i 0.2.25 s + 0.25 t − 570e −0.8483 1.333 s + 0.0721 + 0.000 + + + s + 0.2982i 0.0.6058 0 K = [] Se puede comprobar que aparecen dos raíces complejas conjugadas.0721 + 0.0.9242 + 0. cuya transformada de Laplace es 1/s.0.6383i -0.9242 .6383i s + 0.6383i -0. >>num1=[4 1] >>den1=[4 3 2 1 0] A partir de la función residue se calcula la descomposición en fracciones simples >>[R. 8483 0.8483 1.0.00 .8483(s + 0.den2]=residue(R1.0721) + 0.6058 t + 1.9242 + 0.2475 0.2982i -0.8483e − 0.3808 − 0.1442s + 0.8483 0. resp(t ) = −1.5966e −0.6383i > [num2.0721 + 0.0721t e sin0.1442 0. >> R1=R(1:2) R1 = -0.8483e − 0.0721t cos 0.4127 resp(s) = − 1.6383i -0.6383t + 0.0.000 0.8483e −0.6058 (s + 0.9242 . Esto se puede hacer manualmente o con la ayuda de MATLAB.0000 0.6383 donde todas las fracciones se encuentran en las tablas.0721t sin0. utilizando la misma función residue.6383t + 0.En este momento se encuentra que las fracciones primera y segunda no aparecen en las tablas.8483s + 0.6058 2 que se puede transformar en: resp(s) = 1.8483e −0.4127 s + 0. polos y cociente. se deben reducir a una única fracción con denominador de segundo orden.P1.3808 − 1.6383 (s + 0.6383t + 0.6383t + 0.K) num2 = -1.2982i >> P1=P(1:2) P1 = -0.00 0.2475 den2 = 1.000 + + s s + 0.6058t + 1. pero introduciendo los residuos.0721 . la función responderá con el numerador y denominador.0721) + + + 2 2 2 2 s s + 0.6383 calculando: resp(t ) = −1.0721) + 0.0721t cos 0. (low frequency) gain.Discrete to continuous conversion. .Multiplication of LTI systems (series connection).Resample discrete system or add input delay(s). or 'tf'). .Continuous to discrete conversion. .Overview over functions in Control System Toolbox Generación de modelos LTI ss zpk tf dss filt set ltiprops . . .Transposition of input/output map.sys1/sys2 means sys1*inv(sys2).True for discrete-time models. . .Input/output dimensions. .System poles. .True for continuous-time models.Conversion to state space. .] inv . .Descriptor version of SSDATA.Conversion to transfer function. Model dynamics pole.C.Pertransposition. eig tzero pzmap dcgain norm covar .Right divide -.. .Model type ('ss'. .. Data extraction ssdata zpkdata tfdata dssdata get . . 'zpk'. .Extract zero/pole/gain data.Inverse of an LTI system.Covariance of response to white noise. . .Specify a descriptor state-space model. . .Create a state-space model. .Test if LTI model is of given type. . Overloaded arithmetic operations + and * \ / ' .Specify a digital filter.Detailed help for available LTI properties.6. .Extract numerator(s) and denominator(s). .Access values of LTI model properties.' [.Create a transfer function model. .sys1\sys2 means inv(sys1)*sys2. .Pole-zero map.Add and subtract LTI systems (parallel connection). .True for proper LTI models.Horizontal/vertical concatenation of LTI systems.True for single-input/single-output systems. Model characteristics class size isempty isct isdt isproper issiso isa . .Extract state-space matrices.Norms of LTI systems.Set/modify properties of LTI models. .True for empty LTI models.System transmission zeros. . Conversions ss zpk tf c2d d2c d2d . .D.Conversion to zero/pole/gain. . . . .Left divide -.Create a zero/pole/gain model. . Nichols chart.Controllability and observability matrices. LQG design tools . State-space models rss. .Nyquist plot. Frequency response bode sigma nyquist nichols ltiview evalfr freqresp margin . . . .Evans root locus.Derive state-space model from block diagram description.Gramian-based input/output balancing. .Response to arbitrary inputs. .Bode plot of the frequency response.Generalized series connection (see also overloaded *). . . .Model state reduction.MIMO pole placement. .Gain and phase margins.Feedback connection of two systems.damp esort dsort pade . .Generate unit-step input. . .Minimal realization and pole/zero cancellation. . .State-space canonical forms. System interconnections append parallel series feedback star connect . . .Generate input signal for LSIM.drss ss2ss canon ctrb.Controllability and observability gramians. . .Interactive root locus gain determination. Time response step impulse initial lsim ltiview gensig stepfun .Form estimator given estimator gain. . .State coordinate transformation.Random stable state-space models. Classical design tools rlocus rlocfind acker place estim reg . .Sort discrete poles by magnitude. .Group LTI systems by appending inputs and outputs.Frequency response over a frequency grid.Response analysis GUI. . .Singular value frequency plot.Generalized parallel connection (see also overloaded +).Redheffer star product (LFT interconnections).Impulse response.Response of state-space system with given initial state.Form regulator given state-feedback and estimator gains.Pade approximation of time delays. . . . .Step response.Augment output by appending states. .SISO pole placement.Evaluate frequency response at given frequency. .Diagonal balancing of state-space realizations. . . obsv gram ssbal balreal modred minreal augstate .Response analysis GUI.Sort continuous poles by real part. . .Natural frequency and damping of system poles. . .Introduction to the Control System Toolbox. .lqr.SISO and MIMO LQG control of steel rolling mill.Solve discrete Lyapunov equations. . .Digital design of hard-disk-drive controller. Matrix equation solvers lyap dlyap care dare . . .Kalman filter design and simulation. .Solve continuous Lyapunov equations.Linear-quadratic (LQ) state-feedback regulator.LQ regulator with output weighting. .Kalman estimator. . .dlqr lqry lqrd kalman kalmd lqgreg . Demonstrations ctrldemo jetdemo diskdemo milldemo kalmdemo .Classical design of jet transport yaw damper. .Solve discrete algebraic Riccati equations.Solve continuous algebraic Riccati equations.Discrete Kalman estimator for continuous plant.Form LQG regulator given LQ gain and Kalman estimator.Discrete LQ regulator for continuous plant. . Modificación de los parámetros de un bloque Hacer doble click sobre el bloque para seleccionarlo (botón derecho) y elegir Parameters 5. . Sine Wave. Integrator Non linear: Transport Delay.. To File.Creación de gráficos para insertar en documento Transferir los resultados de la simulación al workspace (bloque To Workspace. Activación: comando simulink => abre la ventana de simulink y crea un modelo vacío 2. no olvidar modificar “structure” por “array”) y desde MATLAB utilizar el comando plot o similar para hacer el dibujo y con el Copy Figure copiarlo en el documento. Simulación Definir los parámetros (Menu Simulation => Parameters) Solver => tiempo de inicio y fin. Construcción del diagrama de bloques Menu File => New => Model Abre una nueva ventana y la ventana de los bloques simulink Copia de un bloque de una ventana a otra Arrastrar con el botón izquierdo del ratón Copia de un bloque en el interior de la propia ventana Arrastrar con el botón derecho del ratón Traslado de un bloque en el interior de la propia ventana Arrastrar con el botón izquierdo del ratón Eliminación de un bloque Seleccionar el bloque con el botón izquierdo y borrarlo Conexión de bloques Dibujar la línea de conexión con el ratón (botón izquierdo) 4. Pause. Visualización de los resultados de la simulación Utilizar el bloque Scope: visualización en tiempo real de las variables seleccionadas (es posible modificar las dimensiones de los ejes y zoomare). Scope Linear: Transfer function. Restart) 6. Sum. Iconos predefinidos simulink (para los bloques más comunes) Sources: Step. Gain.SIMULINK: Diagramas de bloques y simulación 1. método de integración. paso de integración Workspace I/O => cargar o salvar las variables del workspace Ejecución de la simulación (Menu Simulation => Start. utilizar el bloque Mux (Sygnals &Systems) para dibujar más curvas sobre el mismo gráfico 7. Saturation Connections: Mux Blocksets & Toolboxes => Simulink Extras => Additional Linear: PID controller 3.. Stop. Clock Sinks: To Workspace.7. Almacenamiento de los resultados Utilizar el bloque To File: indicar el nombre del file y de la variable Desde el workspace....8. Se crea el fichero “nomefile.mat” en el directorio corriente 9.. con el comando save: salvar todas las variables: save nomefile o salvar sólo las variables especificadas save nomefile variable1 variable2 ..Creación de una máscara Seleccionar el subsistema y utilizar el comando Edit => Mask Subsystem Mask type: nombre para el tipo de máscara PID Step 1 s+1 Scope PID Controller T ransfer Fcn .Reagrupamiento de bloques Seleccionar varios bloques con el mouse (con el botón izquierdo) Utilizar el comando Edit => Create Subsystem Haciendo doble clic sobre el sistema se pueden modificar todavía los parámetros 10.