UNIVERSIDAD NACIONAL DE SAN JUAN FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELECTRÓNICA Y AUTOMÁTICA
COMANDOS DE MATLAB ÚTILES PARA LA ASIGNATURA DE CONTROL I
CÁTEDRA: CONTROL I AUTOR: Ing. Analía Pérez Hidalgo CARRERAS: ING. ELETRÓNICA Y BIOINGENIERÍA
1
Introducción: MATLAB ( MATRIX LABORATORY; laboratorio de Matrices) es un Sistema o Lenguaje de programación basado en matrices para realizar cálculos matemáticos, y de ingeniería. Se puede considerar un tipo de lenguaje diseñado solo para efectuar manipulación de matrices. Todas las variables que maneja MATLAB son matrices, es decir , solo tiene un tipo de datos, una matriz, o un arreglo rectangular de números . MATLAB posee un extenso conjunto de rutinas para obtener resultados gráficos, y también posee una gran cantidad de Toolbox de Control, para resolver distintos problemas de Control. Algunas de sus características son: -La programación es relativamente sencilla. Es un ambiente de simulación y cálculo matemático que se utiliza para modelar y analizar sistemas dinámicos. Permite manejar sistemas contínuos, discretos, lineales y no lineales. - Cuenta con una biblioteca matemática amplia, y abundantes herramientas gráficas. - Se usa en un Modo controlado por comandos. Matlab procesa comandos en una sola línea, como también es capaz de ejecutar secuencias de comandos almacenados en un archivo. - Es un ambiente abierto, en el cual numerosas librerías de funciones han sido desarrolladas. Por ejemplo: Cuenta con un biblioteca amplia para el análisis y diseño de los sistemas de control (Toolbox de Control, como por ej el CSAD entre otros). -Permite la simulación de procesos mediante el trabajo en conjunto con el programa SIMULINK, el cual se llama desde el Matlab. SIMULINK, es un programa que permite la simulación dinámica de distintos Sistemas de Contol ( lineales, no lineales, contínuos, digitales, etc) a través de una forma gráfica e interactiva de diagrama de bloques. Asigna los valores de los parámetros de cada bloque como atributos de módulo objeto, permitiendo modificar los parámetros y observar el efecto en el comportamiento del sistema inmediatamente. Simulink permite resolver ecuaciones diferenciales utilizando diferentes métodos de integración. Existen muchas funciones y comandos en Matlab, a continuación solo se darán los más básicos y específicamente los más utilizados en la cátedra de Control I. - Variables en Matlab: no es necesario establecer dimensiones antes de usarlas, se generan automáticamente una vez que se usan, y después es posible modificarlas. Para nombrar las variables, hay que recordar que Matlab es sensible al cambio de mayúsculas y minúsculas. Para obtener una lista de variables, se escribe el comando who. Con el comando clear se borra todas las variables del área de trabajo. Las variables permanecen almacenadas en memoria hasta que se sale del programa. Para guardar las variables se utiliza el comando save, si no se coloca un archivo todas las variables se guardan en el archivo por omisión matlab.mat. Se puede especificar también el nombre de un archivo con extensión .mat por Ej: Save datos.mat o save datos x y z que guarda en el archivo datos solamente las variables x, y , z. Con load se recuperan todas las variables guardadas (Ej: load datos) 2
- Las líneas de los programas que empiezan con % son expresiones que no se ejecutan, se usan para los comentarios del programador. - Es posible recuperar comandos anteriores y moverse por dichos comandos con las flechas↑↓ - Uso del punto y Coma: se usa para suprimir la impresión, si el último carácter de un enunciado es un punto y coma, el comando se ejecuta, pero el resultado no se despliega. - El operador dos puntos : se usa para crear vectores, para suscribir matrices, y para especificar iteraciones for. Por Ejemplo, j:k es el vector [j j+1 ..........k]; A(:,j) es la j-ésima columna de A. -Variables de arreglo unidimensional: Tienen la forma de fila o columna y están íntimamente relacionadas con los vectores en Matlab, arreglo de fila es lo mismo que vector fila, y arreglo columna es lo mismo que vector columna. El tamaño del vector, se ajusta automáticamente. Para ingresar los vectores, se tienen en cuenta dos cosas: • • •
Las filas se generan con ; Las columnas se generan dejando espacios en blanco Los elementos de un vector deben quedar entre corchetes [
]
Ejemplo: V1 = [1 2 3]
V2 = [1; 3; 5]
V1 =
v2 = 1 2 3
1 3 5
- Variables de arreglo bidimensional: Es lo mismo que una Matriz, se puede definir especificando sus elementos, recordando que espacios generan columnas, y que punto y coma ( ; ) generan
filas. Ejemplo: M=
1 2 3 4 5 6 3 8 5
Los elementos se introducen así: M = [1 2 3 ; 4 5 6 ; 3 8 5] El signo dos puntos: se utiliza para extraer una fila o columna completa de una matriz, recordando que (i , j ) se refiere al elemento i-ésima fila y la j-ésima columna. Ejemplo: 3
M(2,:) se utiliza para extraer la segunda fila de todas las columnas. El número 2 se refiere al nº de fila y : significa todas las columnas. En Matlab se coloca M(2 ; : ) y la respuesta que entrega es : ans = 4 5 6 M(: , 3) Se utiliza para extraer una columna determinada, ahora la columna se indicará con el número 3, y todas las filas se indican con el símbolo : En Matlab se coloca M(:,3) y la respuesta entregada es: ans = 3 6 5 SINTAXIS DE COMANDOS EN MATLAB: • [salida1, salida2,salida3] = nombre del comando o función(entrada1, entrada2,entrada3) donde salida 1, salida2, salida3 son las variables entregadas por matlab como argumentos de salida y entrada1 entrada2, entrada3 son los datos entregados a matlab como argumentos de entrada. • [salida]=nombre del comando(entrada1, entrada2) • nombre del comando(entrada1,entrada2) Con esta sintaxis matlab ejecuta la función pero no entrega argumentos de salida, siendo entrada1y entrada2 los argumentos de entrada. COMANDOS ESPECÍFICOS PARA CONTROL I
• Comando roots Se utiliza para calcular las raíces de una ecuación (polinomio). Ejemplo: Dado el polinomio s3+2s2+3s+4 ; el polinomio se ingresa en forma de vector entre corchetes p=[1 2 3 4] » raices=roots (p) raices = -1.6506 -0.1747 + 1.5469i -0.1747 - 1.5469i o también se puede escribir el comando en una sola línea : roots ([1 2 3 4 ]) NOTA: Los paréntesis indican función y los corchetes vectores
• Comando plot Se utiliza para graficar en dos dimensiones: plot (t,y): crea gráficas lineales, y grafica los vectores de y contra los vectores de t, ambos vectores deben tener la misma longitud. Para gráficas logarítmicas y polares, se crean incluyendo en lugar de plot, las palabras loglog, semilogx, semilogy, o polar. Para graficar múltiples curvas respecto a un mismo eje, se usa el comando plot con argumentos múltiples. Los argumentos múltiples tienen la ventaja que permiten desplegar en la misma gráfica vectores de distintas longitudes 4
plot(t1, y1, t2, y2) en este caso el vector tiempo tiene diferentes números de puntos para cada señal. Si se desea graficar múltiples curvas respecto a un mismo eje, donde todas las curvas tienen un mismo número de puntos, se puede usar: plot(t,[x1; x2; x3]) con x1,x2,x3 vectores columnas y plot(t,[x1 x2 x3]) con x1 x2 x3 vectores filas. Ejemplo: Construir en una misma gráfica una recta y=3t + 3 de color negro (k), y una parábola y= t2 de color rojo. t= 0:0.1:10; % se define un vector tiempo que va de 0 a 10 con un paso de 0.1 y1=3*t+3; % se define la función recta, aclarando que, el signo de multiplicación en Matlab es * y2=t^2 ; % se define la función de una parábola, recordando que elevado al cuadrado es ^2 plot(t,y1,'r',t,y2,'k') % grafica para la misma longitud del vector t, la recta de color negro y la parábola de color rojo
• Comando subplot Divide la pantalla en ventanas ordenadas como un arreglo matricial y dibuja la gráfica pedida en la ventana solicitada: subplot (rcp): la pantalla es dividida en r filas por c columnas y p es el nº de ventana para la gráfica pedida. Ejemplo: subplot (2 1 1), plot (t,y1) Divide la pantalla en dos filas y una columna y posiciona la gráfica de la recta en la primer ventana. subplot (2 1 2), plot (t,y2) Divide la pantalla en dos filas, una columna, y posiciona la gráfica de la parábola en la segunda ventana.
• Comando Ginput
[x,y] = ginput
Previamente a la obtención de una gráfica a través de la función Plot (y,t) o Step(Num,Den), este comando entrega un cursor, el cuál permite marcar varios puntos de interés en la gráfica y al presionar luego la tecla ENTER sobre la figura retorna en la pantalla de Matlab los valores (x,y) de cada punto seleccionado previamente a tra vez del cursor. Esto ayuda a encontrar en la respuesta temporal de un sistema de control, especificaciones como: Máximo Sobreimpulso, tiempo de Mp, tiempo de crecimiento, tiempo de levantamiento, tiempo de establecimiento, etc
• Comando hold Este comando posibilita la obtención de más de una curva en una sola grafica. Este comando congela la figura actual y no permite borrar ni modificar la escala , por lo tanto las curvas siguientes se trazan sobre la curva original. La gráfica actual se libera colocando otra vez el comando hold
• Otros Comandos Una vez realizada la gráfica se pueden agregar títulos, etiquetas y grilla. • title (`Respuesta Temporal´) permite agregar un título a la gráfica • xlabel (`tiempo´), ylabel (`Salida del Sistema´), permiten agregar leyendas al eje X y al eje Y • legend(`x1´,`x2´, `x3´) coloca leyendas indicativas a 3 curvas. • grid: coloca la grilla en la gráfica. • text(x,y,`texto´¨) Permite la escritura de un texto en la pantalla gráfica que empiece en el punto (x,y). 5
• gtext( `respuesta del sistema´) Permite agregar textos posicionados con el mouse. • axis Sirve para invalidar la escala automática elegida por Matlab y selecciona manualmente los límites de la gráfica estableciendo una escala propia.
v = [xmin, xmax, ymin,ymax] primero se define el vector v y luego llamo a la función axis (V) O en un solo comando:
axis ([xmin, xmax, ymin,ymax]) Nota: Si hay una coordenada negativa, siempre se coloca primero como Xmin o Ymin, Ejemplo: axis ([ -2,10,-1,2 ]) shg y figure (gcf) muestran la ventana de gráficos clf: Limpia la ventana de gráficos. clc: Limpia la ventana de comandos de Matlab. Nota: Se aclara que a partir de las últimas versiones de Matlab el agregado de títulos, nombres de ejes, escalas, pueden ejecutarse con más facilidad desde las opciones correspondientes que aparecen en la ventana de graficación, lo cual simplifica la edición de gráficas. • tf2zp: Comando para encontrar la F.T en función de sus polos y ceros dada una F.T ingresada en función de sus coeficientes de potencias decrecientes de S del numerador y denominador. Ingresado los coeficientes del polinomio numerador y denominador a través de las variables Num y Den, el comando retorna los ceros (Z), los polos(P) y la ganancia de la función (k). Ejemplo: » Num = [3 2 5 4 6]; » Den = [1 3 4 2 7 2]; » [z,p,k]=tf2zp(Num,Den) z= 0.4019 + 1.1965i 0.4019 – 1.1965i -0.7352 + 0.8455i -0.7352 – 0.8455i p= -1.7680 + 1.2673i -1.7680 – 1.2673i 0.4176 + 1.1130i 0.4176 – 1.1130i -0.2991 k= 3 • [p,z]=pzmap(sys) definiendo previamente sys=tf(num,den) Permite obtener los polos y ceros del Sistema. Si se omite el argumento de la izquierda, colocando solo pzmap(sys), los polos y ceros son mostrados gráficamente en le plano S. • zp2tf Comando para obtener una F.T en forma de coeficientes de potencias decrecientes de S, ingresando los polos , ceros y ganancia de la función.
6
Ejemplo: » z=[0;0;0;-1]; » p=[-1+I -1-I -2 -3 .15+2.63*I -3-2.63*I]; » k=2 » [num,den]=zp2tf(z,p,k) num = 0
2
2
0
0
0
den = 1.0000 10.1500 46.9669 106.3676 122.8014 65.4676 •
printsys (num,den, ‘s’) permite obtener la Función de Transferencia expresada como un cociente del polinomio numerador y denominador.
num/den =
2 s^4 + 2 s^3 ------------------------------------------------------------------------------------------s^5 + 10.15 s^4 + 46.9669 s^3 + 106.3676 s^2 + 122.8014 s + 65.4676
M=tf(n,d) es similar al comando printsys, una vez definidas las variables n (numerador de la F.T) y d (denominador de la F.T), crea un sistema obteniendo la Función de Transferencia llamada M (también pude llamarse de otra forma por ejmplo sys=tf(num,den)) como el cociente entre el polinomio numerador y denominador. Ejemplo: n=[1 3 4] •
d=[2 4 6 8 10] M=tf(n,d) Transfer function: s^2 + 3 s + 4 -------------------------------2 s^4 + 4 s^3 + 6 s^2 + 8 s + 10
• y= impule(sys,t) con sys=tf(num,den) Permite obtener la respuesta a una entrada impulso • step(num,den) Permite obtener la respuesta de un sistema a una entrada escalón unitario. • y=lsim(sys,u,t) con sys=tf(num,den) Permite obtener la respuesta a una entrada arbitraria, donde la entrada es el vector u, el número de filas de u determina el número de puntos de salida. Si definimos la entrada u=t, la respuesta a una entrada rampa se obtiene usando el comando y=lsim(sys,u,t) con sys=tf(num,den) definido previamente Colocando solo lsim(sys,u,t) se obtiene solo la graficación de la respuesta. Ejemplo: t=0:0.1:100; % define un vector de tiempo desde 0 hasta 100 seg u=sin(t); % asigna a u una función senoidal n=10; d=[1 0.1 10]; sys=tf(n,d) % define un sistema dados el numerador y denominador de una F.T lsim(sys,'r',u,t); % mostrará la graficación de la respuesta del sistema en color rojo a una entrada senoidal 7
• Obtención de la respuesta temporal a partir de los polos y ceros de un Sistema.
» [num, den]= zp2tf([],[-1-3*i –1+3*i],3) num = 0
0
3
1
2
10
den =
» printsys(num,den) 3 num/den = -----------------s^2 + 2 s + 10
step(num,den) Step Response From: U(1)
0.45 0.4 0.35
To: Y(1)
Amplitude
0.3 0.25 0.2 0.15 0.1 0.05 0
0
1
2
3
4
5
6
Time (sec.)
• pmake : Es una función específicamente del CSAD, que a partir del MATLAB 5.2 y 5.3 y posteriores puede usarse desde Matlab, sin necesidad de llamar previamente al CSAD. Permite multiplicar , sumar o restar polinomios, introduciendo los ceros de cada polinomio separados por coma o también los coeficientes de potencias decrecientes de S de un mismo polinomio encerrados entre corchetes y dejando espacios en blanco por cada coeficiente ingresado. Se puede ingresar los polinomios en forma combinada, mediante ceros si se los conoce y mediante los coeficientes de potencia decreciente en S. Generalmente se utiliza para introducir el polinomio numerador o denominador de una Función de Transferencia formado por el producto de distintos polinomios. Para que un comando del Csad sea reconocido hay que ubicarse en el camino o path del csad. Ejemplo: pmake (-1,-2,-3) ans = 1 6 5 Multiplica tres polinomios de primer orden cada uno, cuyos ceros están ubicados en S=–1, S=-2, S= -3 respetivamente. Pmake = (S+1)(S+2)(S+3) pmake ( [1 2 3],[2 3]) 8
ans = 2.0000 7.0000 12.0000 9.0000 Multiplica dos polinomios expresados por coeficientes de potencies decreciente de S, es decir pmake = (S2+2.S+3).(S+3) = 2.S3 +7.S2+12.S+9 pmake (0,-1,[1 2 2]) ans = 1 3 4 2
0
Multiplica tres polinomios, dos expresados en forma combinada de ceros en S=0, S= -1 y otro ingresado como coeficientes de potencies decrecientes de S (S2+2S+2) Pmake = S(S+1)(S+2S+2) Pmake (-1,'+',[1 2 2],'-',-1,-2) ans = 0 0 1 Permite sumar , restar y multiplicar polinomios, de los cuales uno esta ingresado en forma de un cero en S = -1, otro en forma de coeficientes (S2+2.S+2), y otro expresado como producto de polinomios de primer orden (S+1)(S+2). Pmake =(S+1)+(S2+2S+2)-(S +1)(S+2) Pmake(-1+j*2) ans = 1 2 5 Permite escribir un polinomio cuyas raíces conocidas son complejas conjugadas en forma de un polinomio de potencias decrecientes de S, ingresando solamente una raiz compleja. pmake= S2+2S+5 • pfe: Es una función específicamente del CSAD, que en el MATLAB 5.2 y 5.3 puede usarse desde Matlab, sin necesidad de teclear previamente CSAD. Calcula la expansión en suma de fracciones parciales simples de una función expresada en el dominio de Laplace N(S)/D(S). En Control se la utiliza para encontrar la Antitransformada de Laplace de la salida del sistema C(t) expresada en el dominio de Laplace como: C(S ) = F .T.L.C * R(S ) . Para lo cual debe tenerse cuidado de ingresar el numerador y denominador de la salida del sistema C(S) que es el producto de la Función de Transferencia por la entrada, y no el numerador y denominador de la Función de Transferencia . C(S ) 2 1 2 Ejemplo: F.T.L.C = con R(t) = 1, R(S) = 1/S ⇒ C(S ) = * ( 2 = 2 ) R(S ) S + 2.S + 2 S S + 2.S + 2 Enter numerator [n] > [2] Enter denominator [d] > [1 2 2 0] Terms in the partial fraction expansion are: K' is Complex Conjugate Simple Complex Pole Pair: 2Re(K)= -1 2Im(K)= -1 a= 1 w= 1 K/(s+a+jw) + K'/(s+a-jw) <==> 9
2Re(K)(e^-at)cos(wt)u(t)+2Im(K)(e^-at)sin(wt)u(t) (marcar ENTER para terminar el cálculo de los residuos) Simple Pole at the Origin: (Da el residuo del polo en el origen debido a la entrada, el cual para una entrada escalón coincide con el valor de estado estacionario del Sistema) K= 1 K/s <==> Ku(t) u(t) = 1 a es la parte real de la raiz, es decir mide la velocidad de decaimiento de la exponencial que amortigua la senoide y w es la parte imaginaria, es decir la frecuencia de oscilación de la senoide. 2Re(k) es el coeficiente que acompaña al coseno y 2Im(k) el que acompaña al seno. Es decir la C(t) vendrá dada por la siguiente expresión:
C(t) = 1- 1.e-t . Cos(wt) - 1.e-t . Sen(w.t) La respuesta estacionaria C1(t) está formada por todos los términos que no tienen exponenciales en función del tiempo, mientras que el estado transitorio lo constituye aquellos términos que sí tienen exponenciales. •
M = feedback(G,H)
Calcula la Función de Transferencia de Lazo Cerrado como
G (S ) , ingresando previamente el numerador y denominador de la Función de 1 + G (S ).H(S ) NI(S ) Transferencia del camino Directo G (S ) = , y el numerador y denominador de la Función de D1(S ) N 2(S ) Transferencia del camino de realimentación H(S ) = . D2(S ) Ejemplo: M (S ) =
N1 = [1 3 4]; D1 = [2 4 6 8 10]; G = tf (N1,D1) % Coloca la F.T del trayecto directo en forma de un cociente entre el polinomio numerador y denominador % Transfer function: s^2 + 3 s + 4 -------------------------------2 s^4 + 4 s^3 + 6 s^2 + 8 s + 10 N2 = [2] D2 =[1 1] H = tf (N2,D2) % Coloca la F.T de la trayectoria de realimentación en forma de un cociente entre el polinomio numerador y denominador % Transfer function: 2 ----s+1 10
M = feedback(G,H) % Obtiene la F.T de Lazo Cerrado mediante la expresión F .T =
G % 1 + G .H
Transfer function: s^3 + 4 s^2 + 7 s + 4 ------------------------------------------2 s^5 + 6 s^4 + 10 s^3 + 16 s^2 + 24 s + 18
* Comandos usados para reducir algunos diagramas de bloque. • [syss ]= series(sys1,sys2) Obtiene el producto de dos funciones de transferencias en serie G(S)=G1(S).G2(S), definiendo previamente sys1 y sys2 • [sysp]=parallell(sys1,sys2) Permite obtener la suma de dos bloques en paralelo Gp(S)=G1(S)+G2(S) • [sysf]=feedback(sys1,sys2) Permite obtener la reducción de una retroalimentación Gf ( S ) =
G1( S ) 1 + G1( S ).G 2( S )
* Otros comandos. • [N,D] =tfcloop (N1,D1,N2,D2) es una función específicamente del CSAD, similar a M= feedback(G,H) que encuentra la Función de Transferencia de Lazo Cerrado, ingresando previamente el numerador y denominador de G y H. Si la realimentación es unitaria (H=1), puede colocarse el comando de la siguiente forma: [N,D] =tfcloop (N1,D1,1). También puede llamarse desde Matlab sin llamar previamente al CSAD. • bode (num, den) Permite obtener la respuesta frecuencial de un sistema entregando el diagrama de amplitud o magnitud y el diagrama de Fase ingresando previamente el numerador y denominador de la Función de Transferencia del Sistema. Ejemlo: Frequency (rad/sec) 100 -200
101
)1 ( Y :oT
)Bd( edu tingaM ;)ged( e sahP
-150 -100 -50 0 -20
-10
0
10 From: U(1)
N = [10 ];
Bode Diagrams
D = [ 1 1 11 ]; Bode (N,D) 11
• Nyquist (N,D) Permite obtener la respuesta frecuencial de un Sistema entregando el diagrama Polar o de Nyquist ingresando previamente el numerador y denominador de la Función de Transferencia del Sistema. Para obtener solamente el tramo I que se estudia en control I, los comandos se deben colocar de la siguiente manera:
[re, im, w] =Nyquist(N,D); plot(re,Im) 0
-0.5
-1
-1.5
-2
-2.5
-3
-3.5 -1.5
-1
-0.5
0
0.5
1
1.5
2
• [mag,phase,w]=bode(N,D,w); semilogx(w,20*log10(mag)) Estos comandos permiten obtener el diagrama de Amplitud de Bode en escala semilogarítmica, la amplitud expresada en decibeles (db), y la frecuencia como log w. 20
0
-20
-40
-60
-80
-100 -3 10
10
-2
10
-1
10
0
10
1
10
2
10
3
A continuación se anexa otra forma alternativa para obtener algunas especificaciones de la respuesta temporal de un Sistema • CONJUNTOS DE COMANDOS PARA ENCONTRAR CON MATLAB LAS ESPECIFICACIONES DEL DOMINIO TEMPORAL.
Máximo Sobreimpulso (MP), tiempo de máximo sobreimpulso (tMP), tiempo de crecimiento (tr), tiempo de establecimiemto (ts) Se programa desde el editor,( File, New, Mfile ), el archivo se guarda como Especificaciones.m, y luego desde Matlab se lo llama directamente por el nombre y se ejecutan automáticamente todos los comandos, habiendo introducido previamente el numerador y denominador de la Función de Transferencia. [num,den]= zp2tf([],[-1+3*i -1-3*i],3); % entrega la F.T en forma de polinomio numerador y denominador, dados los ceros y polos de la Función.
12
CALCULO DEL VALOR FINAL DE LA SALIDA APLICANDO EL TEOREMA DEL VALOR FINAL: LA FUNCION POLYVAL PERMITE CALCULAR LA DIVISIÓN DE POLINOMIOS EN UN VALOR DE S.
Según el Teorema del valor final, considerando una entrada escalón unitaria C(s)= lim S→0 S.FT(S).R(S)= lim S→0 S.FT(S).1/S =lim S→0 num(S)/den(S) valorfinal=polyval(num,0)/polyval(den,0) [y,x,t]=step(num,den); CÁLCULO DEL MÁXIMO SOBREIMPULSO Y TIEMPO DE PICO:
[ypico, k]= max(y); % entrega un valor máximo de la función y un índice al cual ocurre el valor máximo tpico = t(k) % pidiendo el tiempo para ese índice al cual ocurre el máximo se obtiene el tiempo tp. Mpico = 100*(ypico-valorfinal)/(valorfinal) %Calcula el máximo de pico en forma porcentual respecto al valor final. CÁLCULO DEL TIEMPO DE CRECIMIENTO tr
n=1;
while y(n)<0.1*valorfinal, n=n+1; end m=1; while y(m)<0.9*valorfinal, m=m+1; end tr = t(m)-t(n)
% Crea un lazo que incrementa el índice n hasta que el valor de la salida supera el 10% del valor final y guarda ese ultimo valor como el índice al cual la respuesta alcanzó el 10% del valor final y luego salta a otro lazo que incrementa otro índice m que deja se variar cuando la salida alcanza el 90% del valor final. El tiempo de crecimiento se define como la diferencia entre el tiempo en que la respuesta alcanza el 10 %y 90% del valor final.
CÁLCULO DEL TIEMPO DE ESTABLECIMIENTO
El tiempo de establecimiento se define como aquel tiempo en el cual la respuesta alcanza y se mantiene dentro de una franja que varía desde el ± 2% o el ± 5% del valor final de estado estacionario LA FUNCIÓN LENGHT RETORNA LA MÁXIMA LONGITUD DEL VECTOR Y PERMITE UN CALCULO DEL INDICE HACIA ATRÁS, PARTIENDO DEL ÚLTIMO VALOR
i=length(t); % entrega un índice que representa el número de componentes de un vector while(y(i)>0.98*valorfinal)&(y(i)<1.02*valorfinal) %Crea un lazo que permite disminuir el i=i-1; índice si la respuesta se mantiene dentro de end una banda de tolerancia que varía dentro del ± 2% del valor final. Cuando la respuesta se sale de ese rango, contabiliza ts = t(i) ese último índice como el índice al cual ocurre el tiempo de establecimiento. Desde Matlab se coloca el nombre del archivo: Especificaciones ( se da enter), y el programa entrega los siguientes valores: valorfinal = 0.3000 pico = 1.0491
13
Mpico = 35.0914 tr = 0.4417 ts = 3.5337
• Timespec(num,den) Existe un conjunto de comandos agrupados en un archivo.m denominado timespec.m desarrollado por un especialista en control, Hadi Saadat, que nos facilita la obtención de las especificaciones en el dominio temporal como por ej: Máximo Sobreimpulso, tiempo de establecimiento, tiempo de pico y tiempo de levantamiento. Antes de llamar al archivo, debe verificarse si el mismo está cargado en el espacio de trabajo de Matlab, y cargar previamente el numerador y denominador de la F.T .
• Comandos para graficar los polos del sistema: poloslc=roots(d) Calcula las raices de la ecuación característica y los guarda en poloslc figure(1) abre una figura plot (real (poloslc), imag (poloslc),' bs' ),grid Grafica los polos en el plano complejo de S con cuadrados y coloca la grilla. Title ('Polos de lazo cerrado') Coloca un título Xlabel ('Real'), ylabel ('Imaginario') Coloca nombre a cada eje.
Otra forma sería con el comando pzmap :
[p,z] = pzmap(num,den) Si se omite el argumento de la izquierda, los polos y ceros son mostrados en el plano S
Creación de un programa en forma de archivo. m : Muchas veces es conveniente escribir un proceso o una función en un archivo.m, que permita ejecutar un conjunto de comandos desde Matlab, invocando solamente el nombre del archivo, el cual queda almacenado en el disco duro, para su posterior uso o correción. Para crear un archivo.m, se debe desplegar el menú FILE de la parte superior de la ventana de comandos y seleccionar NEW (nuevo), en el cual aparecen tres opciones, se debe elegir Mfiles , luego se abrirá una ventana del editor seleccionado al instalar Matlab, allí se escriben los comandos necesarios , se graba guardando el archivo con extensión.m. Cualquier comentario de un comando se precede de un signo porcentual %. Concluido el archivo, hay que grabarlo e introducirlo dentro del espacio de trabajo de Matlab, agregándolo en el pad. Para ello desde Matlab, hay que abrir la ventanita Path Browser y seleccionar el botón Add to Path , buscar y seleccionar toda la ruta a donde se gravó el archivo.m y posteriormente grabar el camino adicionado. Luego desde la ventana de trabajo de matlab, se podrá ejecutar el programa con solo teclear el nombre del archivo.
14
Ejemplo: Antes de ejecutar el archivo deberá introducirse desde Matlab el numerador y denominador de la F.T deseada. num=[10] den=[1 0. 4 1]
prueba.m raices=roots(den) % calcula las raíces de la ecuación característica del sistema% figure(1) % abre una figura % plot (real (raices), imag (raices),' rs' ),grid %Grafica los polos en el plano complejo de S con cuadrados rojos y coloca la grilla % title ('raices de la ecuación característica') %Coloca un título en la gráfica% xlabel ('Real'), ylabel ('Imaginario') %Coloca una leyenda en cada eje% printsys(num,den) %Coloca la F.T en forma de un cociente entre numerador y denominador ingresados% figure(2) % abre una figura 2 % grid ,step(num,den) %obtiene la respuesta temporal del sistema a partir del numerador y denominador ingresados y coloca una grilla en la gráfica% valorfinal=polyval(num,0)/polyval(den,0) %calcula el valor final de la respuesta. [y,x,t]=step(num,den); %calcula sin graficar la respuesta del sistema [ypico, k]= max(y); % entrega un valor máximo de la función y un índice del vector tiempo al cual ocurre el valor máximo tpico = t(k) % obtiene el tiempo tp. Mpico = 100*(ypico-valorfinal)/(valorfinal) %Calcula el máximo de pico en forma porcentual respecto al valor final. i=length(t); % entrega un índice que representa el número de componentes del vector tiempo while(y(i)>0.98*valorfinal)&(y(i)<1.02*valorfinal) %Crea un lazo que permite disminuir el i=i-1; índice si la respuesta se mantiene dentro de end una banda de tolerancia que varía dentro del ± 2% del valor final. Cuando la respuesta se sale de ese rango, contabiliza ts = t(i) ese último índice como el índice al cual ocurre el tiempo de establecimiento.
15