Está en la página 1de 42

Captulo 4..................

Implementacin de la herramienta software



M Espaa Borrero Serrano !"ina #$


CAPTULO 4

4.%. Introduccin

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

M Espaa Borrero Serrano !"ina *%

function C7Amed, &AmedD4fuente'>A+7inBpos,
; build $&1 object
C:tatus>onnect,fuenteD 4 connectBfuente'>+6$&16,8
; >anal A, conseguimos tensiones positivas
C:ent>ommandD 4 sendBcommandBfuente'>A+fuente,7inBpos,8
C:entEuery,7Amed,&AmedD 4 sendBqueryBfuente'>A+fuente,8
delete+fuente,
clear fuente

. 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

M Espaa Borrero Serrano !"ina *4

fuente.3utput1uffer:ize 4 5FFFFFFF8
fuente.&nput1uffer:ize4RFFF8
:tatus>onnect 4 58

'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

M Espaa Borrero Serrano !"ina *&

fprintf(InstrObj,'VOU! "');
#out"=fscanf(InstrObj,'$s');

; 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:





3btenemos, nuestro bot(n perfectamente personalizado)



'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)

director%name = uigetdir('c-./01023p4.5or6');
handles.directorio=director%name;
guidata(hObject,handles)


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.



4.9.1.1. O.%&!(*0 0!,/3#* .## *+ #.#"#)! )*+ *;4&.!

'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.



4.9.2. C-*;4*! )* +!0 <#+!*0 &(/!)4%&)!0 *( +# ,4*(/*

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

4.=.3. C'$! #%/?#( +!0 )&0.+#:0 0& *0/@( #%/&<!0 #$1!0
%#(#+*0 )* +# ,4*(/*

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.

También podría gustarte