Pr´
actica 1: Introducci´
on al uso de matlab y simulink para
Control Autom´
atico
Control Autom´
atico, 2
oGIA
Esta pr´actica permitir´a que el alumno se familiarice con las herramientas disponibles en matlab para el Control Autom´atico, entre las que est´an el denominado Control Toolbox y el simulink. Al mismo tiempo, la pr´actica servir´a 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´a llevar a cabo con anterioridad a la sesi´on de la pr´actica en el Centro de C´alculo. Dicho estudio previo com-prende la lectura detallada de las secciones 1 y 2, para la familiarizaci´on con los comandos de matlab y herramientas de simulink que se usar´an, as´ı como la realizaci´on de los subapartados denominados Trabajo Previo que pueden encontrarse en las dem´as secciones.
1
Introducci´
on al Control Toolbox de matlab
En esta secci´on, se asumir´a que el alumno est´a familiarizado con el uso del matlab en general, para centrar la descripci´on en el juego de herramientas de que dispone matlab para tareas relacionadas espec´ıficamente con el Control Autom´atico. Dichas herramientas est´an incluidas en un complemento de matlab, denominado Control Toolbox.
1.1 Definici´on de funciones de transferencia
La primera tarea que se puede plantear es la de definir una funci´on de transferencia en matlab. Para ello, en primer lugar, ha de recordarse c´omo se pueden definir polinomios. Imaginemos que queremos definir la funci´on de transferencia:
G(s) = 2.5 s + 1 s2+ 3 s + 2
Para ello, podemos definir los polinomios numerador y denominador, almacen´andolos 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´andoles como funci´on de transferencia este par de polinomios.
Hay que tener ciertas precauciones, cuando alguno de los coeficientes sea nulo. Por ejemplo, supongamos que la funci´on de transferencia fuera la siguiente:
G(s) = 3 s2+ 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:
G(s) = 3 s + 2
En su lugar, la forma correcta ser´ıa:
N = 3;
D = [1,2,0];
En lugar de trabajar con un par de polinomios que definen el numerador y denominador de la funci´on de transferencia, pueden unificarse estos dos elementos en un objeto funci´on de trans-ferencia, mediante el comando tf():
N = [2.5,1]; D = [1,3,2]; G = tf (N,D);
Si preguntamos a continuaci´on por el valor de la variable G, comprobaremos que es un objeto m´as 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´on de transferencia corresponde con un sistema estable, bastar´ıa con calcular las ra´ıces del denominador:
roots (D)
Esta funci´on devuelve, en general, un vector conteniendo los polos de la funci´on de transferencia. De forma an´aloga, los ceros de la funci´on de transferencia vendr´an dados por las ra´ıces del numerador.
Si se est´a trabajando con objetos funciones de transferencia, existe una forma directa de obtener sus polos y ceros, usando los siguientes comandos:
polos = pole (G); ceros = tzero (G);
1.2 Simulaci´on de respuesta temporal
La funci´on step() simula la respuesta ante escal´on unitario de una funci´on de transferencia. Por defecto, la escala temporal se elige autom´aticamente y se asume que el escal´on se produce en el instante cero.
step (N, D);
La llamada a esta funci´on lleva asociada la representaci´on en una ventana gr´afica de la salida resultante.
Alternativamente, podemos pasar como par´ametro un objeto funci´on de transferencia:
step (G); grid;
En este caso, al igual que podr´ıa haberse hecho en el caso anterior, se ha a˜nadido el comando
grid, que permite visualizar una rejilla sobre el fondo de la gr´afica.
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´on, 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´a nuestro vector de instantes de tiempo a emplear en la simulaci´on. Para ello, en la llamada a la funci´on
step() se le pasa este vector tiempo como ´ultimo par´ametro.
Si se desea representar dos respuestas escal´on en la misma gr´afica, 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´on step() puede devolver un vector conteniendo los valores que resulten para la se˜nal de salida en cada instante de la simulaci´on. En este caso, dicha funci´on no realiza
representaci´on gr´afica alguna. El comando plot(), por su parte, permite realizar representaciones gr´aficas de dos dimensiones. En este caso particular, se est´an representando dos se˜nales, las contenidas en los vectores y1 e y2, frente a la misma escala temporal.
Existen otras funciones para simular la respuesta ante se˜nales de entrada. Por ejemplo, la funci´on
impulse(), simula la respuesta ante impulso unitario a la entrada. La funci´on lsim() permite la simulaci´on de la respuesta ante cualquier se˜nal 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´on impulse() como la funci´on lsim() tienen caracter´ısticas similares a la funci´on
step(), en cuanto a que realizan la representaci´on de forma autom´atica, a menos que en la llamada se almacene el valor devuelto por la funci´on en alguna variable.
1.3 Algebra de bloques´
Existen funciones para realizar operaciones de ´algebra de bloques con funciones de transferencia. A continuaci´on, se mostrar´an algunos ejemplos.
La operaci´on m´as elemental consiste en obtener una ´unica funci´on de transferencia equivalente a otras dos que est´en dispuestas en serie. Imaginemos definidos los polinomios numerador y denominador de dos funciones de transferencia, N 1, D1, N 2 y D2. Dado que el resultado de la operaci´on 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´on que nos permite realizar producto de polinomios es conv():
N1 = [2.5,1]; D1 = [1,3,2]; N2 = 3; D2 = [1,2,1]; N = conv (N1, N2); D = conv (D1, D2);
Tras estas operaciones, la funci´on de transferencia dada por el par de polinomios N , D, ser´ıa la resultante.
Otra forma de realizar la misma operaci´on, en un s´olo paso, es emplear la funci´on series(), que, a diferencia de la funci´on conv(), s´ı es espec´ıfica del Control Toolbox y, por tanto, puede interpretar pares de polinomios como una funci´on de transferencia:
Si se recurre a los objetos funci´on de transferencia, todo resulta mucho m´as 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´on de transferencia. Esto no impide que la funci´on series() pueda seguir siendo usada con este tipo de objetos:
G = series (G1, G2);
De forma an´aloga a la puesta en serie de dos funciones de transferencia, se puede obtener el equivalente de una configuraci´on en paralelo. A continuaci´on, 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´on de transferencia equivalente al conjunto, podemos usar la funci´on cloop():
[Nbc,Dbc] = cloop (N,D,-1);
donde el ´ultimo par´ametro indica que se trata de realimentaci´on negativa (1 ser´ıa realimentaci´on positiva). Si hacemos uso de objetos funci´on de transferencia, tenemos que recurrir a la funci´on
feedback():
Gbc = feedback (G,1,-1);
El segundo par´ametro de esta funci´on indica la funci´on de transferencia que se asume en la cadena de realimentaci´on (en este caso, se trata de realimentaci´on unitaria), mientras que el ´
2
Introducci´
on al simulink
simulink es un complemento de matlab que permite realizar simulaci´on din´amica de sistemas por medio de una interfaz gr´afica muy c´omoda de usar. En esta secci´on se dar´an unos breves comentarios introductorios al simulink. En todo caso, es recomendable acudir a un manual de referencia m´as completo, como el que puede encontrarse en el entorno de Ense˜nanza 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´a 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´es del men´u File→New→Model. Con ello, aparecer´a una nueva ventana en la que se confeccionar´a el modelo del sistema din´amico 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´an elementos desde la ventana de herramientas hasta la ventana del modelo. Los elementos se unir´an luego con flechas, dando lugar a un diagrama de bloques. Cada flecha representa una se˜nal diferente de la cual podremos obtener, al realizar una simulaci´on, 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´a poner atenci´on a los nombres descriptivos que aparecen debajo de cada bloque.
2.1 Integradores
Los integradores nos permiten modelar sistemas din´amicos lineales y no lineales descritos median-te un modelo en ecuaciones diferenciales. El hecho de que los sismedian-temas sean representados me-diante ecuaciones diferenciales implica que ser´a necesario integrar dichas ecuaciones para poder simular cu´al ser´a la evoluci´on temporal del sistema. simulink ofrece una herramienta de in-tegraci´on num´erica que incluye varios m´etodos de integraci´on. Esto permite integrar se˜nales temporales, independientemente de que el sistema sea lineal o no.
Para integrar directamente se˜nales temporales, simulink incluye un bloque llamado “integrador” (Integrator), el cual puede obtenerse de la biblioteca de elementos de tiempo continuo
(Contin-uous). Este componente proporciona una salida y igual a la integraci´on temporal de su entrada
u (y(t) =∫0tu(τ )dτ ).
En la figura 2, se propone un peque˜no modelo para ilustrar c´omo funciona el bloque integrador. Se introduce a su entrada un escal´on y se observa que la salida del integrador ser´a una rampa.
Step Mux Scope
Integrator 1
s
Figure 2: Diagrama de bloques simulando el comportamiento de un integrador ante entrada en escal´on.
La se˜nal de entrada del integrador proviene en este ejemplo de un bloque escal´on (Step) sacado de la biblioteca de fuentes (Sources). La salida del bloque integrador se re´une con la entrada en el bloque multiplexor (Mux, del apartado Signal Routing de la biblioteca), para que ambas sean mostradas en la gr´afica dibujada con el bloque visor (Scope, del apartado Sinks). En la figura 3, puede verse el resultado de la simulaci´on visto a trav´es del visor.
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.
Transfer Fcn s+2 s +s+32
Step Mux Scope
Figure 4: Ilustraci´on del uso del bloque funci´on de transferencia. En este caso, la funci´on de transferencia elegida ha sido:
G(s) = s + 2 s2+ s + 3
Para lograr que dicho bloque se corresponda con la funci´on de transferencia dada, basta con mo-dificar los par´ametros del mismo, pulsando dos veces sobre el bloque. En el cuadro de di´alogo 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´ametros del bloque funci´on de transferencia.
El resultado de la simulaci´on del diagrama anterior puede visualizarse a trav´es del visor (figura 6).
2.3 Realimentaci´on 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´on de transferencia dada con anterioridad.
Figure 6: Respuesta resultante de la simulaci´on del diagrama previo.
Transfer Function s+2 s +s+32 Sum
Step Gain Scope
K
Figure 7: Funci´on de transferencia con ganancia en serie y realimentada.
Un sumador o restador se implementa mediante un bloque Add ´o 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´on del modelo pueda llevarse a cabo, ser´a necesario que previamente se haya definido dicha variable desde matlab. Esto ilustra las posibilidades de interacci´on 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´on de un diagrama de simulink estar´an disponibles para su uso desde la ventana de comandos de matlab, como se ver´a a continuaci´on.
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˜nales; entre ellos tenemos se˜nal de valor constante (Constant), se˜nal escal´on (Step), se˜nal rampa (Ramp), se˜nales senoidales (Sine Wave) y muchas otras. Tambi´en existe un elemento, denominado Clock, que proporciona un vector con los instantes de simulaci´on.
En el otro extremo, tenemos elementos que son “sumideros” de se˜nales, es decir, que s´olo reciben se˜nales, 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
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˜nal que se recibe como entrada del bloque, para cada instante de simulaci´on.
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˜nal de entrada, producida por el escal´on, se almacena en otra variable, denominada r. Se ha incluido, adem´as, un elemento reloj, cuya salida se almacena en otra variable, a la que se la denomina tSim.
Transfer Function s+2 s +s+32 To Workspace2 tSim To Workspace1 r To Workspace y Sum Step Gain K Clock
Figure 8: Diagrama de bloques para ilustrar el uso de los bloques Clock y To Workspace. En principio, se recomienda configurar los par´ametros 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´on est´a en la simplicidad que eso aporta, a posteriori, para la manipulaci´on de estas variables desde matlab.
Figure 9: Cuadro de di´alogo para establecer los par´ametros de un bloque To Workspace. Una vez realizada la simulaci´on, dispondremos de las variables tSim, r e y, con las que podremos realizar una representaci´on gr´afica a voluntad, usando el comando plot() ya conocido:
3
Trabajo a desarrollar en relaci´
on con el Control Toolbox de
matlab
En esta parte de la pr´actica, se parte directamente de una funci´on de transferencia dada por la expresi´on siguiente: G1(s) = K (s + c) (s + p) (s2+ 2 δ w ns + w2n) (1)
Se trata de una funci´on de transferencia que ser´a estable, con un polo real, que resultar´a ser el elemento m´as dominante respecto a los dem´as, un cero que ser´a de fase m´ınima1 y un par de polos complejos conjugados, que ser´an menos dominantes que los dem´as elementos (si bien, ninguno de los factores citados ser´a totalmente despreciable frente a los dem´as).
Cada alumno elegir´a los valores num´ericos de los par´ametros, a partir de las siguientes relaciones:
K = 135 + 15 D8 90 p = 45 + 7 D7 90 c = 207 + 12 D6 90 δ = 45 + 2 D5 90 wn = 6 p
Siendo D8 el d´ıgito menos significativo del DNI, D7el anterior y as´ı sucesivamente. Por ejemplo, para el DNI n´umero: 53568447, se tendr´ıa D8 = 7, D7 = 4, D6 = 4, D5 = 8, con lo que resultar´ıan los siguientes valores de los par´ametros:
K = 2.66667 p = 0.81111, c = 2.83333, δ = 0.67778, wn = 4.86667
3.1 Aproximaci´on por modelo de primer orden
3.1.1 Trabajo previo
En primer lugar, se desea obtener una funci´on de transferencia de orden reducido, que aproxime el comportamiento del sistema de partida.
1Un cero de fase m´ınima es aqu´el que se encuentra en el semiplano izquierdo del plano complejo; dicho de otra
Si se simula la respuesta ante escal´on del sistema dado, puede comprobarse que se puede identi-ficar f´acilmente una ´unica constante de tiempo dominante y aproximar al sistema por un modelo de primer orden, de la forma:
G1(s) ≈ ˜
K
1 + ˜τ s (2)
A partir de la representaci´on gr´afica de la respuesta ante escal´on del sistema, pueden estimarse los dos par´ametros requeridos en (2). Como es sabido, para un sistema que sea verdaderamente de primer orden, la identificaci´on 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: t63% = ˜τ y te95%= 3 ˜τ .
Trabajo en el Centro de C´alculo
• Simule la respuesta ante escal´on del sistema original (1). A la vista de esa respuesta,
identifique emp´ıricamente los par´ametros de la funci´on de transferencia aproximada (2): ganancia est´atica ˜K [p1], y constante de tiempo ˜τ [p2](estimada a partir de la regla
t63% = ˜τ ).
• Compare la respuesta ante escal´on unitario del sistema original y del reducido. Para
realizar esta comparaci´on de forma gr´afica, 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´es de producirse el escal´on de entrada, y(2 ˜τ ) [p3], y an´alogamente para el sistema aproximado (2) en ese mismo instante, yaprox(2 ˜τ ) [p4].
Nota: Si est´a utilizando el comando step() sugerido anteriormente, tenga en cuenta que puede conseguirse un paso de simulaci´on tan peque˜no como se quiera, proporcionando a dicha funci´on un vector tiempo con el paso o incremento correspondiente.
• Habida cuenta de que, dependiendo del modelo concreto, puede obtenerse una mejor
aproximaci´on estimando la constante de tiempo mediante la regla te95% = 3 ˜τ , se pide realizar esta estimaci´on alternativa de la constante de tiempo, a la que se llamar´a ˜τ2 [p5].
• Con objeto de poder hacer la comparaci´on 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´es de producirse el escal´on de entrada,
y(˜τ2) [p6]. An´alogamente para el nuevo sistema aproximado yaprox2(˜τ2) [p7].
3.2 Aproximaci´on por modelo de segundo orden
En este apartado, se trabajar´a con una funci´on de transferencia similar a la dada en (1), con la diferencia de que los polos complejos conjugados se har´an m´as significativos. Para ello, se modifica el valor original de los par´ametros δ y wn:
G2(s) = K (s + c) (s + p) (s2+ 2 δ 2wn2s + wn22) ; δ2 = δ− 0.2 ; wn2 = wn/6 = p (3) 3.2.1 Trabajo previo
Se desea obtener una funci´on de transferencia de segundo orden, que aproxime el comportamiento del sistema de partida dado.
Simulando la respuesta ante escal´on del sistema dado, puede comprobarse que, efectivamente, dicha respuesta se puede aproximar mediante una funci´on de transferencia de segundo orden subamortiguada, de la forma: G2(s) ≈ K ˜˜ w 2 n s2+ 2 ˜δ ˜w ns + ˜w2n (4)
A partir de la representaci´on gr´afica de la respuesta ante escal´on de un sistema de este tipo, pueden estimarse los par´ametros requeridos en (4). Para el trabajo a realizar a continuaci´on, se sugiere usar las medidas de ganancia est´atica, sobreoscilaci´on (que, expresada en tanto por uno, ser´a referida como ˜SO) y tiempo de pico (˜tp), para deducir los tres par´ametros: ˜K, ˜δ y ˜wn. La relaci´on entre las citadas medidas y los par´ametros de la funci´on de transferencia, como es sabido, son las siguientes:
˜ SO = e −˜δ π √ 1−˜δ2 ˜ tp = π ˜ wn √ 1− ˜δ2 (5)
3.2.2 Trabajo en el Centro de C´alculo
• Simule la respuesta ante escal´on del sistema original (3). A la vista de esa respuesta,
identifique emp´ıricamente los par´ametros de la funci´on de transferencia aproximada (4): ganancia est´atica ˜K [p8], coeficiente de amortiguamiento ˜δ [p9], y frecuencia natural no
amortiguada ˜wn [p10].
Nota: Tal y como se ha dicho anteriormente, debe emplearse la expresi´on (5) para la estimaci´on de ˜wn.
• Compare la respuesta ante escal´on 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´es de producirse el escal´on de entrada, y(˜ts) [p11]. An´alogamente para el sistema aproximado (4) en ese mismo instante, yaprox(˜ts) [p12].
Nota: Emplee la siguiente expresi´on para obtener el valor del tiempo de subida en el que tomar las medidas:
˜ ts = π − arccos(˜δ) ˜ wn √ 1− ˜δ2
4
Trabajo a desarrollar en relaci´
on con simulink
En esta secci´on, el alumno deber´a 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´on aplicada sobre el motor, u [V], y como salida la orientaci´on del eje de la carga, θ [rad] (o, en su caso, la velocidad de giro del mismo, ˙θ [rad/s]), la ecuaci´on diferencial del modelo es la siguiente:
Kmu = I ¨θ + b ˙θ (6)
Los par´ametros del modelo se obtienen a partir del DNI de cada alumno, seg´un las siguientes expresiones: Km = 18 + 8 D8 90 [N· m/V ] I = 225 + 15 D7 90 [ Kg· m2 ] b = 45 + 15 D6 9 [ Kg· m2/s ]
Donde D6, D7 y D8 son las tres ´ultimas cifras del DNI. Por ejemplo, para el DNI n´umero: 53568447, se tendr´ıa D8 = 7, D7 = 4, D6 = 4, con lo que resultar´ıan los siguientes valores de los par´ametros: Km = 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´on diferencial (6) puede implementarse f´acilmente, despe-jando la derivada segunda de la salida, ¨θ. El resultado puede apreciarse en la figura 10.
u acelAng velAng ang
Scope 1 s 1 s Km b 1/I
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´on de transferencia de forma inmediata, resultando Gv(s) para la salida en velocidad y 2A diferencia de lo que ocurre con los dem´as par´ametros, el denominador de la expresi´on que define el par´ametro b es 9, en lugar de 90.
Gp(s) para la salida en posici´on: Gv(s) = K 1 + τ s ; Gp(s) = 1 sGv(s) = K s (1 + τ s) (7)
Pueden calcularse de forma directa los par´ametros K y τ de las expresiones anteriores, a partir de los par´ametros del modelo (6). Una vez hecho esto, una forma equivalente de modelar el motor, a trav´es de su funci´on de transferencia, ser´ıa mediante un ´unico bloque de simulink, como se muestra en la figura 11.
u K velAng ang
tau .s+1 Scope
1 s
Figure 11: Modelado del motor mediante funci´on de transferencia.
Desde el punto de vista pr´actico, la ´unica 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´on del sistema ante condiciones iniciales no nulas para velocidad y que existen se˜nales intermedias directamente accesibles, como la aceleraci´on angular, ¨θ, o el par de fricci´on, b ˙θ.
4.1.2 Trabajo en el Centro de C´alculo
• Implemente el diagrama de bloques mostrado en la figura 10, pero haciendo que entre
tambi´en en el visor la velocidad angular 3. Configure una condici´on inicial no nula, θ(t = 0) = 0.2 [rad], para la salida en posici´on, a trav´es de las propiedades del integrador correspondiente. Mantenga, sin embargo, condici´on inicial nula para la velocidad angular,
˙
θ(t = 0) = 0 [rad/s].
Nota: De cara al siguiente punto, tenga precauci´on para no pasar por alto el instante en el que se produce el escal´on, dado que, por defecto, no es cero.
• Simule la respuesta del sistema ante una entrada de tipo escal´on: u(t) = 4V . Tome nota
de los valores θ(t) [p13] y ˙θ(t) [p14], 0.3 segundos despu´es de producirse dicho escal´on.
Nota: En algunos casos, si se observa que las curvas de respuesta tienen pocos puntos,
significa que la simulaci´on puede requerir un paso de integraci´on m´aximo m´as reducido. Esto puede dar lugar a medidas imprecisas, a partir de las representaciones gr´aficas de las se˜nales de inter´es. El par´ametro que controla este paso de integraci´on puede establecerse en (Menu→Simulation→Configuration Parameters→Max. step size) del m´etodo num´erico de integraci´on de simulink (ver figura 12). Por defecto, el valor de este par´ametro suele ser auto, pero puede modificarse este valor a voluntad, para forzar a que el n´umero de puntos en los que se lleva a cabo la simulaci´on se incremente sustancialmente.
Si, como consecuencia de lo anterior, el n´umero de puntos a registrar durante una simu-laci´on aumenta considerablemente, y la simulaci´on dura el tiempo suficiente, puede ser necesario tener en cuenta un detalle adicional, en relaci´on con los elementos Scope, en caso 3
Figure 12: Opci´on para cambiar el paso m´aximo de integraci´on de simulink.
de que ´estos se est´en 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´erdida del registro de la primera parte del experimento. Por defecto, los bloques Scope s´olo mantienen el registro de los ´ultimos 5000 puntos de una simulaci´on. Este problema puede solventarse de forma inmediata, accediendo a las propiedades del Scope y desactivando, en la pesta˜na
Data History, la limitaci´on del buffer, tal y como se muestra en la figura 13.
Figure 13: Opci´on para desactivar la limitaci´on del buffer del Scope.
• Proporcione los valores de los par´ametros de la funci´on de transferencia Gv(s): K [p15],
τ [p16]. Estos par´ametros pueden obtenerse, bien de forma anal´ıtica, bien de forma experimental, como se desee.
4.2 Motor en realimentaci´on 4.2.1 Trabajo previo
A partir de la funci´on de transferencia del motor, resulta muy c´omodo establecer una configu-raci´on en realimentaci´on, a˜nadiendo una ganancia ajustable en la cadena directa, como se mues-tra en la figura 14. Como puede apreciarse, en este caso, se ha usado directamente la funci´on de transferencia de salida en posici´on, siendo ´esta la se˜nal que se realimenta.
u ang
e
r K
tau .s +s2 Scope
Kc
Figure 14: Sistema motor realimentado con ganancia ajustable.
Debe tenerse en cuenta que la se˜nal de tipo escal´on 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´on se usaba para proporcionar directamente la se˜nal de entrada al sistema o actuaci´on, u(t). Sin embargo, en el esquema realimentado, la se˜nal proporcionada por el escal´on ser´a una se˜nal de referencia, r(t), que debe ser comparada con la salida y, por tanto, debe ser una se˜nal de la misma naturaleza que ´esta; es decir, se trata de una referencia para el ´angulo de salida del motor. Por otro lado, como puede comprobarse, se ha a˜nadido una ganancia ajustable que, a partir del error observado en el ´angulo de salida respecto a la referencia fijada, e(t), proporciona una actuaci´on directamente proporcional a dicho error: u(t) = Kc e(t).
Si se realiza la reducci´on del diagrama de bloques, para un valor gen´erico de ganancia Kc, puede comprobarse que la funci´on 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:
Gbc = Kbcwn2bc s2+ 2 δ bcwnbcs + w 2 nbc (8)
4.2.2 Trabajo en el Centro de C´alculo
• Determine anal´ıticamente el valor de la ganancia Kc [p17], para que el sistema realimen-tado resulte estable y con un coeficiente de amortiguamiento δbc = 0.7, de acuerdo con la expresi´on (8).
• Implemente el diagrama de bloques mostrado en la figura 14 y verifique el punto
ante-rior (basta comprobar que la sobreoscilaci´on del sistema realimentado resultante debe ser ligeramente inferior al 5%).
• Para el valor de ganancia Kcfijado, determine anal´ıticamente el tiempo de pico que tendr´ıa la respuesta ante referencia en escal´on, tpteorico [p18]. Determine este mismo valor
ex-perimentalmente, tpexperim [p19], a partir de una simulaci´on con el modelo de la figura
5
Instrucciones para entregar las respuestas en Goodle
Las respuestas del m´odulo entregar´an en Goodle. La p´agina 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˜nanza 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´on de trabajo en el centro de c´alculo tiene
asignado un nombre. En el enunciado de la pr´actica se indica con una etiqueta entre corchetes cada respuesta que hay que entregar.
Ejemplo: A la primera respuesta (valor de la ganancia est´atica identificada) le corresponde el nombre p1 y a la ´ultima 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´on de transfe-rencia (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´on de transferencia), hay que utilizar el formato explicado al principio para introducir polinomios en matlab en la Secci´on 1.1. En caso de que alguno de los polinomios fuera una constante, los corchetes deben obviarse. Por ejemplo, para indicar:
Gbc(s) = 7
3s2+ 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
p5 = ; p6 =
En lugar de eso, introduzca en la respuesta alg´un valor, preferentemente un valor nulo: p5 = 0;
p6 = 0;
Ejemplo de formulario relleno
(Los n´umeros 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;