Matlab permite desarrollar de forma sencilla un conjunto de pantallas con botones, mens, ventanas, etc., que permiten utilizar de manera muy simple programas realizados en el entorno Windows. Este conjunto de herramientas se denomina interfaz de usuario. ara poder hacer programas que utilicen las capacidades gr!ficas avanzadas de Matlab hay que conocer algunos de los conceptos que se e"plicaron en el cap#tulo anterior. Matlab dispone de una herramienta $%&'E, que tal y como hemos visto, permite generar interfaces de usuario de una forma simple y din!mica. 'e cualquier manera, es conveniente conocer los fundamentos de lo que se est! haciendo, de esta forma se podr#a modificar, incluso programarlo sin ayuda. El desarrollo de la aplicaci(n mediante $%&s se realiza en dos etapas) 'ise*o de los componentes +controles, mens y ejes, que formar!n el $%&. rogramaci(n de la respuesta de cada uno de los componentes ante la interacci(n del usuario.
%na vez tenemos planificada la forma de la interfaz, guardamos el proyecto y el $%&'E genera de forma autom!tica un fichero .m que controla el funcionamiento del $%&. Este fichero .m inicializa el $%& y contiene un marco para todos los callbac-s del $%& +las (rdenes que se ejecutan cuando el usuario interacta con un elemento del $%&,. %sando el editor de M./0.1 podremos a*adir c(digo a los callbac-s para realizar las funciones que queramos asignarles. El beneficio que proporciona el uso de $%&s es evidente, ya que permiten al usuario ejecutar c(modamente c(digo desarrollado en M./0.1 sin necesidad de cumplir la inc(moda sinta"is funcional necesaria cuando se trabaja desde la l#nea de (rdenes. . diferencia de la ejecuci(n de funciones o scripts de M./0.1, la ejecuci(n de $%&s no predetermina el flujo de ejecuci(n del c(digo. Es el usuario, a trav2s de su interacci(n con el $%&, el que determina el orden en que se ejecutan los diferentes comandos y funciones desarrolladas. 3tra diferencia importante es que la ejecuci(n no termina cuando finaliza la ejecuci(n del script o funci(n, sino que el $%& permanece abierto, permitiendo al usuario invocar la ejecuci(n de ese u otro c(digo desarrollado. Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina #&
4.'. Intercam(io de datos entre el archi)o .fi" el archi)o .m
4.2.1. SENTENCIAS GET Y SET
0a asignaci(n u obtenci(n de valores de los componentes se realiza mediante las sentencias get y set. or ejemplo, si queremos que la variable utpl tenga el valor del Slider1 escribimos) utpl4 get+handles.slider5,67alue6,8
9otar que siempre se obtienen los datos a trav2s de los identificadores handles. ara asignar el valor de la variable utpl al statictext etiquetada como text1 escribimos) :et +handles.te"t5,6:tring6,utpl,8 ;Escribe el valor del Slider en static-text
.s#, en general, para conocer el valor de un determinado elemento de la interfaz gr!fica se utiliza la funci(n get que obtiene el valor de la propiedad especificada del elemento con identificador <id=) get(id, 'propiedad') 'e la misma manera si se necesitara variar el contenido de una propiedad de un elemento se har#a con la siguiente instrucci(n) set (id, propiedad, valor)
Estas instrucciones se utilizar!n muy a menudo en las distintas funciones que se realizan en la interfaz. :e pueden observar en los distintos ficheros .m y con diferentes funcionalidades como pueden ser) 3btener el valor de una propiedad de un elemento para realizar una funci(n concreta +ejemplo) establecer nuevos valores de tensiones y corrientes positivas y negativas en la fuente,.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina ##
>ambiar de color un elemento de la interfaz para resaltar alguna informaci(n +ejemplo) cuando se encienden y se apagan las fuentes de tensi(n positiva y negativa,. 3cultar o hacer visible algn bot(n o caracter#stica concreta +ejemplo) cambiar la imagen de play a pause del toogle botton,.
4.2.2. MANEJO DE DATOS ENTRE LOS ELEMENTOS DE LA APLICACIN Y EL ARCHIVO .M
/odos los valores de las propiedades de los elementos +color, valor, posici(n, string?, y los valores de las variables transitorias del programa se almacenan en una estructura, los cuales son accedidos mediante un nico y mismo identificador para todos 2stos. El identificador se asigna en) handles.output = hObject; handles, es nuestro identificador a los datos de la aplicaci(n. Esta definici(n de identificador es salvada con la siguiente instrucci(n) guidata(hObject, handles); guidata, es la sentencia para salvar los datos de la aplicaci(n. Nota: guidata es la funci(n que guarda las variables y propiedades de los elementos en la estructura de datos de la aplicaci(n, por lo tanto, como regla general, en cada subrutina se debe escribir en la ltima l#nea lo siguiente) guidata(hObject,handles); Esta sentencia nos garantiza que cualquier cambio o asignaci(n de propiedades o variables quede almacenado. or ejemplo, si dentro de una subrutina una operaci(n dio como resultado una variable nombre para poder utilizarla desde el programa u otra subrutina debemos salvarla de la siguiente manera) handles.nombre= nombre; guidata(hObject,handles); 0a primera l#nea crea la variable nombre a la estructura de datos de la aplicaci(n apuntada por handles y la segunda graba el valor.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina #*
4.2.3. PROGRAMACIN DEL FICHERO .M DEL GUI E INTERCAMBIO DE DATOS ENTRE CALLBACKCS:
4.2.3.1. P!"#$#%&'( )*+ ,&%-*! .$ )*+ GUI:
'espu2s de dise*ar el $%&, podemos programar el fichero .m asociado en el editor de M./0.1. El $%&'E genera autom!ticamente este fichero a partir del dise*o la primera vez que se salva o ejecuta el $%&. El fichero .m del $%& se encarga de las siguientes tareas)
&nicializa el $%&. >ontiene c(digo para realizar las tareas necesarias antes de que aparezca el $%& en pantalla, como la creaci(n de datos o gr!ficos. >ontiene las funciones callback que se ejecutan cada vez que el usuario hace clic en un componente.
>ada callback es una subfunci(n que inicialmente es s(lo una definici(n de funci(n vac#a. 9osotros debemos a*adir c(digo a los callbacks para proporcionarle operatividad al $%&.
4.2.3.2. C'$! %!$.#/& )#/!0 *(/* +!0 C#++1#%20:
odemos hacerlo almacenando los datos en la estructura handles. /odos los componentes del $%& comparten la misma estructura handles. /odos los callbacks generados por el $%&'E reciben esta estructura como argumento.
ara gestionar los >allbac- es preferible que se haga por medio de funciones que mediante cadenas de caracteres que contengan comandos de Matlab. Esta es una idea importante a la hora de programar con Matlab. 0o mismo se puede decir respecto a los ficheros de comandos @.m que no son funciones) siempre ser! preferible utilizar funciones. Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina #+
0as funciones de Matlab tienen su propio espacio de trabajo y la informaci(n necesaria para realizar su tarea les llega por uno de los siguientes caminos)
or medio de los argumentos con los que se llama la funci(n, que lo usaremos en las llamadas a distintas funciones aunque esto no se puede usar tan f!cilmente para pasar par!metros entre distintos >allbac-. . trav2s de variables globales +t2cnica que conviene evitar en la medida de lo posible,. Es tambi2n posible que la propia funci(n se las arregle para encontrar de alguna manera la informaci(n que necesita, bien busc!ndola en algn recurso +un fichero, una variable accesible, al que se tenga acceso, bien llamando a otras funciones que se la proporcionen.
En los >allbac- de Matlab hay que recurrir con mucha frecuencia a la tercera posibilidad) las funciones tienen que buscar la informaci(n que necesitan y para ello lo que se ha hecho ha sido inicializar las variables a un cierto valor en el inicio de la interfaz y guardarlo en un fichero @.mat. >uando se necesita el valor de esa variable en cualquier parte de la interfaz, se recupera la variable mediante el comando load y si se var#a el valor que ten#a se salva mediante un save con lo que ya tenemos el nuevo valor cargado para cuando se quiera utilizar de nuevo.
'e esta manera se han creado todas las variables con las que se trabaja en la interfaz. >omo se necesitaron un gran nmero de variables eran muchos ficheros @.mat los que ten#amos en la carpeta del programa, lo que hicimos fue crear CloseRequestFcn(hObect! e"entdata! handles# de manera que cuando se cerraba la interfaz, se ejecutaba dicho callbac- cuya funci(n es borrar uno a uno los distintos ficheros que a su vez se generaron al iniciar el guide.
>uando se ejecuta el $%& y el usuario hace clic en uno de los controles, como puede ser, por ejemplo, un bot(n, M./0.1 ejecutar! el callback especificado por la propiedad >allbac- del componente. . continuaci(n de a*adir el c(digo deseado en la funci(n es importante no olvidar incluir la llamada guidata+h3bject,handles,, que hace que las modificaciones que hemos hecho queden almacenadas.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *,
4.-. .unciones empleadas para leer / escribir en el e0uipo
4.3.1. S!,/3#* )* %!$4(&%#%&'( %!( +# ,4*(/*
0as funciones que se han dise*ado para intercambiar instrucciones directamente con la fuente de tensi(n y poder as# desarrollar de manera adecuada todo el entorno gr!fico con mltiples aplicaciones, son las siguientes) fuente'>5 fuente'>A connectBfuente'> buildB$&1BobjectBfuente sendBcommandB fuente'>5 sendBcommandB fuente'>A sendBqueryB fuente'>5 sendBqueryB fuente'>A
'estacamos que las funciones fuente'>5 y fuente'>A son las principales, mientras que el resto de las funciones son rutinas que se ejecutan mediante llamadas que se realizan desde las funciones principales. . continuaci(n, se muestran las funciones principales +fuente'>5, fuente'>A,) function C75med, &5medD4fuente'>5+7inBneg, ; build $&1 object C:tatus>onnect,fuenteD 4 connectBfuente'>+6$&16,8 ; >anal 5, conseguimos tensiones negativas C:ent>ommandD 4 sendBcommandBfuente'>5+fuente,7inBneg,8 C:entEuery,75med,&5medD 4 sendBqueryBfuente'>5+fuente,8 delete+fuente, clear fuente Captulo 4..................Implementacin de la herramienta software
. continuaci(n, mostramos el c(digo de las restantes funciones, que son las que realmente establecen la comunicaci(n entre el equipo y el >.
; function C:tatus>onnect,fuenteD 4 connectBfuente'>+varargin, ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; /his function returns an object for the remote instrument by means of the ; configuration information given by the user. Missing information is ; filled up with default values. ;; ; param protocol type of protocol used +$&1, ; &f protocol is $&1) ; param aram:truct.$&1.board board number ; param aram:truct.$&1.primaddr primary address ; param aram:truct.$&1.secaddr secondary address +optional, ; return :tatus>onnect :tatus>onnect 4 F, if object could not be created. :tatus>onnect 4 5, if object was ;created successfully. ; return &nstr3bj /he object which was created for the newly connected remote instrument. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ function C:tatus>onnect,fuenteD 4 connectBfuente'>+varargin, :tatus>onnect 4 F8 Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *'
; default values) aram:truct.protocol 4 6$&168 aram:truct.$&1.board 4 F8 aram:truct.$&1.primaddr 4 G8 ; chec-ing number of arguments if +nargin H5, fuente 4 buildB$&1BobjectBfuente+aram:truct,8 return8 end ; chec- if first argument is a string if +ischar+vararginI5J, K45, error+6Lirst arameter must be a string defining the protocol type 66$&1666,8 end ; selecting protocol switch +upper+vararginI5J,, case 6$&16 aram:truct.protocol 4 6$&168 otherwise error+6rotocol type must either be 66$&1666,8 end ; setting $&1 board address or build />& object with given address or name if +nargin M 5, if +isequal+aram:truct.protocol,6$&16,, aram:truct.$&1.board 4 chec-int+vararginIAJ,8 end end ; set primary address of instrument if +nargin M A, Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *-
aram:truct.$&1.primaddr 4 chec-int+vararginINJ,8 end ; set secondary address of instrument if +nargin M N, aram:truct.$&1.secaddr 4 chec-int+vararginIOJ,8 end ; build $&1 object C:tatus>onnect, fuenteD 4 buildB$&1BobjectBfuente+aram:truct,8
. continuaci(n, mostramos la funci(n build$%&'($obect$fuente, que como su propio nombre indica es d(nde se incluyen las instrucciones adecuadas para construir el objeto fuente.
; ; function P building a $&1 object function C:tatus>onnect, fuenteD 4 buildB$&1BobjectBfuente+aram:truct, try if isfield+aram:truct.$&1,6secaddr6, fuente 4 gpib+6agilent6, aram:truct.$&1.board, aram:truct.$&1.primaddr,6:E>39'6,aram:truct.$&1.secaddr,8 fopen+fuente,8 fclose+fuente,8 else fuente4visa+6agilent6,6$&1F))G))F))&9:/Q6,8 fopen+fuente,8 fclose+fuente,8 end catch disp+63bject creation failed.6,8 fuente 4 F8 return end Captulo 4..................Implementacin de la herramienta software
'estacamos, que las funciones que mostramos a continuaci(n, son aquellas que nos permiten escribir valores en el bus $&1 y envi!rselos al equipo, estableciendo por tanto dicho valor en la fuente de tensi(n. ; function C:ent>ommandD 4 sendBcommandBfuente'>5 +&nstr3bj,tensionB5, ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; /his function sends :>& commands to remote instruments. ; Sparam &nstr3bj 3bject for remote instrument created by fuente'>5 ; Sreturn :ent>ommand :ent>ommand 4 F, if command could not be transmitted. ; :ent>ommand 4 5, if command was sent successfully. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ function C:ent>ommandD 4 sendBcommandBfuente'>5+&nstr3bj,tensionB5, :ent>ommand 4 F8 ; open connection and send command try fopen+&nstr3bj,8 fprintf+&nstr3bj, 67:E/ 5, ;T.AfUn6, PtensionB5,8 fclose+&nstr3bj,8 catch disp+6>ould not open connection or write command. Qechec- the connection settings.6,8 disp+6Maybe there is already an open connection to the device.6,8 return end :ent>ommand 4 58
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *$
0a siguiente funci(n es completamente an!loga a la anterior, s(lo que est! dise*ada para que nos podamos comunicar la fuente de tensi(n positiva)
; function C:ent>ommandD 4 sendBcommandB fuente'>A +&nstr3bj,tensionBA, ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; /his function sends :>& commands to remote instruments. ; Sparam &nstr3bj 3bject for remote instrument created by fuente'>A ; Sparam str>ommand /he :>& command string. ; Sreturn :ent>ommand :ent>ommand 4 F, if command could not be transmitted. ; :ent>ommand 4 5, if command was sent successfully. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ function C:ent>ommandD 4 sendBcommandBfuente'>A+&nstr3bj,tensionBA, :ent>ommand 4 F8 ; open connection and send command try fopen+&nstr3bj,8 fprintf+&nstr3bj, 67:E/ A, ;T.AfUn6, tensionBA,8 fclose+&nstr3bj,8 catch disp+6>ould not open connection or write command. Qechec- the connection settings.6,8 disp+6Maybe there is already an open connection to the device.6,8 return end :ent>ommand 4 58
. continuaci(n, mostramos las dos ltimas funciones que hemos implementado para interactuar directamente con la fuente de tensi(n. El c(digo es muy similar al de la funci(n send$command! s(lo que en este caso adem!s de escribir en el bus $&1 tambi2n leemos del bus mediante las instrucciones)
Captulo 4..................Implementacin de la herramienta software
; function C:entEuery,75med,&5medD 4 sendBqueryBfuente'>5 +&nstr3bj, ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; /his function is used to transmit queries to a remote instrument. ; Sparam &nstr3bj 3bject for remote instrument created by fuente'>5. ; Sreturn :entEuery :entEuery4 F, if query could not be transmitted. ; :entEuery 4 5, if query was sent successfully. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ function C:entEuery,75med,&5medD 4 sendBqueryBfuente'>5+&nstr3bj, :entEuery 4 F8 ; open connection and perform query try fopen+&nstr3bj,8 fprintf+&nstr3bj,673%/V 56,8 vout54fscanf+&nstr3bj,6;s6,8 75med4strAnum+vout5,8 ; 7outBneg medida e"presada en 7 fprintf+&nstr3bj,6&3%/V 56,8 iout54fscanf+&nstr3bj,6;s6,8 &5med4strAnum+iout5,@5eN8 ; &outBneg medida e"presada en m. fclose+&nstr3bj,8 catch disp+6>ould not open connection or write command. Qechec- the connection settings.6,8 end :entEuery 4 58
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *#
0a siguiente funci(n es completamente an!loga a la anterior, s(lo que est! dise*ada para que nos podamos comunicar la fuente de tensi(n positiva)
; function C:entEueryD 4 sendBqueryBfuente'>A +&nstr3bj, ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; /his function is used to transmit queries to a remote instrument. ; Sparam &nstr3bj 3bject for remote instrument created by fuente'>A. ; Sreturn :entEuery :entEuery4 F, if query could not be transmitted. ; :entEuery 4 5, if query was sent successfully. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ function C:entEuery,7Amed,&AmedD 4 sendBqueryBfuente'>A+&nstr3bj, :entEuery 4 F8 ; open connection and perform query try fopen+&nstr3bj,8 fprintf+&nstr3bj,673%/V A6,8 voutA4fscanf+&nstr3bj,6;s6,8 7Amed4strAnum+voutA,8 ; 7outBpos e"presada en 7 fprintf+&nstr3bj,6&3%/V A6,8 ioutA4fscanf+&nstr3bj,6;s6,8 &Amed4strAnum+ioutA,@5eN8 ; &outBpos medida e"presada en m. fclose+&nstr3bj,8 catch disp+6>ould not open connection or write command. Qechec- the connection settings.6,8 end :entEuery 4 58
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina **
>omo vemos, Matlab dispone de un grupo de comandos denominados de entradaWsalida que actan sobre ficheros y permiten abrir y cerrar ficheros, leer y escribir en ficheros, controlar la posici(n en un fichero y e"portar e importar datos. En concreto, los comandos que hemos usado se definen como) fclose) >ierra uno o m!s ficheros. fopen) .bre un fichero u obtiene informaci(n acerca de ficheros abiertos. fprintf) Escribe datos formateados en un fichero. fscanf) 0ee datos formateados de un fichero.
En concreto, hemos empleado los comandos fprintf y fscanf para mandar instrucciones a la fuente, que como sabemos son comandos de EntradaW:alida con formato. En primer lugar, hemos establecido la cone"i(n con el equipo mediante la llamada a la funci(n conect$fuente)C, donde a su vez hacemos una llamada a la funci(n build$%&'($obect$fuente! dentro de la cual empleamos la instrucci(n)
fuente = visa('agilent','GPIB0::5::0::INSTR');
Xa que, como se vio en el apartado A.O.A., con esta instrucci(n creamos el objeto visa que mediante el bus $&1, nos permite controlar el equipo. %na vez establecida la comunicaci(n mediante el bus $&1 entre el > y el equipo, abrimos un fichero con el que nos comunicaremos con la fuente, para ello usamos la funci(n fopen)
fopen(Inst!"#)
. partir de ese instante, ya podemos empezar a mandar las instrucciones mediante los comandos fprintf +para mandar las instrucciones, y fscanf +para leer la informaci(n que mandamos desde los dispositivos al >,. . modo de ejemplo)
fpintf(Inst!"#, '$S%T &, '()*f+n', ,tension-&);
or ltimo, es necesario cerrar el fichero para acabar la comunicaci(n con el equipo. fclose(InstrObj); Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina *+
.dem!s, hemos hecho uso de bifurcaciones mediante las sentencias *R+,C-*C.,/0)1 0a construcci(n tr2,catch,end nos permite gestionar los errores que se pueden producir en tiempo de ejecuci(n. :u forma es la siguiente) tr% sentencias " catch sentencias & end
En el caso de que durante la ejecuci(n del bloque de sentencias 1 se produzca un error, el control de la ejecuci(n se transfiere al bloque de sentencias 2. :i la ejecuci(n transcurriera normalmente, sentencias 2 no se ejecutar#a nunca.
/ambi2n, hemos empleado variables bandera para visualizar en la funci(n principal de llamada si el try se ejecuta correctamente en cada caso)
'ent(ommand = "; 'ent)uer% = ";
En caso contrario, permanecen a cero que es su valor de partida.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +,
4.4. 1spectos "enerales de la herramienta software implementada
En este apartado vamos a e"poner soluciones a las que se ha llegado para problemas puntuales que han ido surgiendo a lo largo del desarrollo del proyecto. :on detalles que pueden ser tiles para la realizaci(n de otra interfaz o para seguir trabajando sobre 2sta.
E"plicaremos c(mo se han implementado en Matlab una serie de opciones que le hemos ido a*adiendo a la interfaz que la hac#an m!s din!mica y m!s f!cil de usar.
4.4.1. I(/!)4%& &$#"*( *( 4( &%!(!
En la pantalla principal de la aplicaci(n nos aparecen una serie de botones que nos permiten acceder a las distintas opciones implementadas en la interfaz)
.justesW>onfiguraci(n $r!ficas temporales 1arrido $uardar resultados .pagar el programa 1otones de cargar datos de las tensiones de entrada 1otones ausarWQeanudar 1otones de 39W3LL para cada canal de la fuente 1ot(n 3LL
/odos los botones mencionados son del tipo ush button, e"cepto los botones de 39 para cada canal de la fuente que son del tipo >hec- bo" y los 1otones ausarWQeanudar que son del tipo /oogle button.
. su vez, si hacemos clic- en cada uno de estos botones del panel principal de la aplicaci(n veremos c(mo emergen nuevas ventanas con muchas m!s aplicaciones, pero todo esto ya lo abordaremos en el siguiente cap#tulo.
9uevamente destacamos las e"cepciones de los botones de 39 para cada canal de la fuente y de los 1otones ausarWQeanudar. 0os primeros activan cada canal de la fuente de tensi(n, siendo el canal 5 para la fuente de tensi(n negativa y el canal A para la fuente de tensi(n positiva, el activarWdesactivar cada canal implica varias salvedades que comentaremos en el apartado siguiente debido a la amplitud de aplicaciones que engloba. 0os segundos sirven para pausar y reanudar la Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +%
actividad de los gr!ficos que se visualizan en la misma pantalla principal en tiempo real y que muestran el comportamiento de cada canal de la fuente.
ues bien, no todos los botones de la pantalla principal tienen im!genes, muchos de ellos simplemente indican mediante te"to la aplicaci(n a la que se refieren. 3tros sin embargo, como en el caso de los botones)
$uardar resultados 1otones de cargar datos de las tensiones de entrada 1ot(n 3LL ausarWQeanudar 0eds de encendido y apagado de cada canal de la fuente
:# contienen im!genes intuitivas de su aplicaci(n. En estos casos, para poner la imagen en el bot(n, tenemos que tenerla cargada en la carpeta donde se encuentran todos los ficheros de la interfaz. El formato que se ha elegido para las im!genes es el Y$, por ser un est!ndar muy conocido, ocupa poco espacio y es de una calidad buena.
7eamos mediante un ejemplo c(mo hemos cargado las im!genes)
$ponemos a O** los leds b = imread('led+rojo".jpg'); 3se lee la imagen 2 se carga en "ariable imagen set(handles.botonoff",'(data',b); 3 carga la imagen en el elemento correspondiente de la intefa4
Esta misma filosof#a se ha seguido a lo largo de la realizaci(n de toda la interfaz, intentando poner una imagen en los botones que indiquen de forma visual lo que representan.
. su vez tambi2n podemos poner una imagen como fondo del panel principal de la interfaz de la siguiente manera)
a,es(handles.a,es") a = imread('tech".jpg'); image(a); a,is off;
En nuestro caso tambi2n hemos colocado im!genes en los a"es de los <displays=.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +'
4.4.2. BOTONES PERSONALI5ADOS
0a interfaz gr!fica de usuario de M./0.1 nos permite personalizar la presentaci(n de nuestros botones como lo muestra la figura siguiente.
ara lograr esto, procedemos como describ#amos en el apartado anterior.
ero, para personalizar an m!s, se puede hacer aparecer el nombre del bot(n cuando se acerca el cursor, simplemente llenando el campo *ooltipString en el &ropert2 'nspector.
7eamos esta curiosa propiedad mediante un ejemplo de nuestra interfaz.
or ejemplo, para el bot(n de apagado de los dos canales de la fuente de tensi(n, modificando correctamente en el &ropert2 'nspector:
'estacamos, que todos los botones de la interfaz gr!fica est!n personalizados, para hacer an m!s intuitivo el uso del programa creado al usuario. Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +-
4.4.3. V#+!*0 .! )*,*%/!
'ada la gran amplitud de aplicaciones con las que cuenta la herramienta software que hemos creado, debemos destacar que a la hora de realizar cualquier medida entre bornas de la fuente para un transistor o cualquier otro dispositivo electr(nico +adelantamos que en el cap#tulo T analizaremos en detalle varios casos de medida mediante el uso de este software,, al arrancar la interfaz creada, 2sta toma ciertos valores por defecto, valores que por supuesto hemos escogido pensando que para un primer contacto con la interfaz ser#an los m!s adecuados. 9o obstante la interfaz est! dise*ada de tal forma que permite al usuario de manera muy intuitiva cambiar estos valores si es necesario. /odo ello se ha dise*ado con el fin de facilitarle al usuario lo m!"imo posible su trabajo en el laboratorio en las posibles medidas u otras aplicaciones que desee realizar ayud!ndose de esta potente y ampliable herramienta software.
. continuaci(n, describiremos las partes de la interfaz donde entran en juego los valores por defecto. >omenzamos)
En el panel principal de la herramienta software que hemos creado contamos con un bot(n llamado) .justesW >onfiguraci(n que da paso a una nueva ventana +un nuevo $%&'E,, la cual se muestra a continuaci(n)
>omo puede verse, esta ventana nos da paso a escoger entre dos opciones)
7alores l#mite /iempo de refresco Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +4
4.4.3.1. V#+!*0 +6$&/*
:i seleccionamos el primer Radio (utton +7alores l#mite,, emerger! una nueva ventana +un nuevo $%&'E,)
0a cual nada m!s abrirse muestra los valores por defecto que le hemos asignado tanto al voltaje como a la intensidad, de manera que si queremos modificar dichos valores establecidos a priori, bastar! con que nos posicionemos en los cuadros de edici(n que nos convenga y una vez modificados los valores haremos clic en .ceptar. En ese momento el programa nos indicar! las especificaciones de los valores l#mite de la fuente mediante el siguiente mensaje)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +$
ara que podamos comprobar que efectivamente no sobrepasamos los valores l#mite del equipo. .n as#, tras esto el programa nos pedir! que nos reafirmemos y le aseguremos que queremos efectuar el cambio tal y como vemos)
9o obstante, si recordamos en la ventana de Establecer 7alores l#mite de tensi(n y corriente hab#a otro &ush (utton llamado Restablecer 5alores! el cual tal y como su propio nombre indica nos permite en cualquier otro momento volver a cambiar los valores de tensi(n y corriente)
4.4.3.2. T&*$.! )* *,*0%!
En el panel principal de control del software e"isten dos gr!ficos que se activan con los (otones de O0 +>hec- bo", para cada canal de la fuente. Estos dos gr!ficos muestran en tiempo real el comportamiento en tensi(n del dispositivo que se encuentre conectado en ese momento a la fuente de tensi(n. >ontamos un gr!fico para cada canal de la fuente, de forma que el usuario pueda visualizar en cualquier instante el consumo que se produce en el dispositivo que se est2 midiendo.
'e esta forma, decidimos a*adir a la interfaz gr!fica el concepto de tiempo de refresco. Mediante el tiempo de refresco, el programa actualiza cada 5F segundos todas las salidas de las que dispone, es decir, cada 5F segundos el programa lee del bus $&1 ambas salidas de la fuente +lee tanto el canal 5 como el canal A,, guardando en un buffer de memoria hasta G minutos del comportamiento del dispositivo que queramos estudiar, refrescando todas sus salidas cada 5F segundos. or supuesto, durante el transcurso de estos 5F minutos el usuario puede modificar las tensiones positivas y negativas que quiera aplicar al dispositivo electr(nico que decida medir, incluso puede variar el montaje, etc. ero toda la potencia de aplicaci(n que permite esto ya se ir! e"poniendo en los dos pr("imos cap#tulos.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +&
0o que m!s nos interesa saber del tiempo de refresco adem!s de lo ya comentado, es que los gr!ficos temporales de voltaje del panel principal se refrescan cada 5F segundos por defecto, es decir, cada 5F segundos, el programa lee del bus $&1 los nuevos valores de salida de tensi(n y corriente de ambos canales de la fuente o bien s(lo de uno de ellos, segn guste el usuario.
or tanto, durante el desarrollo de una medida puede resultarle bastante til al usuario ver estos cambios de lectura con m!s dinamismo y rapidez por diversos motivos +ya veremos en el cap#tulo T hasta qu2 punto nos benefici( el hecho de poder modificar la lectura de las salidas de la fuente positiva y negativa,.
ero, Zc(mo podemos variar el tiempo de refresco del programaV >omo el resto de aplicaciones desarrolladas, es muy sencillo. 7e!moslo, mediante un ejemplo)
5. ulsamos el bot(n de .justesW>onfiguraci(n de la pantalla principal del programa, entonces emerger! una nueva ventana +nuevo $%&'E,.
A. :eleccionamos el Radio (utton de /iempo de refresco en esta nueva ventana.
N. /ras esto, inmediatamente nos aparecer! en la pantalla el siguiente mensaje)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +#
>omo vemos, el propio software nos avisa de que el tiempo de refresco preestablecido es de 5F segundos, y nos da la opci(n de poder modificarlo o bien mantenerlo.
O. >onsideremos el caso en que queramos modificar el tiempo de refresco a A segundos, entonces pulsaremos S6 y nos aparecer! la siguiente ventana)
'onde como vemos, ya hemos introducido el nuevo valor de refresco deseado.
G. or ltimo, s(lo hace falta pulsar el 3[ y se modificar! esta opci(n en todo el software.
'estacar, que el usuario podr! modificar sin problemas el tiempo de refresco tantas veces como lo prefiera.
4.4.4. E7.+!#)! )* 8&()!30
%n objetivo que se ha tenido siempre presente en este trabajo era que el resultado deber#a ser algo f!cil de manejar y muy intuitivo. Qesulta interesante ver c(mo crear con Matlab un Browser o Explorador para distintas funciones que se realizan en la interfaz como pueden ser seleccionar una carpeta para guardar las medidas realizadas, o bien seleccionar una carpeta para cargar algn tipo de fichero como puede ser el de un barrido realizado anteriormente para generar gran multitud de gr!ficos.
0as instrucciones para generar un browser en Matlab son las siguientes)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina +*
Figura1. Browser de Windows
'e esta manera en la variable directorio se tiene la direcci(n que el usuario ha elegido siguiendo la ruta en el browser mediante el rat(n que resulta m!s c(modo.
4.$. Interfa2 de la fuente de tensin
En este apartado vamos a ver todos los conceptos que se han tenido en cuenta a la hora de programar la funcionalidad de la fuente de tensi(n. Ello implica que veremos tambi2n todos los problemas a los que tuvimos que enfrentarnos en el dise*o de algunas de las peculiaridades de la herramienta software y c(mo conseguimos darles una soluci(n lo m!s acorde posible a las necesidades que se nos plantearon. .simismo, comentaremos tambi2n las limitaciones del software y dejaremos abierta la posibilidad de subsanar dichas limitaciones en futuras investigaciones.
0a forma de mandar instrucciones al equipo es la misma que previamente se coment( en el cap#tulo A +ver apartado A.O.A,. ara ver las distintas instrucciones que se pueden mandar a la fuente nos remitimos al ane"o N y al apartado A.G del cap#tulo A.
4.9.1. P!"#$#%&'( )*+ *(%*()&)! : #.#"#)! )* +# ,4*(/* %n aspecto importante a controlar es el encendido y apagado de la fuente de tensi(n, porque se puede dar el caso de quedar encendida la fuente y conectar manualmente otro dispositivo Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina ++
que no acepte los valores cargados, da*!ndose por tanto el equipo. or tanto, veremos c(mo se ha intentado evitar esto.
En primer lugar, al iniciar la herramienta software, una de las primeras funciones que se ejecuta de forma autom!tica es el poner ambos canales de la fuente de tensi(n a \F] voltios, que es lo que entenderemos por apagar la fuente, ya que el apagado total se debe hacer de forma manual en el bot(n 39W3LL del propio equipo. Es decir, al iniciar la herramienta software mandamos \F] voltios a la fuente escribiendo en el bus $&1, mediante las llamadas a las funciones principales vistas en el apartado O.N de este mismo cap#tulo. .s#, para poner a cero la fuente de tensi(n basta con indicar)
fuente)C1(7# fuente)C8(7#
'e esta forma ya tenemos a cero tanto la fuente de tensi(n positiva como la negativa, con lo que consideramos ambas fuentes apagadas.
'ada la complejidad en el dise*o de nuestra herramienta, e"isten varias formas de apagar la fuente de tensi(n, las cuales desglosamos a continuaci(n)
5. Mediante el uso de los botones de 39W3LL para cada canal de la fuente)
'e esta forma, mediante el uso de ambos Check box podemos gestionar de forma independiente el encendido y apagado de cada canal de la fuente de tensi(n.
/al y como podemos ver en la siguiente figura basta con deseleccionar los botones para apagar elWlos canales que nos interesen.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,,
A. 1ot(n 3LL)
/al y como su propio nombre indica este bot(n nos permite apagar el equipo, m!s concretamente si hacemos clic sobre este bot(n apagamos los dos canales de la fuente de tensi(n, reseteando todos los valores de las variables le#das del quipo mediante el bus $&1.
.dem!s de producirse un apagado del equipo +entendiendo por apagado del equipo el poner a \F] voltios ambos canales de la fuente de tensi(n, y un reset de todas las variables le#das de la fuente, tambi2n se produce un cambio en la apariencia f#sica de la interfaz, ya que este bot(n produce un 3LL autom!tico de ambos displays de la interfaz as# como de los cuadros de edici(n y una puesta en rojo de ambos leds.
N. Mediante el bot(n de .pagar el rograma)
>omo se intuye al pulsar este bot(n se cierra el programa completamente +muy similar al apagado del propio Windows,.
>errar el programa significa entre otras cosas el apagado completo del equipo conectado al > y, por supuesto de toda la interfaz software.
reviamente a la cone"i(n de cualquier dispositivo e"terno a la fuente sobre el que queramos realizar una medida, hemos de establecer los valores l#mites tal y como se e"puso en el apartado O.O.N.5. .hora bien, la fuente de alimentaci(n posee sus propios valores de tensi(n l#mites, los cuales vienen dados por el propio fabricante del equipo, por tanto, hemos de trabajar siempre respetando el m!"imo y el m#nimo valor de tensi(n que admite la fuente de alimentaci(n.
>omo la fuente de alimentaci(n con la que estamos trabajando posee dos canales, los cuales hemos destinado a la programaci(n de dos fuentes de alimentaci(n, una positiva y otra negativa, tendremos que controlar los valores que introduzca el usuario en ambos casos.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,%
.s#, hemos dise*ado el software de tal forma que si el usuario introduce cualquier valor de tensi(n positiva o negativa que sobrepase los l#mites superior e inferior dados por el fabricante del equipo, nuestro software genera un EQQ3Q, de manera que el valor de tensi(n introducido por el usuario en la interfaz no es enviado a la fuente de tensi(n a trav2s del bus $&1.
ara una mayor claridad, veamos un diagrama de flujo que nos resume c(mo se gestiona el chequeo de los valores de tensi(n de entrada en la interfaz para el caso de la fuente de tensi(n negativa +el caso de la fuente de tensi(n positiva es an!logo,)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,'
rimero, ponemos la fuente a F7 en los casos en los que el valor de tensi(n que ha introducido el usuario no sea correcto. ara notific!rselo al usuario, en la casilla donde introdujo el valor de tensi(n de entrada aparece un mensaje que pone /RROR. >on lo que el usuario deber#a de introducir un valor correcto de tensi(n antes de continuar con la medida.
El diagrama de flujo se corresponde con el canal 5 del equipo +fuente de tensi(n negativa,, por tanto, comprobamos que se cumple ^75medH7minBneg y hacemos otras comprobaciones. >omo coment!bamos el diagrama de la fuente A es similar pero teniendo en cuenta que se le e"igen valores positivos +7inBposMF, y las comprobaciones se har!n con 7Amed. .
'e igual manera, la protecci(n en corriente es una opci(n que tiene la fuente de tensi(n que hace que si el valor de corriente supera al que tiene establecido la protecci(n de corriente, se pone la fuente a F, de tal manera que se evita da*ar el dispositivo. 0a protecci(n en corriente se aplica cada vez que se emplea el software ya que hemos tenido en cuenta esta opci(n en el dise*o de la herramienta.
4.&. 3ispla/s
0a herramienta software que hemos dise*ado dota al cuadro de mandos de control de la fuente de dos displays o gr!ficos temporales que representan en todo instante el valor le#do de la fuente de tensi(n.
0a interfaz goza de dos displays, uno para cada canal de la fuente, asegurando por tanto al usuario un gran dominio sobre la lectura de la medida que est2 realizando en el laboratorio.
>ada display tiene asociado un bot(n de ausarWQeanudar implementado mediante un toogle button, adem!s del propio bot(n de iniciar el funcionamiento de la fuente +el chec- bo" de 39W3LL de cada canal,.
4.=.1. F4(%&!(#$&*(/! )* +!0 )&0.+#:0
>ada uno de los displays se activa al hacer clic en el bot(n 39 de la fuente correspondiente. :u uso es muy intuitivo, tan s(lo tienen algn matiz que detallaremos a continuaci(n. .n as#, la propia interfaz siempre le indica al usuario c(mo actuar. 7e!moslo con detalle) Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,-
Figura 2. Cuadro de mandos principal
>ada uno de los displays arranca nada m!s hacer clic en el bot(n 39 del canal de la fuente que desee activar el usuario. . partir de ese instante, los displays aparecen activos en los cuadros de edici(n correspondientes al canal seleccionado y por supuesto, el display muestra un valor constante de \F] voltios frente al tiempo en todo momento ya que como sabemos al arrancar el software se pone a \F] voltios el equipo, como ya se vi( en el apartado O.G.5.
>ada display, se refresca cada 5F segundos por defecto +a menos que el usuario lo modifique,, por tanto, el programa lee el valor de tensi(n correspondiente a cada uno de los canales de la fuente para poder mostrarlo por pantalla.
En la siguiente figura podemos ver el comportamiento que acabamos de describir)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,4
ara el dise*o de los displays hemos hecho uso de a"es y no de figures. 7eamos el porqu2. >uando nos enfrentamos al dise*o de los displays, partimos de la idea de que quer#amos implementar unos gr!ficos temporales asociados a cada canal de la fuente, los cuales fuesen capaces de representar en todo instante de tiempo el valor de tensi(n le#do a trav2s del bus $&1 para cada caso, es decir, quer#amos que nada m!s hacer clic en el bot(n de 39 de cada canal de la fuente, ya fuese la de tensi(n positiva yWo negativa, pudi2semos ver el comportamiento temporal de la tensi(n de forma independiente para cada canal mediante el uso de dos gr!ficos distintos y, que por supuesto al apagarse cada uno de los canales de la fuente tambi2n se apagasen los displays.
ues bien, ha sido todo un reto el implementar estos displays en el $%&'E principal de nuestra herramienta software, ya que para generar un gr!fico temporal de estas caracter#sticas Matlab ya posee :&M%0&9[.
'e hecho investigamos si ser#a factible el importar datos desde nuestra herramienta software a :imulin-, tambi2n intentamos el uso de simulin- desde matlab con la creaci(n de modelos +sistemas,, etc8 pero fue imposible de implementar de esta forma, ya que opt!semos por una opci(n u otra no consegu#amos hacer el uso del display transparente al usuario que era una de las premisas de las que part#amos. Era demasiado engorroso tener que abrir esta herramienta de Matlab aparte de nuestro propio software, el tener a ambos abiertos en pantalla e intercomunic!ndose entre s# era inviable. Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,$
9osotros quer#amos que esta herramienta ayudase al m!"imo al usuario en su trabajo en el laboratorio, facilit!ndole todo lo posible su labor y no complic!ndosela aun m!s. or ello, durante el dise*o de estos gr!ficos tambi2n descartamos totalmente el uso de figures, ya que las caracter#sticas de un figure no permiten en absoluto la implementaci(n que dese!bamos, dado que s(lo admiten representaciones est!ticas de una funci(n. or tanto, la nica opci(n viable era usar un a"es.
ero, la toma de esta decisi(n, r!pidamente nos condujo a numerosas complicaciones, porque el hecho de poner no uno, sino dos a"es en el cuadro de mandos principal funcionando a la vez implicaba innumerables problemas de ejecuci(n del software. >itaremos algunos de ellos)
5. En primer lugar, si recordamos la jerarqu#a de objetos gr!ficos de Matlab e"puesta en el cap#tulo N, podemos ver que tanto los controles +botones,, los ejes +a"es, y los mens est!n al mismo nivel jer!rquico, es decir, todos tienen la misma prioridad durante la ejecuci(n de un programa incluido por supuesto en una misma ventana, y 2ste por supuesto, era nuestro caso. /en#amos dentro de una misma ventana m!s de una decena de controles y adem!s pusimos dos ejes, que ten#an que empezar a ejecutarse como resultado de una invocaci(n realizada desde uno de estos controles y, adicionalmente ten#a que permitir tambi2n que el usuario pudiese invocar cualquier otro de los controles que ten#amos implementados en nuestro cuadro de mandos principal. /odo un reto, que pudimos solucionar.
Figura 3. Jerarqua de objetos gricos de !atlab
A. Euer#amos tener ambos a"es interactuando a la vez. Esto fue imposible de solventar del todo, pero an as# el resultado obtenido ha sido muy bueno.
7amos a ver las soluciones a las que llegamos y c(mo lo hicimos viable)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,&
'ada la gran cantidad de problemas a los que nos enfrent!bamos sin obtener buenos resultados, al principio, nos planteamos incluso el generar dos nuevos $%&'E: a partir del cuadro de mandos principal, para que as# jer!rquicamente los dos nuevos a"es fuesen objetos hijos de algn objeto padre del cuadro de mandos principal y no interfiriesen a los controles del mismo. ero esta idea no era la soluci(n (ptima debido a que implicaba que el usuario tendr#a que tener tres $%&'E: +ventanas, a la vez abiertos cada vez que decidiese ejecutar el programa.
Linalmente, tras numerosas investigaciones se nos ocurri( una idea novedosa que permit#a al usuario un uso totalmente transparente de la aplicaci(n dise*ada, minimiz!ndole las molestias y permiti2ndole aprovechar al m!"imo todo el potencial del software dise*ado.
0a gran respuesta al problema fue el uso de muchas variables globales, ya que como sabemos una variable definida como global en el interior de una funci(n es accesible separadamente para el resto de las funciones y para el espacio de trabajo base l#nea de comandos. :i la variable global no e"iste, la primera vez que se define en la sentencia $031.0, se inicializar! como la matriz vac#a. :i ya e"iste una variable con el mismo nombre que la que se est! definiendo como global, M./0.1 emite un mensaje de peligro y cambia el valor de la variable a enlazar como global.
9o obstante, para evitar errores en la ejecuci(n de un software tan complicado como el nuestro siempre se recomienda el no usar variables globales. ero, dado que no ten#amos otra alternativa hemos optado por usar estas variables.
ara prevenir errores adicionales de ejecuci(n, hemos hecho que todos los controles del cuadro de mandos principal que pod#an interferir con la ejecuci(n de los displays, puedan ver las variables globales.
0as nicas funciones del cuadro de mandos principal que son capaces de modificar los valores de las variables globales que se han empleado son las siguientes)
.ctivarBfteBposB>allbac- +asociada al bot(n 39 de la fuente positiva, .ctivarBfteBnegB>allbac- +asociada al bot(n 39 de la fuente negativa, auseBplayBposB>allbac- +asociada al bot(n ausarWreanudar de la fuente positiva, auseBplayBnegB>allbac- +asociada al bot(n ausarWreanudar de la fuente negativa, :alirB>allbac- +asociada al bot(n 3LL,
.s#, en el interior de la funci(n .ctivarBfteBposB>allbac-, al comienzo de dicha funci(n, tenemos definidas)
global .ctivarBfteBpos .ctivarBfteBpos458 global parada Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,#
parada458 global fteBpos global fteBneg fteBneg458
Mientras, que al final de la misma funci(n tenemos)
.ctivarBfteBpos4F8 fteBneg4F8
.n!logamente, en el interior de la funci(n .ctivarBfteBneg en su comienzo, tenemos)
global .ctivarBfteBneg .ctivarBfteBneg458 global fteBpos fteBpos458 global fteBneg global detener detener458
X al final de esta funci(n tenemos)
global .ctivarBfteBneg .ctivarBfteBneg4F8 fteBpos4F8
>omo se puede intuir, lo que hemos hecho es usar estas variables como variables bandera, para que no se interfieran los controles con los ejes. En el resto de las funciones nos encontramos c(digos similares donde cambiamos los valores de las variables globales bandera que nos interesen o simplemente los cargamos nicamente con el prete"to de leer si dichas variables est!n activas o no, para saber qu2 parte del c(digo de la funci(n en cuesti(n debemos ejecutar.
4.=.2. B!/'( P#40#>R*#(4)#
>(mo ya se coment( en apartados anteriores se trata de un toogle button! con la siguiente apariencia f#sica)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,*
'ecidimos poner un toogle button para ahorrarnos el poner dos push button! ya que necesit!bamos un bot(n que nos permitiese parar el funcionamiento del display y otro que nos permitiese reanudar su funcionamiento, independientemente de que el Wlos canales de la fuente se encontrasen activos, ya que si un canal de la fuente se encuentra activo significa que se est!n leyendo los valores de salida del equipo cada t segundos1
El nico problema que no ha podido solucionarse al desarrollar la herramienta software es tener a ambos displays refresc!ndose a la vez, cuando se encuentren activos ambos canales de la fuente de alimentaci(n. Es decir, cuando el usuario activa un canal de la fuente de alimentaci(n +por ejemplo, la fuente de tensi(n positiva,, inmediatamente empieza a funcionar el display asociado a dicho canal, pero si en ese mismo momento, el usuario decide activar tambi2n el otro canal de la fuente +por ejemplo, la fuente de tensi(n negativa,, porque desee por ejemplo ver el comportamiento de un transistor en concreto, pues no podr! tener a ambos displays refresc!ndose a la vez en el cuadro de mandos principal, debido a la jerarqu#a de objetos gr!ficos de Matlab, donde tendr! prioridad el display correspondiente al ltimo canal de la fuente que haya sido activado por el usuario. 'ado que el usuario puede no recordar esta premisa cuando se ponga a medir cualquier dispositivo en el laboratorio o incluso desconocerla, hemos dotado al software de unos avisos que emergen en pantalla cuando sea necesario. .s#, si por ejemplo el usuario activa primero el canal positivo y luego activa el canal negativo, visualizar! en pantalla el siguiente aviso)
>omo podemos ver, el aviso es muy claro, si el usuario quiere volver a ver en tiempo real c(mo var#a la tensi(n positiva debe pausar el ltimo display activado, que en este caso se corresponde con la fuente negativa, es decir, tendr#a que pausar el display negativo. .hora bien, si el usuario, por el contrario lo que quiere es dejar de ver el comportamiento en tiempo real de la fuente Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %,+
de tensi(n positiva y pasar a observar en pantalla principal el comportamiento de la fuente de tensi(n negativa, entonces tendr#a que pausar el display de la positiva +o incluso no hacer nada, ya que el ltimo display que empieza a funcionar es el que posee la prioridad de ejecuci(n,.
7eamos c(mo ser#a la apariencia del cuadro de mandos principal en el instante en que estando la fuente positiva ya activa, el usuario introduce un valor de tensi(n negativo, activando el segundo canal de la fuente +y, por tanto, el display negativo,)
.n!logamente, en el caso en que estuviese activa la fuente de tensi(n negativa y el usuario decidiese introducir un valor de tensi(n positivo en el otro canal de la fuente de alimentaci(n emerger#a el siguiente aviso)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%,
Es decir, a partir de ese instante el usuario s(lo puede ver el comportamiento en tiempo real de la tensi(n positiva frente al tiempo +por ser el ltimo canal en activarse el positivo,. :i el usuario desea volver a ver en tiempo real c(mo cambia el comportamiento de la tensi(n negativa frente al tiempo, tendr! que pausar el display positivo, o bien, si desea continuar viendo c(mo var#a el comportamiento de la fuente de tensi(n positiva, deber#a de pausar el display de la fuente de tensi(n negativa para evitar errores de ejecuci(n.
.hora vemos la importancia del bot(n ausarWQeanudar, ya que nos permite .ctivarW'esactivar en cualquier momento el display que deseemos o incluso desactivar ambos displays, ya que queramos o no los displays empiezan a correr nada m!s activar cualquier canal de la fuente de alimentaci(n.
Qecordemos adem!s, que los displays deben ayudar al usuario en su labor en el laboratorio y no complic!rsela an m!s. X, el software que hemos dise*ado, aunque los displays est2n pausados, no deja de leer valores de salida continuamente de la fuente de alimentaci(n a trav2s del bus $&1, ya que hemos dotado al programa de un gran potencial de representaci(n gr!fica. .s#, desde que se activan los canales de la fuente se empiezan a almacenar todos los valores de salida le#dos desde la fuente de alimentaci(n en unos buffers de memoria que posteriormente podemos Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%%
jugar a visualizar frente al tiempo, haciendo clic sobre el bot(n de gr!ficas temporales. Qealizar distintos barridos, etc.
Es m!s, aunque el usuario no haga uso de ningn tipo de representaci(n gr!fica, puede ser consciente en tiempo real de lo que est! ocurriendo durante la medici(n, gracias a los cuadros de edici(n de lectura de medidas en tiempo real de cada una de las variables de salida, los cuales se activan tambi2n autom!ticamente al hacer clic en los botones de 39 de cada canal y s(lo se desactivan si apagamos el propio canal de la fuente.
'ebemos destacar tambi2n, que el bot(n de pausar los displays es muy til cuando queremos hacer por ejemplo, un 1arrido. Xa que por las prioridades en la jerarqu#a de objetos de Matlab, sabemos que ambos est!n al mismo nivel y, si no pausamos elWlos displayWs que se encuentren activoWs en ese momento y hacemos clic en el bot(n de 1arrido directamente, cada vez que elWlos displayWs se refresquen, emerger! en pantalla el cuadro de mandos principal mostrando los nuevos valores de los displays y esto puede resultar muy inc(modo. .dem!s, si estamos en pleno uso de cualquier otro control del cuadro de mandos principal +los cuales suelen llevarnos al uso de otras ventanas que emergen a partir de ellos,, ni siquiera en esos instantes nos resulta til Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%'
ver los displays, por ello, lo mejor que podemos hacer es pausarlos moment!neamente hasta que nos vuelvan a resultar tiles.
4.#. 4r!ficas temporales
%na vez tenemos suficientes resultados de la medida almacenados en los buffers, puede resultar muy til visualizar el comportamiento del dispositivo medido frente al tiempo para entender bien su funcionamiento, de ah# la importancia de la opci(n de mostrar gr!ficas temporales. ara acceder a esta opci(n basta con hacer clic en el siguiente bot(n)
Este bot(n es del tipo push button y es accesible desde el cuadro de mandos principal de nuestro programa. ara dibujar las gr!ficas temporales hemos usado la representaci(n est!ndar de Matlab, dibuj!ndolas en una ventana <figure=. >oncretamente, hemos aprovechado una misma ventana, para visualizar cuatro gr!ficos temporales a la vez, mediante el comando subplot)
subplot(m,n,p)) )i"ide la "entana gr9fica en mxn sub"entanas 2 coloca el gr9fico corriente en la "entana p-:sima! empe4ando a contar por la parte superior i4quierda 2 de i4quierda a derecha hasta acabar la l6nea! para pasar a la siguiente1
.s#, conseguimos visualizar todos los gr!ficos temporales en una misma ventana, lo cual, nos proporciona m!s orden gr!fico y agilidad a la hora de usar el software. 'e esta forma, si por ejemplo, s(lo tenemos activa la fuente positiva s(lo visualizaremos las variables de salida procedentes de este canal y tendremos todas las variables de salida asociadas a la fuente negativa a cero.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%-
. continuaci(n, detallamos cu!les son las variables que podemos visualizar frente al tiempo al pulsar el bot(n de %r9ficas temporales)
/ensi(n positiva frente al tiempo /ensi(n negativa frente al tiempo &ntensidad positiva frente al tiempo &ntensidad negativa frente al tiempo
X mostramos un ejemplo en el que s(lo se encontraba activa la fuente positiva, por ello, tan s(lo vemos el comportamiento temporal de la tensi(n y corriente positiva, mientras que las salidas de la fuente negativa permanecen a cero)
0a ventaja de crear una figura de Matlab para dibujar las gr!ficas es que podemos tratar lo que nos dibuja, podemos cambiar su color, ponerle leyenda, cambiar l#mites de los ejes, etc.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%4
4.A.1. F4(%&!(#$&*(/!
El uso de esta opci(n del panel principal es bastante intuitivo como el resto del programa, pero an as# comentaremos un par de aspectos importantes.
>omo indic!bamos anteriormente, basta con hacer clic en el bot(n %r9ficas temporales para que nos aparezca en pantalla el siguiente aviso)
1asta con pulsar 3[ e inmediatamente despu2s nos aparece en pantalla una ventana con la siguiente apariencia f#sica)
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%$
Esta ventana, nos e"ige que introduzcamos los l#mites temporales entre los que deseamos visualizar las cuatro gr!ficas de salida que nos puede mostrar la herramienta software. 'ebemos tener cuidado, al introducir los tiempos, ya que como m!"imo los buffers del software que hemos dise*ado pueden albergar informaci(n de salida de hasta cinco minutos. 'e esta forma, tenemos un l#mite temporal de cinco minutos para almacenar el resultado del comportamiento del dispositivo medido en el laboratorio. :i el usuario quisiera ver m!s de cinco minutos de comportamiento, el gr!fico mostrar#a valores nulos frente al tiempo una vez sobrepasados los cinco minutos. El usuario por tanto puede visualizar gr!ficamente cualquier margen temporal entre cero y cinco minutos, los valores temporales se introducen en segundos. %na vez introducidos los l#mites temporales entre los que se desean visualizar los gr!ficos, hacemos clic en el bot(n Cargar )atos, el cual se muestra a continuaci(n)
>omo podemos ver nada m!s posicionarnos sobre el bot(n, podemos ver un mensaje que nos indica para qu2 sirve dicho bot(n tal y como se e"plic( en la secci(n O.O.A de este mismo cap#tulo. ues bien, nada m!s pulsar este bot(n emerge la ventana que contiene todos los gr!ficos temporales que es capaz de mostrar esta herramienta.
Captulo 4..................Implementacin de la herramienta software
M Espaa Borrero Serrano !"ina %%&
4.*. 3ia"rama de flu5o de los principales pro"ramas utili2ados
En este ltimo apartado del cuarto cap#tulo presentamos un diagrama de flujo a modo resumen de los ficheros que se utilizan a partir del panel principal del programa, para ver de forma m!s gr!fica el funcionamiento interno del mismo y poder entenderlo mejor, en caso de emplear como base este software en futuras l#neas de investigaci(n.