Práctica 1: Introducción al uso de matlab y simulink para Control Automático Control Automático, 2 o GIA Esta práctica permitirá que el alumno se familiarice con las herramientas disponibles en matlab para el Control Automático, entre las que están el denominado Control Toolbox y el simulink. Al mismo tiempo, la práctica servirá para que el alumno realice algunos ensayos relacionados con funciones de transferencia y respuestas temporales. Este enunciado incluye cierta cantidad de trabajo previo, que el alumno deberá llevar a cabo con anterioridad a la sesión de la práctica en el Centro de Cálculo. Dicho estudio previo comprende la lectura detallada de las secciones 1 y 2, para la familiarización con los comandos de matlab y herramientas de simulink que se usarán, así como la realización de los subapartados denominados Trabajo Previo que pueden encontrarse en las demás secciones. 1 Introducción al Control Toolbox de matlab En esta sección, se asumirá que el alumno está familiarizado con el uso del matlab en general, para centrar la descripción en el juego de herramientas de que dispone matlab para tareas relacionadas específicamente con el Control Automático. Dichas herramientas están incluidas en un complemento de matlab, denominado Control Toolbox. 1.1 Definición de funciones de transferencia La primera tarea que se puede plantear es la de definir una función de transferencia en matlab. Para ello, en primer lugar, ha de recordarse cómo se pueden definir polinomios. Imaginemos que queremos definir la función de transferencia: G(s) = 2.5 s + 1 s 2 + 3 s + 2 Para ello, podemos definir los polinomios numerador y denominador, almacenándolos en sendas variables a las que denominaremos, respectivamente, N y D: N = [2.5,1]; D = [1,3,2]; Como puede verse, la forma de definir un polinomio es crear un vector cuyos elementos son los coeficientes de dicho polinomio, siempre en orden decreciente de potencias de la variable independiente. Como veremos, a partir de este momento, podemos trabajar con muchas de las funciones del Control Toolbox, pasándoles como función de transferencia este par de polinomios. 1
Hay que tener ciertas precauciones, cuando alguno de los coeficientes sea nulo. Por ejemplo, supongamos que la función de transferencia fuera la siguiente: G(s) = 3 s 2 + 2 s Una forma incorrecta de introducir el polinomio denominador sería: N = 3; D = [1,2]; Sería incorrecta puesto que con esto, en realidad, se estaría definiendo: En su lugar, la forma correcta sería: G(s) = 3 s + 2 N = 3; D = [1,2,0]; En lugar de trabajar con un par de polinomios que definen el numerador y denominador de la función de transferencia, pueden unificarse estos dos elementos en un objeto función de transferencia, mediante el comando tf(): N = [2.5,1]; D = [1,3,2]; G = tf (N,D); Si preguntamos a continuación por el valor de la variable G, comprobaremos que es un objeto más complejo que un simple par de polinomios: >> G Transfer function: 2.5 s + 1 ------------- s^2 + 3 s + 2 Si queremos saber si la función de transferencia corresponde con un sistema estable, bastaría con calcular las raíces del denominador: roots (D) Esta función devuelve, en general, un vector conteniendo los polos de la función de transferencia. De forma análoga, los ceros de la función de transferencia vendrán dados por las raíces del numerador. Si se está trabajando con objetos funciones de transferencia, existe una forma directa de obtener sus polos y ceros, usando los siguientes comandos: 2
polos = pole (G); ceros = tzero (G); 1.2 Simulación de respuesta temporal La función step() simula la respuesta ante escalón unitario de una función de transferencia. Por defecto, la escala temporal se elige automáticamente y se asume que el escalón se produce en el instante cero. step (N, D); La llamada a esta función lleva asociada la representación en una ventana gráfica de la salida resultante. Alternativamente, podemos pasar como parámetro un objeto función de transferencia: step (G); grid; En este caso, al igual que podría haberse hecho en el caso anterior, se ha añadido el comando grid, que permite visualizar una rejilla sobre el fondo de la gráfica. Si queremos simular la respuesta para una escala temporal dada por nosotros mismos: t = [0:0.001:10] ; step (G, t); El primer comando genera un vector columna (el operador de trasposición, que transforma lo que inicialmente sería un vector fila en un vector columna, es la comilla simple que aparece a la derecha del vector definido entre corchetes), conteniendo una secuencia de valores comenzando en 0 y terminando en 10, con un paso o incremento de 0.001. Esta variable t contendrá nuestro vector de instantes de tiempo a emplear en la simulación. Para ello, en la llamada a la función step() se le pasa este vector tiempo como último parámetro. Si se desea representar dos respuestas escalón en la misma gráfica, con fines comparativos, puede hacerse del siguiente modo: G1 = tf (N,D); G2 = tf (3,[1,2,1]); t = [0:0.001:10] ; y1 = step (G1, t); y2 = step (G2, t); figure(1); plot(t,y1,t,y2); grid; Como se ve, la función step() puede devolver un vector conteniendo los valores que resulten para la señal de salida en cada instante de la simulación. En este caso, dicha función no realiza 3
representación gráfica alguna. El comando plot(), por su parte, permite realizar representaciones gráficas de dos dimensiones. En este caso particular, se están representando dos señales, las contenidas en los vectores y1 e y2, frente a la misma escala temporal. Existen otras funciones para simular la respuesta ante señales de entrada. Por ejemplo, la función impulse(), simula la respuesta ante impulso unitario a la entrada. La función lsim() permite la simulación de la respuesta ante cualquier señal de entrada que deseemos. Por ejemplo, si queremos simular la respuesta ante una rampa de pendiente 3 a la entrada, podríamos escribir: t = [0:0.001:10] ; rampa = 3*t; lsim (G, rampa, t); Tanto la función impulse() como la función lsim() tienen características similares a la función step(), en cuanto a que realizan la representación de forma automática, a menos que en la llamada se almacene el valor devuelto por la función en alguna variable. 1.3 Álgebra de bloques Existen funciones para realizar operaciones de álgebra de bloques con funciones de transferencia. A continuación, se mostrarán algunos ejemplos. La operación más elemental consiste en obtener una única función de transferencia equivalente a otras dos que estén dispuestas en serie. Imaginemos definidos los polinomios numerador y denominador de dos funciones de transferencia, N1, D1, N2 y D2. Dado que el resultado de la operación mencionada sería el producto de ambas funciones de transferencia, podemos realizar el producto de los polinomios numerador por un lado y, por otro, el de los polinomios denominador. La función que nos permite realizar producto de polinomios es conv(): N1 = [2.5,1]; D1 = [1,3,2]; N2 = 3; D2 = [1,2,1]; N D = conv (N1, N2); = conv (D1, D2); Tras estas operaciones, la función de transferencia dada por el par de polinomios N, D, sería la resultante. Otra forma de realizar la misma operación, en un sólo paso, es emplear la función series(), que, a diferencia de la función conv(), sí es específica del Control Toolbox y, por tanto, puede interpretar pares de polinomios como una función de transferencia: [N,D] = series (N1,D1, N2,D2); 4
Si se recurre a los objetos función de transferencia, todo resulta mucho más intuitivo: G1 = tf (N1,D1); G2 = tf (N2,D2); G = G1*G2; Como se ve, directamente se puede realizar el producto de dos objetos función de transferencia. Esto no impide que la función series() pueda seguir siendo usada con este tipo de objetos: G = series (G1, G2); De forma análoga a la puesta en serie de dos funciones de transferencia, se puede obtener el equivalente de una configuración en paralelo. A continuación, se muestran las tres formas de obtener el mismo resultado: [N,D] = parallel (N1,D1, N2,D2); G = parallel (G1, G2); G = G1+G2; Si, dado un esquema realimentado, queremos obtener la función de transferencia equivalente al conjunto, podemos usar la función cloop(): [Nbc,Dbc] = cloop (N,D,-1); donde el último parámetro indica que se trata de realimentación negativa (1 sería realimentación positiva). Si hacemos uso de objetos función de transferencia, tenemos que recurrir a la función feedback(): Gbc = feedback (G,1,-1); El segundo parámetro de esta función indica la función de transferencia que se asume en la cadena de realimentación (en este caso, se trata de realimentación unitaria), mientras que el último parámetro indica que se trata de realimentación negativa. 5
2 Introducción al simulink simulink es un complemento de matlab que permite realizar simulación dinámica de sistemas por medio de una interfaz gráfica muy cómoda de usar. En esta sección se darán unos breves comentarios introductorios al simulink. En todo caso, es recomendable acudir a un manual de referencia más completo, como el que puede encontrarse en el entorno de Enseñanza Virtual (apartado Contenido del Curso / Tutoriales / Tutorial de Simulink). Para arrancar el simulink, basta teclear simulink en la ventana de comandos de matlab. Con ello, se abrirá la llamada biblioteca de bloques de simulink, de la que podremos tomar todos los elementos que necesitemos para nuestras simulaciones. La figura 1 muestra el aspecto de esta ventana.. Figure 1: Ventana mostrando la biblioteca de bloques de simulink Para comenzar a usar simulink es preciso abrir un nuevo diagrama. Para ello, se puede pulsar sobre el icono de la hoja en blanco que aparece en la ventana de herramientas mostrada, o bien a través del menú File New Model. Con ello, aparecerá una nueva ventana en la que se confeccionará el modelo del sistema dinámico que se quiere simular. Esta ventana recibe el nombre de ventana del modelo o ventana del diagrama del modelo. Para construir un diagrama se arrastrarán elementos desde la ventana de herramientas hasta la ventana del modelo. Los elementos se unirán luego con flechas, dando lugar a un diagrama de bloques. Cada flecha representa una señal diferente de la cual podremos obtener, al realizar una simulación, su valor a lo largo del tiempo. El aspecto de los bloques en la pantalla puede diferir de unas versiones a otras de matlab, por lo que deberá poner atención a los nombres descriptivos que aparecen debajo de cada bloque. 6
2.1 Integradores Los integradores nos permiten modelar sistemas dinámicos lineales y no lineales descritos mediante un modelo en ecuaciones diferenciales. El hecho de que los sistemas sean representados mediante ecuaciones diferenciales implica que será necesario integrar dichas ecuaciones para poder simular cuál será la evolución temporal del sistema. simulink ofrece una herramienta de integración numérica que incluye varios métodos de integración. Esto permite integrar señales temporales, independientemente de que el sistema sea lineal o no. Para integrar directamente señales temporales, simulink incluye un bloque llamado integrador (Integrator), el cual puede obtenerse de la biblioteca de elementos de tiempo continuo (Continuous). Este componente proporciona una salida y igual a la integración temporal de su entrada u (y(t) = t 0 u(τ)dτ). En la figura 2, se propone un pequeño modelo para ilustrar cómo funciona el bloque integrador. Se introduce a su entrada un escalón y se observa que la salida del integrador será una rampa. Step 1 s Integrator Mux Scope Figure 2: Diagrama de bloques simulando el comportamiento de un integrador ante entrada en escalón. La señal de entrada del integrador proviene en este ejemplo de un bloque escalón (Step) sacado de la biblioteca de fuentes (Sources). La salida del bloque integrador se reúne con la entrada en el bloque multiplexor (Mux, del apartado Signal Routing de la biblioteca), para que ambas sean mostradas en la gráfica dibujada con el bloque visor (Scope, del apartado Sinks). En la figura 3, puede verse el resultado de la simulación visto a través del visor. Figure 3: Respuesta resultante de la simulación del diagrama previo. 7
2.2 Funciones de transferencia Para utilizar funciones de transferencia dentro de simulink, basta con incluir un bloque Transfer Function del apartado de tiempo continuo (Continuous) de la biblioteca, tal y como se presenta en la figura 4. s+2 Step s 2+s+3 Transfer Fcn Mux Scope Figure 4: Ilustración del uso del bloque función de transferencia. En este caso, la función de transferencia elegida ha sido: G(s) = s + 2 s 2 + s + 3 Para lograr que dicho bloque se corresponda con la función de transferencia dada, basta con modificar los parámetros del mismo, pulsando dos veces sobre el bloque. En el cuadro de diálogo que aparece, se introducen los polinomios numerador y denominador, siguiendo la sintaxis habitual de matlab, como se muestra en la figura 5. Figure 5: Parámetros del bloque función de transferencia. El resultado de la simulación del diagrama anterior puede visualizarse a través del visor (figura 6). 2.3 Realimentación y ganancias En la figura 7, se muestra un nuevo diagrama de bloques, en el que aparecen diversos elementos nuevos, tales como un restador y una ganancia. Con ello, conseguimos implementar un diagrama realimentado, a partir de la función de transferencia dada con anterioridad. 8
Figure 6: Respuesta resultante de la simulación del diagrama previo. Step Sum K Gain s+2 s 2+s+3 Transfer Function Scope Figure 7: Función de transferencia con ganancia en serie y realimentada. Un sumador o restador se implementa mediante un bloque Add ó Sum del apartado de Math Operations de la biblioteca. Por su parte, una ganancia se implementa mediante el bloque de forma triangular que aparece en el diagrama, obtenido a partir de un bloque Gain del apartado Math Operations. Fíjese que el valor introducido como ganancia no es una constante, sino una variable de nombre K. Para que la simulación del modelo pueda llevarse a cabo, será necesario que previamente se haya definido dicha variable desde matlab. Esto ilustra las posibilidades de interacción entre matlab y simulink: variables definidas en el espacio de trabajo de matlab pueden ser usadas desde simulink, así como variables que tomen valores como resultado de la simulación de un diagrama de simulink estarán disponibles para su uso desde la ventana de comandos de matlab, como se verá a continuación. 2.4 Fuentes y sumideros En la biblioteca de bloques de simulink existe un apartado que ya se ha citado anteriormente, se trata de las fuentes (Sources). Los elementos de este apartado son, esencialmente, generadores de señales; entre ellos tenemos señal de valor constante (Constant), señal escalón (Step), señal rampa (Ramp), señales senoidales (Sine Wave) y muchas otras. También existe un elemento, denominado Clock, que proporciona un vector con los instantes de simulación. En el otro extremo, tenemos elementos que son sumideros de señales, es decir, que sólo reciben señales, sin producir ninguna salida. Estos elementos se encuentran en el apartado Sinks. Entre estos elementos, encontramos los visores, como el Scope ya empleado. Otro elemento interesante 9
de este grupo es el denominado To Workspace. Se trata de un bloque que almacena, en una variable cuyo nombre debemos especificar, un vector conteniendo los valores que va tomando la señal que se recibe como entrada del bloque, para cada instante de simulación. La figura 8 muestra un nuevo diagrama de bloques, similar al de la figura 7, en el que se ha reemplazado el visor por un bloque To Workspace, al que se le ha asociado el nombre de variable y. Asimismo, se ha eliminado el multiplexor y la señal de entrada, producida por el escalón, se almacena en otra variable, denominada r. Se ha incluido, además, un elemento reloj, cuya salida se almacena en otra variable, a la que se la denomina tsim. Clock tsim To Workspace2 r Step Sum K Gain s+2 s 2+s+3 Transfer Function To Workspace1 y To Workspace Figure 8: Diagrama de bloques para ilustrar el uso de los bloques Clock y To Workspace. En principio, se recomienda configurar los parámetros de los elementos To Workspace tal y como se muestra en la figura 9, en particular con el formato de almacenamiento de tipo Array. La justificación está en la simplicidad que eso aporta, a posteriori, para la manipulación de estas variables desde matlab. Figure 9: Cuadro de diálogo para establecer los parámetros de un bloque To Workspace. Una vez realizada la simulación, dispondremos de las variables tsim, r e y, con las que podremos realizar una representación gráfica a voluntad, usando el comando plot() ya conocido: figure(1); plot (tsim,r, tsim,y); grid; 10
3 Trabajo a desarrollar en relación con el Control Toolbox de matlab En esta parte de la práctica, se parte directamente de una función de transferencia dada por la expresión siguiente: G 1 (s) = K (s + c) (s + p) (s 2 + 2 δ w n s + w 2 n) (1) Se trata de una función de transferencia que será estable, con un polo real, que resultará ser el elemento más dominante respecto a los demás, un cero que será de fase mínima 1 y un par de polos complejos conjugados, que serán menos dominantes que los demás elementos (si bien, ninguno de los factores citados será totalmente despreciable frente a los demás). Cada alumno elegirá los valores numéricos de los parámetros, a partir de las siguientes relaciones: K = 135 + 15 D 8 90 p = 45 + 7 D 7 90 c = 207 + 12 D 6 90 δ = 45 + 2 D 5 90 w n = 6 p Siendo D 8 el dígito menos significativo del DNI, D 7 el anterior y así sucesivamente. Por ejemplo, para el DNI número: 53568447, se tendría D 8 = 7, D 7 = 4, D 6 = 4, D 5 = 8, con lo que resultarían los siguientes valores de los parámetros: K = 2.66667 p = 0.81111, c = 2.83333, δ = 0.67778, w n = 4.86667 3.1 Aproximación por modelo de primer orden 3.1.1 Trabajo previo En primer lugar, se desea obtener una función de transferencia de orden reducido, que aproxime el comportamiento del sistema de partida. 1 Un cero de fase mínima es aquél que se encuentra en el semiplano izquierdo del plano complejo; dicho de otra forma, aquél cuya parte real es negativa. 11
Si se simula la respuesta ante escalón del sistema dado, puede comprobarse que se puede identificar fácilmente una única constante de tiempo dominante y aproximar al sistema por un modelo de primer orden, de la forma: G 1 (s) K 1 + τ s (2) A partir de la representación gráfica de la respuesta ante escalón del sistema, pueden estimarse los dos parámetros requeridos en (2). Como es sabido, para un sistema que sea verdaderamente de primer orden, la identificación de la constante de tiempo puede realizarse con exactitud de varias formas: una de ellas se basa en que: y( τ) = y(0) + 0.63 (y( ) y(0)). Otra forma se basa en que el 95% del valor final se alcanza una vez transcurrido un tiempo equivalente a tres veces la constante de tiempo de dicho sistema: y(3 τ) = y(0) + 0.95 (y( ) y(0)). De acuerdo con lo anterior, se definen: t 63% = τ y t e95% = 3 τ. Trabajo en el Centro de Cálculo Simule la respuesta ante escalón del sistema original (1). A la vista de esa respuesta, identifique empíricamente los parámetros de la función de transferencia aproximada (2): ganancia estática K [p1], y constante de tiempo τ [p2](estimada a partir de la regla t 63% = τ). Compare la respuesta ante escalón unitario del sistema original y del reducido. Para realizar esta comparación de forma gráfica, puede recurrirse a los comandos de matlab vistos anteriormente. Mida el valor de la respuesta del sistema original (1), transcurrido un intervalo de tiempo en segundos igual al doble de la constante de tiempo después de producirse el escalón de entrada, y(2 τ) [p3], y análogamente para el sistema aproximado (2) en ese mismo instante, y aprox (2 τ) [p4]. Nota: Si está utilizando el comando step() sugerido anteriormente, tenga en cuenta que puede conseguirse un paso de simulación tan pequeño como se quiera, proporcionando a dicha función un vector tiempo con el paso o incremento correspondiente. Habida cuenta de que, dependiendo del modelo concreto, puede obtenerse una mejor aproximación estimando la constante de tiempo mediante la regla t e95% = 3 τ, se pide realizar esta estimación alternativa de la constante de tiempo, a la que se llamará τ 2 [p5]. Con objeto de poder hacer la comparación con el nuevo modelo aproximado resultante del punto anterior, indique el valor de la respuesta del sistema original (1), transcurrido un intervalo igual a la nueva constante de tiempo, después de producirse el escalón de entrada, y( τ 2 ) [p6]. Análogamente para el nuevo sistema aproximado y aprox2 ( τ 2 ) [p7]. 3.2 Aproximación por modelo de segundo orden En este apartado, se trabajará con una función de transferencia similar a la dada en (1), con la diferencia de que los polos complejos conjugados se harán más significativos. Para ello, se modifica el valor original de los parámetros δ y w n : 12
G 2 (s) = K (s + c) (s + p) (s 2 + 2 δ 2 w n2 s + w 2 n 2 ) ; δ 2 = δ 0.2 ; w n 2 = w n /6 = p (3) 3.2.1 Trabajo previo Se desea obtener una función de transferencia de segundo orden, que aproxime el comportamiento del sistema de partida dado. Simulando la respuesta ante escalón del sistema dado, puede comprobarse que, efectivamente, dicha respuesta se puede aproximar mediante una función de transferencia de segundo orden subamortiguada, de la forma: G 2 (s) K w 2 n s 2 + 2 δ w n s + w 2 n (4) A partir de la representación gráfica de la respuesta ante escalón de un sistema de este tipo, pueden estimarse los parámetros requeridos en (4). Para el trabajo a realizar a continuación, se sugiere usar las medidas de ganancia estática, sobreoscilación (que, expresada en tanto por uno, será referida como SO) y tiempo de pico ( t p ), para deducir los tres parámetros: K, δ y wn. La relación entre las citadas medidas y los parámetros de la función de transferencia, como es sabido, son las siguientes: SO = e t p = δ π 1 δ 2 π w n 1 δ 2 (5) 3.2.2 Trabajo en el Centro de Cálculo Simule la respuesta ante escalón del sistema original (3). A la vista de esa respuesta, identifique empíricamente los parámetros de la función de transferencia aproximada (4): ganancia estática K [p8], coeficiente de amortiguamiento δ [p9], y frecuencia natural no amortiguada w n [p10]. Nota: Tal y como se ha dicho anteriormente, debe emplearse la expresión (5) para la estimación de w n. Compare la respuesta ante escalón unitario del sistema original y del reducido. Mida el valor de la respuesta del sistema original (3), transcurrido un intervalo igual al tiempo de subida, después de producirse el escalón de entrada, y( t s ) [p11]. Análogamente para el sistema aproximado (4) en ese mismo instante, y aprox ( t s ) [p12]. Nota: Emplee la siguiente expresión para obtener el valor del tiempo de subida en el que tomar las medidas: t s = π arccos( δ) w n 1 δ 2 13
4 Trabajo a desarrollar en relación con simulink En esta sección, el alumno deberá emplear simulink para simular el comportamiento de un sistema lineal que modela a un motor de corriente continua (caso simplificado). Tomando como entrada la tensión aplicada sobre el motor, u [V], y como salida la orientación del eje de la carga, θ [rad] (o, en su caso, la velocidad de giro del mismo, θ [rad/s]), la ecuación diferencial del modelo es la siguiente: K m u = I θ + b θ (6) Los parámetros del modelo se obtienen a partir del DNI de cada alumno, según las siguientes expresiones: K m = I = b = 18 + 8 D8 90 225 + 15 D7 90 45 + 15 D6 9 [N m/v ] [Kg m 2] [ ] Kg m 2 /s Donde D 6, D 7 y D 8 son las tres últimas cifras del DNI. Por ejemplo, para el DNI número: 53568447, se tendría D 8 = 7, D 7 = 4, D 6 = 4, con lo que resultarían los siguientes valores de los parámetros: K m = 0.82222, I = 3.16667 y b = 11.66667 2. 4.1 Modelado del motor 4.1.1 Trabajo previo El diagrama de bloques de la ecuación diferencial (6) puede implementarse fácilmente, despejando la derivada segunda de la salida, θ. El resultado puede apreciarse en la figura 10. u acelang 1 velang 1 ang Km 1/I s s Scope b Figure 10: Diagrama de bloques que implementa el modelo del motor. Dado que este sistema es lineal, suponiendo condiciones iniciales nulas, puede obtenerse su función de transferencia de forma inmediata, resultando G v (s) para la salida en velocidad y 2 A diferencia de lo que ocurre con los demás parámetros, el denominador de la expresión que define el parámetro b es 9, en lugar de 90. 14
G p (s) para la salida en posición: G v (s) = K 1 + τ s ; G p(s) = 1 s G v(s) = K s (1 + τ s) (7) Pueden calcularse de forma directa los parámetros K y τ de las expresiones anteriores, a partir de los parámetros del modelo (6). Una vez hecho esto, una forma equivalente de modelar el motor, a través de su función de transferencia, sería mediante un único bloque de simulink, como se muestra en la figura 11. u K velang 1 ang tau.s+1 s Scope Figure 11: Modelado del motor mediante función de transferencia. Desde el punto de vista práctico, la única diferencia entre el modelo representado en la figura 10 y el mostrado en la figura 11 es que, en el primero de ellos, se puede simular la evolución del sistema ante condiciones iniciales no nulas para velocidad y que existen señales intermedias directamente accesibles, como la aceleración angular, θ, o el par de fricción, b θ. 4.1.2 Trabajo en el Centro de Cálculo Implemente el diagrama de bloques mostrado en la figura 10, pero haciendo que entre también en el visor la velocidad angular 3. Configure una condición inicial no nula, θ(t = 0) = 0.2 [rad], para la salida en posición, a través de las propiedades del integrador correspondiente. Mantenga, sin embargo, condición inicial nula para la velocidad angular, θ(t = 0) = 0 [rad/s]. Nota: De cara al siguiente punto, tenga precaución para no pasar por alto el instante en el que se produce el escalón, dado que, por defecto, no es cero. Simule la respuesta del sistema ante una entrada de tipo escalón: u(t) = 4V. Tome nota de los valores θ(t) [p13] y θ(t) [p14], 0.3 segundos después de producirse dicho escalón. Nota: En algunos casos, si se observa que las curvas de respuesta tienen pocos puntos, significa que la simulación puede requerir un paso de integración máximo más reducido. Esto puede dar lugar a medidas imprecisas, a partir de las representaciones gráficas de las señales de interés. El parámetro que controla este paso de integración puede establecerse en (Menu Simulation Configuration Parameters Max. step size) del método numérico de integración de simulink (ver figura 12). Por defecto, el valor de este parámetro suele ser auto, pero puede modificarse este valor a voluntad, para forzar a que el número de puntos en los que se lleva a cabo la simulación se incremente sustancialmente. Si, como consecuencia de lo anterior, el número de puntos a registrar durante una simulación aumenta considerablemente, y la simulación dura el tiempo suficiente, puede ser necesario tener en cuenta un detalle adicional, en relación con los elementos Scope, en caso 3 A través de las propiedades del multiplexor, puede configurar libremente el número de entradas del mismo. 15
Figure 12: Opción para cambiar el paso máximo de integración de simulink. de que éstos se estén usando. Estos visores, poseen un buffer para el registro de las variables que se reciben como entrada, el cual puede verse desbordado. Esto llevaría a la pérdida del registro de la primera parte del experimento. Por defecto, los bloques Scope sólo mantienen el registro de los últimos 5000 puntos de una simulación. Este problema puede solventarse de forma inmediata, accediendo a las propiedades del Scope y desactivando, en la pestaña Data History, la limitación del buffer, tal y como se muestra en la figura 13. Figure 13: Opción para desactivar la limitación del buffer del Scope. Proporcione los valores de los parámetros de la función de transferencia G v (s): K [p15], τ [p16]. Estos parámetros pueden obtenerse, bien de forma analítica, bien de forma experimental, como se desee. 16
4.2 Motor en realimentación 4.2.1 Trabajo previo A partir de la función de transferencia del motor, resulta muy cómodo establecer una configuración en realimentación, añadiendo una ganancia ajustable en la cadena directa, como se muestra en la figura 14. Como puede apreciarse, en este caso, se ha usado directamente la función de transferencia de salida en posición, siendo ésta la señal que se realimenta. r e Kc u K tau.s 2+s ang Scope Figure 14: Sistema motor realimentado con ganancia ajustable. Debe tenerse en cuenta que la señal de tipo escalón es, en este caso, de naturaleza distinta a la que tenía en los diagramas en bucle abierto, figuras 10 y 11. En los casos anteriores, al estar el sistema en bucle abierto, el escalón se usaba para proporcionar directamente la señal de entrada al sistema o actuación, u(t). Sin embargo, en el esquema realimentado, la señal proporcionada por el escalón será una señal de referencia, r(t), que debe ser comparada con la salida y, por tanto, debe ser una señal de la misma naturaleza que ésta; es decir, se trata de una referencia para el ángulo de salida del motor. Por otro lado, como puede comprobarse, se ha añadido una ganancia ajustable que, a partir del error observado en el ángulo de salida respecto a la referencia fijada, e(t), proporciona una actuación directamente proporcional a dicho error: u(t) = K c e(t). Si se realiza la reducción del diagrama de bloques, para un valor genérico de ganancia K c, puede comprobarse que la función de transferencia equivalente al conjunto es una de segundo orden, que puede hacerse corresponder con la forma típica de sistema de segundo orden subamortiguado: G bc = K bc w 2 n bc s 2 + 2 δ bc w nbc s + w 2 n bc (8) 4.2.2 Trabajo en el Centro de Cálculo Determine analíticamente el valor de la ganancia K c [p17], para que el sistema realimentado resulte estable y con un coeficiente de amortiguamiento δ bc = 0.7, de acuerdo con la expresión (8). Implemente el diagrama de bloques mostrado en la figura 14 y verifique el punto anterior (basta comprobar que la sobreoscilación del sistema realimentado resultante debe ser ligeramente inferior al 5%). Para el valor de ganancia K c fijado, determine analíticamente el tiempo de pico que tendría la respuesta ante referencia en escalón, t pteorico [p18]. Determine este mismo valor experimentalmente, t pexperim [p19], a partir de una simulación con el modelo de la figura 14. 17
5 Instrucciones para entregar las respuestas en Goodle Las respuestas del módulo entregarán en Goodle. La página web del servidor de docencia es: http://bono.us.es/sdocencia Para entregar el proyecto hay que darse de alta en Goodle siguiendo las instrucciones de la guía que puede encontrarse en el entorno de Enseñanza Virtual (apartado Contenido del Curso / Tutoriales / Guía de Goodle GMS). La entrega de los resultados consiste en rellenar el formulario de texto siguiendo las siguientes instrucciones: Cada respuesta correspondiente a una cuestión de trabajo en el centro de cálculo tiene asignado un nombre. En el enunciado de la práctica se indica con una etiqueta entre corchetes cada respuesta que hay que entregar. Ejemplo: A la primera respuesta (valor de la ganancia estática identificada) le corresponde el nombre p1 y a la última respuesta le corresponde el nombre p19. Para cada respuesta hay que escribir una línea con el siguiente formato: nombre = valor; Ejemplo: Para responder que el valor de la constante de tiempo de la función de transferencia (2) es 0.3 segundos, se escribiría la siguiente línea: p2 = 0.3; Observe que los decimales se separan utilizando el punto, no la coma. En caso de que hubiera que dar una respuesta que correspondiera a un polinomio (por ejemplo, el denominador de una función de transferencia), hay que utilizar el formato explicado al principio para introducir polinomios en matlab en la Sección 1.1. En caso de que alguno de los polinomios fuera una constante, los corchetes deben obviarse. Por ejemplo, para indicar: 7 Gbc(s) = 3s 2 + 0.45 habría que escribir las siguientes líneas: p14 = 7; p15 = [3, 0, 0.45]; Goodle rechaza los envíos con errores de sintaxis. Es recomendable confeccionar la respuesta en un fichero de texto plano antes de pasarla al servidor, por ejemplo utilizando el bloc de notas de Windows. Si desconoce alguno de los datos solicitados, evite dar respuestas que provoquen error de sintaxis, como las siguientes: 18
p5 = ; p6 = En lugar de eso, introduzca en la respuesta algún valor, preferentemente un valor nulo: p5 = 0; p6 = 0; Ejemplo de formulario relleno (Los números siguientes son aleatorios) p1 = 3; p2 = 4.3; p3 = 0.65; p4 = 23.4; p5 = 34; p6 = -4; p7 = 76.5; p8 = 12; p9 = 1; p10 = 9; p11 = 43; p12 = 3.1; p13 = 5.2; p14 = 2.4; p15 = 29.5; p16 = 0.0005; p17 = -92.4; p18 = 2.84; p19 = 4.17; 19