Está en la página 1de 7

Actualizacin al Tutorial PID

INFORME
Autor : (Nombre y dos apellidos) Grupo investigador * : Organizacin : Fecha : 14/05/1998 Ttulo : Palabras Clave * : (Pertenecientes a la lista preestablecida) Encargado por: (Director del proyecto) Versin de Word utilizada : Iigo Berganza Valmala Aula Iberdrola Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU) 13 de Agosto de 2000 Actualizacin al Tutorial PID

Javier Portillo Berasaluce Word 97

Extensiones de los ficheros adjuntos : m; mat; txt (bmp; txt; pdf; ppt; ps, ... ) Nombres de los ficheros adjuntos : Directorio TUTORIAL (listados por cada extensin) Documentos de referencia en formato magntico : (Informes sobre los que se basa) * * El contenido de estos campos deber ser indicado por el director del proyecto . OPERACIONES: RELLENAR: Seleccionar la FILA de la tabla (pulsar a la izquierda de la misma cuando el cursor se convierte en una flecha) o la TABLA entera (desplazar el cursor seleccionando todas las filas) Pulsar F9 (actualizar campos) Escribir el contenido de cada campo (no se debe dejar un campo vaco). S e debe poner al menos un espacio en blanco. MODIFICAR: Hay que proceder como en el caso de rellenar una FILA. Un campo se debe modificar siempre dentro del cuadro de dialogo . Nunca se debe modificar directamente una celda de la derecha en la tabla. ACTUALIZAR CAMPO: con el cursor sobre el elemento a actualizar pulsar F9, o para actualizacin total pulsar CTRL+F9.

INDICE
ACTUALIZACIN AL TUTORIAL PID_________________________________1 INFORME_____________________________________________________________2 INDICE_________________________________________________________________I 1 INTRODUCCIN_____________________________________________________2 2 CAMBIOS Y WARNINGS____________________________________________2

Iigo Berganza Valmala Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU)

Actualizacin al tutorial PID

1 INTRODUCCIN
El Tutorial PID fue diseado por el Departamento para la versin 4.2 de Matlab. El objetivo de estas actualizaciones es permitir que el Tutorial PID pueda ser ejecutado en la versin 5.3 de Matlab (concretamente ha sido probado con la versin 5.3.0.10183 [R11]). Los cambios que se han realizado se han de entender como los imprescindibles para que el tutorial se pudiera ejecutar entero sin error. No pretende ser una revisin completa del tutorial que lo adapte a las numerosas nuevas caractersticas que la edicin 5 de Matlab ha introducido. Ello se deja para ms adelante, y desde luego se habra de hacer por una persona que tuviera mayores conocimientos sobre Matlab y Simulink (probablemente habra que redisear la parte Simulink e implementarla con archivos de tipo .mdl). Por tanto, no se descarta que algunas cosas funcionen de forma diferente a como debieran, y que algunas de las grficas arrojen ahora resultados errneos. Si hay algn error sutil, que requiriese hacer algn cambio para la versin 5.3, pero este error no se muestra de ningn modo visible ni produce warnings en tiempo de ejecucin, es posible que haya pasado sin ser detectado ni corregido. La lnea de actuacin que se ha seguido es ir ejecutando el tutorial en la versin 5.3, y subsanando los errores a medida que estos aparecan e impedan proseguir con la ejecucin. No se ha profundizado excesivamente en las causas de los errores (la mayora de ellos provenan de Simulink, sobre el cual mis conocimientos son escasos), y se consideraba corregido un error cuando el Tutorial se poda seguir ejecutando sin problemas aparentes en ese punto. Concretamente, se ha detectado que en las grficas de seales de Control se producen unos impulsos de mucho ms valor en la versin 5.3 que en la versin 4.2. En sta se alcanzaban pulsos de valor 500 1000, que en la versin 5.3 quedaban convertidos en picos de valor 10 billones, ms o menos. No s si esto es porque ahora existen ms puntos de muestreo, o porque habra que cambiar algo, pero eso es algo que no ha quedado corregido (slo se ha pretendido que el tutorial se ejecute sin errores que lo aborten).

2 CAMBIOS Y WARNINGS
Veamos primero los cambios que se han realizado, y despus los warnings que quedan sin subsanar.

2.1 CAMBIOS REALIZADOS


El primer cambio que se ha realizado es reducir la cantidad de ficheros que bsicamente contenan cadenas de texto. Estos estaban organizados en archivos de nombre texta_bc, donde a representaba la leccin (hay dos), b el apartado y c el texto. Los apartados se dividan en un nmero concreto de textos, que vara entre uno y ocho. Aquellos apartados que estaban compuestos de ms de un texto (y que antes estaban divididos en tantos ficheros como textos los componan) han sido integrados en un solo fichero, al que se ha aadido un parmetro ms de entrada (llamado tex), el que identifica qu texto queremos. Ahora estos ficheros texta_b estn compuestos de sucesivos if tex == #,, detrs de cada cual va el antiguo fichero text a_b# correspondiente. As se consigue que haya menos ficheros en el tutorial. El nico fichero que se ha dejado como estaba es el Text1_61.m (pues se compone de un solo texto). En todos los lecX_XX.m se ha cambiado la lnea simver(1.3) por simver(3.0) En todos los lecX_XX.m y en algunos acci2_XX se ha cambiado el parmetro Relative Error por el de RelTol, que es el nuevo nombre que toma. Este parmetro se usa como argumento de las funciones set_param y get_param 2

Iigo Berganza Valmala Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU)

Actualizacin al tutorial PID

Se han eliminado las lneas 44 y 35 de los respectivos ficheros Texto2.m y ayuda.m en los que pona 'NextPlot','new',... porque daban un warning, y eliminndolas todo parece seguir funcionando bien Por esa misma razn, he convertido en comentarios las lneas 83, 84, 118, 119 y 125 del fichero grafica.m que tenan que ver con NextPlot En todas las llamadas a la funcin uicontrol en las que apareca el parmetro Position antes que el parmetro Units, ste se ha colocado antes que aquel para que no haya problemas, pues daba un warning avisando que para que Position se interprete en las unidades que marque Units, deben ir en el orden indicado. Esto afecta a los ficheros pid, m_lec1, m_lec2, dialogo, botonera, rotulos y text2_6 Existan tres unmatched end que daban un warning: en la lnea 314 de Texto2.m, lnea 163 de ayuda.m y lnea 111 de acci2_56. A todos ellos se los ha convertido en comentarios poniendo % En todos los ficheros lecX_XX.m se ha puesto el smbolo de comentario en la lnea set_param(sys,'Return vars', '') porque daba un error al ser obsoleto el parmetro, y eliminarla no afecta al funcionamiento. En una gran cantidad de ficheros lecX_XX.m hubo que cambiar la funcin new_system, que ya no se usa, por la funcin add_block, que hace lo mismo. Los argumentos que necesita add_block los proporcionaba el propio Matlab al dar el warning, en funcin de los que tena new_system, as que slo haba que sustituir. En casi todos los acciX_XX haba que dibujar una seal de referencia. El color estaba puesto para que fuera blanco, porque en Matlab 4.2 el fondo de las grficas era negro. Sin embargo en Matlab 5.3 el color de fondo de las grficas es blanco, por lo que se ha decidido que las seales de referencia se pinten en negro. Esto se ha hecho cambiando el argumento 'w' por 'k' en las llamadas a la funcin plot que hay en los ficheros acciX_XX.m En el fichero grafica.m se cambi la 35 lnea [sl_name,block] = get_param; por las lneas sl_name = get_param(0,'CurrentSystem'); block = get_param(sl_name,'CurrentBlock'); pues el uso de get_param ha cambiado. En el fichero grafica.m se puso un comentario a la lnea 157 que daba un valor a la variable discrete en base a la funcin any. No s muy bien la razn, pero ahora daba un error, as que decid convertir esa lnea en comentario y en la lnea siguiente poner discrete = 1; En gran cantidad de ficheros lecX_XX hubo que cambiar los valores que con set_param se daban a los parmetros hide name y orientation. Donde pona 0 hubo que poner 'off', donde pona 1 hubo que poner 'down' y donde pona 2 hubo que poner 'left' La funcin open_system de: acci2_67.m (lnea 51), acci2_55.m (lneas 86 y 103) y acci2_57.m (lnea 108) daba error porque deca Matlab que no exista el sistema en cuestin, as que aad una lnea justo antes de estos open_system, en la que llamo al fichero lecX_XX correspondiente (para que lo abra y el sistema exista, es un error que no aparece con Matlab 4.2, pero algo ha debido cambiar en el Simulink de Matlab 5.3) En la lnea 65 de lec2_53.m y en la 66 de lec2_57.m pona 'Denominator','[Ti 0]',...; el caso es que esto da un error en Matlab 5.3 parece ser que por causa de Ti, as que lo cambi por 'Denominator','[2 0]',..., al fin y al cabo ese es el valor que inicialmente debe tomar Ti En la llamada a la funcin set_param de la lnea 49 de lec2_11.m aparecan las dos lneas 'Vgain','15.000000',... 'Hgain','50.000000',...

Iigo Berganza Valmala Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU)

Actualizacin al tutorial PID Parece que esos dos parmetros son obsoletos, as que he eliminado las dos lneas y el funcionamiento no queda afectado En las lneas 91 y 111 del fichero acci2_44.m, pona plot(t,salida,color, etc y plot(t,control,color); respectivamente. En Matlab 4.2, la variable t y las variables salida y control tenan la misma longitud (401), pero por alguna razn esto en Matlab 5.3 no es as. Cuando se llama a este fichero con la opcin 2 la longitud de t es aproximadamente 9000 y la de salida y control es 1000. Cuando se llama con opcion = 3 la longitud de t es aproximadamente 90000 y la de salida y control es 1000. Cuando se llama con la opcin 4 todos los vectores tienen longitud = 444. Habiendo observado todo esto, y como buscar la raz del problema parece complicado, he decidido cambiar el comando plot de forma que queden plot(t(1:length(salida)),salida,color etc plot(t(1:length(control)),control,color); De esta forma fuerzo que todos los vectores tengan la misma longitud y as el plot no da errores, pero no es una solucin muy elegante. Adems, en los dos primeros casos la grfica pierde gran parte de la informacin de los vectores salida y control, y no descarto que pueda haber errores que no he detectado. En algunos ficheros acciX_XX.m existen unas lneas de cdigo que se encargan de recoger los valores de los parmetros de unos bloques enmascarados. Concretamente el problema est en el valor del parmetro Mask Entries, que es un string en el que hay diversos valores. En Matlab 4.2 este string era, por ejemplo, de la forma 3\/0\/0.3\/10\/0\/1\/, lo que indicaba que se compona de seis valores. Eso mismo ahora en Matlab 5.3 se indicara de la forma 3|0| 0.3|10|0|1. Como se ve, lo que antes eran una especie de uves ahora son barras, y an ms importante, al final del string ya no hay un separador. El pequeo algoritmo que antes se usaba estaba pensado para el string de formato antiguo, as que ha habido que cambiarlo para el de nuevo formato, porque la funcin get_param nos va a devolver un string en el nuevo formato. Este es el nico cambio destacable que ha habido que hacer propiamente en el cdigo fuente del Tutorial, y ha afectado a los ficheros acci1_33, acci1_43, acci1_44, acci2_25, acci2_32 y alguno ms. Como ltimo comentario, decir que existe un fichero dentro del tutorial, el img2_52, que parece que no se llama desde ningn sitio, y adems la imagen que contiene es igual a la de img2_51, por lo que parece que es un error, ese fichero no debera existir.

2.2 WARNINGS
Los warnings que permanecen son de cuatro tipos, y todos tienen que ver con Simulink. Suelen aparecer bastante a menudo cuando se llama a los archivos acciX_XX.m y lecX_XX.m, o sea que es normal que despus de la ejecucin del tutorial, la pantalla de comandos Matlab est llena de warnings. Sin embargo estos no afectan a la ejecucin. Warning: Source block 'XXX' specifies that its sample time (-1) should be back-inherited from the block(s) it drives. You should explicitly specify the sample time of source blocks. Es el warning que ms frecuentemente aparece. Surge principalmente cuando se introduce el bloque Consigna dentro de un diagrama Simulink. Todos los bloques Consigna tienen el parmetro Sample Time puesto a -1, y por alguna razn esto a Matlab 5.3 le resulta extrao. No parece, sin embargo, que afecte al funcionamiento, y aunque aconseja que en este bloque habra que especificar explcitamente el sample time, como no s que valor convendra en cada caso lo he dejado tal cual. Warning: LINSIM is obsolete and will be eliminated in future versions. Use SIM instead.

Iigo Berganza Valmala Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU)

Actualizacin al tutorial PID Sale cuando se llama a la funcin linsim desde archivos acciX_XX. Ahora hay que usar la funcin sim, que es built-in, y de hecho la funcin linsim lo que hace es establecer unos parmetros necesarios en el workspace, y llamar a sim. En un futuro sera interesante migrar todas las llamadas a linsim para convertirlas a sim, pero como no se puede hacer directamente, sino que hay que inicializar unas variables previamente, lo he dejado sin modificar. Warning: RK45 is obsolete and will be eliminated in future versions. Use SIM instead. Ocurre lo mismo que en el caso anterior. La funcin rk45 se llama desde ficheros acci2_5X Warning: Unable to meet integration tolerances without violating a minimum machine step size of 3.552713678800503e-015 at time 1.000000000000004 for model 'lecX_XX'. It appears that there is a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances). Este error aparece cuando hay una simulacin con la accin derivativa, que implica que la seal de control es una delta (o impulso de valor muy grande). Por alguna razn esto genera un warning en Matlab5.3, mientras que no lo haca en Matlab 4.2 (puede tener algo que ver con el hecho de que las deltas toman ahora valores mucho ms grandes?)

Iigo Berganza Valmala Dpto. de Ingeniera de Sistemas y Automtica (UPV/EHU)

También podría gustarte