PR´ACTICA 7. BUS GPIB: CONTROL REMOTO DE EQUIPOS DE

Anuncio
PRÁCTICA 7. BUS GPIB: CONTROL REMOTO
DE EQUIPOS DE INSTRUMENTACIÓN
1
Objetivo.
En esta práctica se va a analizar la posibilidad de trabajar con instrumentación de laboratorio en modo remoto, controlando a los equipos
desde un PC. Para ello, se va a estudiar el protocolo GPIB (Global Purpose Interface Bus) y se va diseñar un programa en Visual Basic para
controlar, mediante una tarjeta GPIB un osciloscopio Philips PM3375.
Posteriormente se visualizará el protocolo GPIB observando, mediante
el analizador lógico Tektronix–1230, la comunicación que se establece
entre la tarjeta GPIB y el osciloscopio.
2
Introducción.
En este apartado se describen, someramente, el funcionamiento del
protocolo GPIB, los comandos básicos soportados por el osciloscopio y
la programación en Visual Basic con los que se va a trabajar.
2.1 Protocolo GPIB
2.1.1 Introducción al protocolo GPIB
El estándar de ANSI/IEEE 488, también conocido como GPIB, describe
un interfaz estándar de comunicaciones entre instrumentos y controladores de distintos fabricantes. Contiene información acerca de especificaciones eléctricas, mecánicas y funcionales. GPIB es una interfaz de
comunicaciones de 8 bits en paralelo con tasas binarias de un 1 Mbyte
y superiores. El bus soporta un Sistema Controlador, generalmente un
ordenador, y hasta 14 instrumentos conectados a él.
1
2.1.2 Talkers, Listeners y Controllers
Los dispositivos GPIB pueden ser “talkers” (dispositivos que hablan),
“listeners” (dispositivos que escuchan) o “controllers” (dispositivos controladores del bus). Un Talker es un dispositivo capaz de enviar mensajes de datos por el bus GPIB, el Listener es el dispositivo capaz de
recibir los mensajes de datos que circulan por el bus GPIB y el Controller es el dispositivo que gestiona el flujo de información por el bus,
define los enlaces de comunicación y envı́a comandos GPIB a los dispositivos.
Algunos dispositivos pueden ser Listener y Talker a la vez. Una tarjeta
de control GPIB (como las comerciales que existen) permiten al PC funcionar como Listener, Talker o Controller en el bus GPIB. En el caso de
haber varios Controllers conectados al mismo bus GPIB, sólo uno podrá
ser el CIC (Controller In Charge) o controlador a cargo de la gestión del
bus.
2.1.3 Direccionamiento GPIB
A cada dispositivo GPIB debe asignársele una dirección exclusiva dentro del bus GPIB. Las direcciones GPIB constan de dos partes, una
dirección primaria (DP) y una dirección secundaria (DS).
DP debe ser un número entero comprendido entre 0 y 30. El Controller usa esta dirección para seleccionar a un dispositivo conectado
al bus GPIB en modo “talker” o “listener”. La activación de un dispositivo conectado al bus GPIB en modo talker se hece activando el bit 6
(TA:Talk Active) de un byte de control que incluya (bits 0 al 4) la dirección GPIB del dispositivo. La activación de un dispositivo conectado
al bus GPIB en modo listener se forma activando el bit 5 (LA:Listen
Active) de un byte de control que incluya (bits 0 al 4) la dirección GPIB
del dispositivo:
Bit 7: 0
Bit 6: TA
Bit 5: LA
Bits 0-4: Dirección primaria del dispositivo GPIB (0-30)
2
2.1.4 Mensajes GPIB
Los dispositivos conectados al bus, se comunican enviándose mensajes.
Para ello se dispone de un cable con 16 lı́neas de señal y 8 de tierra.
Las lı́neas de señal se agrupan en:
1. 8 lı́neas de datos. Se nombran DIO1 a DIO8 y se utilizan en la
transferencia de datos o comandos.
2. 3 lı́neas de control que implementan un protocolo de acuse de
recibo (HANDSHAKE) para la gestión de la transferencia ası́ncrona
de los datos o comandos. Este protocolo garantiza la transmisión,
sin error, de los mensajes entre dispositivos:
NRFD. Not Ready For Data. Señal impuesta por el listener.
Indica cuando el dispositivo está listo para recibir nuevos
datos.
NDAC. Not Data ACcepted. Señal impuesta por el listener.
Indica cuando el dispositivo ha recibido un dato transmitido.
DAV: DAta Valid. Señal impuesta por el talker. Sirve para
indicar cuando se ha impuesto un dato válido en las lı́neas
DIO1 a DIO8.
3. 5 lı́neas de control del flujo de información por el bus: ATN, IFC,
REN (que son enviadas, exclusivamente, por el controller), SRQ y
EOI.
ATN: ATteNtion. Cuando vale 1, el controller indica que se
están enviando comandos y, cuando vale 0, que se están enviando datos.
IFC: InterFace Clear. Sirve para inicializar el bus. El dispositivo que genera esta señal se pone como CIC.
REN: Remote ENable. Poner a los dispositivos en modo local
o remoto.
SRQ: Service ReQuest. Cualquier dispositivo la activa para,
de forma ası́ncrona, solicitar servicios del Controller.
EOI: End Or Identify. El Talker la utiliza para señalar el
final del mensaje. Cuando la usa el Controlador es para hacer
un sondeo paralelo (solicitando identificaciones).
3
2.2 Comandos básicos para el manejo GPIB del Osciloscopio PM3375
El estándar GPIB define una serie de comandos básicos que deben ser
soportados por TODOS los dispositivos que se conecten mediante esta
norma. Además de éstos, algunos dispositivos pueden, también, tener
algunos comandos especiales soportados. A modo de ejemplo, un osciloscopio puede tener funciones referentes a la representación bidimensional (pantalla del osciloscopio) que puede no tener un generador de
onda.
En este punto hay que decir que existe una diferencia entre los comandos que mandamos desde el programa de usuario (Visual Basic) a la
tarjeta del PC y los comandos que la tarjeta GPIB manda a través del
bus GPIB. En este apartado estudiamos únicamente los comandos que
circularán por el bus GPIB. Estos comandos los manda el Controller,
que también recibirá las respuestas (en forma de mensajes) por parte
de los dispositivos implicados (osciloscopio). En el apartado siguiente,
referente a Visual Basic, haremos referencia a cómo ordenar a la tarjeta (Controller) que envı́e los comandos al dispositivo (osciloscopio).
Para comunicarse el controlador con el osciloscopio (u otro dispositivo)
o en el otro sentido, se utiliza lo que se denomina “Message Record”
(MR). El MR es una agrupación de “Message Units” (MU). Cada MU
consta de Cabecera y de Cuerpo. Los MU pueden ir agrupados en el
MR (separados entre sı́ por “separadores”).
Aquı́ se muestran algunas de las funciones más comunes del protocolo
NI-488. La lista completa de las funciones se muestra en las fotocopias
anexas a esta memoria:
1. Funciones a nivel de DISPOSITIVOS:
ibclr. Resetea un dispositivo especı́fico.
ibdev. Abre e inicializa un dispositivo.
ibloc. Pasa a modo local.
ibwait. Espera a eventos GPIB.
ibwrt. Escribe datos en un dispositivo desde el buffer de
usuario.
2. Funciones a nivel de TARJETAS.
4
ibcac. Pasa a Controler activo.
ibcmd. Manda comandos GPIB.
ibfind. Abre e inicializa una tarjeta GPIB
ibloc. Pasa a modo local.
ibpad. Cambia la dirección primaria.
ibrd. Lee datos de un dispositivo a un buffer de usuario.
ibwait. Espera a eventos GPIB.
ibwrt. Escribe datos en un dispositivo desde el buffer de
usuario.
Para dar órdenes al osciloscopio utilizaremos la Función ibwrt (escribir
datos en un dispositivo).
En la figura 1 se anticipa un diagrama en el que se representa la jerarquı́a de funciones que se explica a continuación.
Figure 1: Árbol de funciones del osciloscopio.
Las órdenes que pueden darse al osciloscopio Philips se agrupan en dos
“Super-Funciones” (SF): FRO y REG.
1. FRO: Hace referencia al panel frontal del osciloscopio.
FRO ?. Solicita activar el frontal. Respuestas: FRO 0 ó REG
X.
5
FRO 0. Seleciona el panel frontal.
FRO OFF. De-selecciona el frontal (=REG 0).
2. REG: Hace referencia a los registros del osciloscopio.
REG ?. Solicita activar el frontal. Respuestas: FRO 0 ó REG
X.
REG X. Seleciona el registro (0, 1, 2, 3).
REG OFF. De-selecciona el modo de registro (=FRO 0).
Cada una de estas dos SF tiene definidas una serie de “FuncionesPrincipales” (FP):
1. Para FRO:
VER: Relacionada con el selector vertical (i.e. voltios/división).
HOR: Relacionada con el selector horizontal (i.e. tiempo/división).
MSC: Funciones varias del panel frontal.
SPL: Funciones especiales. Relacionadas principalmente con
el funcionamiento en modo digital del osciloscopio (cursores,
. . . ).
2. Para REG:
VER: Relacionada con el registro del selector vertical (i.e.
voltios/división).
HOR: Relacionada con el registro del selector horizontal (i.e.
tiempo/división).
MSC: Funciones varias para registros del panel frontal.
SPL: Funciones especiales. Relacionadas principalmente con
el funcionamiento en modo digital del osciloscopio (cursores,
. . . ) accediendo a los registros.
A su vez, las FP tienen sus opciones, denominadas “Funciones-Bajas”
(FB). Aquı́ se van a exponer algunas como ejemplo. La lista completa
de las SF, FP y FB, con sus argumentos y opciones, se detallan en las
fotocopias adjuntas.
6
1. Funciones-Bajas de la FP-VER:
ATT: Selecciona la sensibilidad de entrada (2mV/div, . . . 10v/div).
CPL: Indica si el canal está acoplado en DC ó AC.
2. Funciones-Bajas de la FP-HOR:
TIM: Selecciona la base de tiempos (20nS/div, . . . 50s/div).
SET: Función de AUTOSET (botón verde del osciloscopio).
TRG: Función para el control del trigger.
TSL: Flanco de subida o bajada del trigger.
3. Funciones-Bajas de la FP-MSC:
SET: Función de AUTOSET (botón verde del osciloscopio).
MEM: Almacenamiento digital.
LCK: Bloqueo de la memoria principal.
XPOS: Función para la posición del comienzo de la representación en el eje X.
Ejemplo: Ordenarle al osciloscopio que realize el trigger con el flanco
de subida. Para ello será necesario enviar un mensaje ibwrt. Los
parámetros deben incluir una SF, una FP y una FB, todas con los argumentos adecuados. En conclusión, se enviará el mensaje: ibwrt(dirGPIBoscil,
“FRO 0, HOR MTB, TSL POS,”). Como se puede observar en este ejemplo, para llegar hasta un comando es necesario recorrer el árbol completo de la jerarquı́a: SUPER-FUNCIÓN (FRO), FUNCIÓN-PRINCIPAL
(HOR) y, finalmente, FUNCIÓN-BAJA (TSL).
2.3 Visual Basic
2.3.1 Introducción a Visual Basic
La palabra “Visual” hace referencia al método que se utiliza para crear
la interfaz gráfica de usuario (GUI). En lugar de escribir numerosas
lı́neas de código para describir la apariencia y la ubicación de los elementos de la interfaz, simplemente se puede arrastrar y colocar objetos
7
prefabricados en su lugar dentro de la pantalla. Si se ha utilizado alguna vez un programa de dibujo como Paint, ya se tienen la mayor
parte de las habilidades necesarias para crear una interfaz de usuario
efectiva.
La palabra “Basic” hace referencia al lenguaje BASIC (Beginners AllPurpose Symbolic Instruction Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en la historia de la informática
o computación. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora contiene centenares de instrucciones, funciones y
palabras clave, muchas de las cuales están directamente relacionadas
con la interfaz gráfica de Windows. Los principiantes pueden crear
aplicaciones útiles con sólo aprender unas pocas palabras clave, pero,
al mismo tiempo, la eficacia del lenguaje permite a los profesionales
acometer cualquier objetivo que pueda alcanzarse mediante cualquier
otro lenguaje de programación de Windows. El lenguaje de programación Visual Basic no es exclusivo de Visual Basic. La Edición para
aplicaciones del sistema de programación de Visual Basic, incluida en
Microsoft Excel, Microsoft Access y muchas otras aplicaciones Windows, utilizan el mismo lenguaje. La aplicación terminada es un auténtico
archivo .exe que utiliza una biblioteca de vı́nculos dinámicos (DLL) de
tiempo de ejecución que puede distribuir con toda libertad.
2.3.2 Elementos de Visual Basic
El entorno integrado de desarrollo de Visual Basic (IDE) consta de los
siguientes elementos:
1. Barra de menús: Presenta los comandos que se usan para trabajar con Visual Basic. Además de los menús estándar (Archivo,
Edición, Ver, Ventana y Ayuda) se proporcionan otros menús para
tener acceso a funciones especı́ficas de programación como Proyecto,
Formato o Depuración.
2. Menús contextuales: Contienen accesos directos a acciones que se
realizan con frecuencia. Para abrir un menú contextual, haga clic
con el botón secundario del mouse en el objeto que está usando. La
lista especı́fica de opciones disponibles en el menú contextual depende de la parte del entorno en la que se hace clic con el botón secundario del mouse. Por ejemplo, el menú contextual que aparece
8
cuando hace clic con el botón secundario del mouse en el cuadro
de herramientas le permite mostrar el cuadro de diálogo Componentes, ocultar el cuadro de herramientas, acoplar o desacoplar
el cuadro de herramientas, o agregar una ficha personalizada al
cuadro de herramientas.
3. Barras de herramientas: Proporcionan un rápido acceso a los
comandos usados normalmente en el entorno de programación.
Seleccionando un botón de la barra de herramientas se lleva a
cabo la acción que representa ese botón. De forma predeterminada, al iniciar Visual Basic, se presenta la barra de herramientas estándar. Es posible activar o desactivar otras barras de herramientas adicionales para modificar, diseñar formularios desde
el comando Barras de herramientas del menú Ver.
4. Cuadro de herramientas: Proporciona un conjunto de herramientas que se puede usar durante el diseño para colocar controles
en un formulario. Además del diseño del cuadro de herramientas predeterminado, se puede crear un diseño personalizado si se
selecciona “agregar” ficha en el menú contextual y se agregan controles a la ficha resultante.
5. Ventana Explorador de proyectos: Enumera los formularios y módulos
del proyecto actual. Un proyecto es la colección de archivos que se
usan para generar una aplicación.
6. Ventana Propiedades: Enumera los valores de las propiedades
del control o formulario seleccionado. Una propiedad es una caracterı́stica de un objeto, como su tamaño, tı́tulo o color.
7. Examinador de objeto: Enumera los objetos disponibles que se
pueden usar en su proyecto y proporciona una manera rápida de
desplazarse a través del código. Se puede usar el Examinador de
objetos para explorar objetos en Visual Basic y otras aplicaciones,
ver qué métodos y propiedades están disponibles para esos objetos
y pegar código de procedimientos en una aplicación.
8. Diseñador de formularios: Funciona como una ventana en la que
se personaliza el diseño de la interfaz de una aplicación. Se pueden
agregar controles, gráficos e imágenes a un formulario para crear
9
la apariencia que se desee. Cada formulario de una aplicación
tiene su propia ventana diseñador de formulario.
9. Ventana Editor de código: Funciona como un editor para escribir
el código de la aplicación. Se crea una ventana editor de código
diferente para cada formulario o módulo del código de la aplicación.
Figure 2: Elementos de Visual Basic.
2.3.3 Primera aplicación
Hay tres pasos principales para crear una aplicación en Visual Basic:
1. Crear la interfaz.
2. Establecer propiedades.
3. Escribir el código.
10
Para ver cómo se crea una aplicación con Visual Basic vamos a crear
una aplicación sencilla formada por un cuadro de texto y un botón de
comando. Cuando se seleccione el botón de comando aparecerá el mensaje “Hola, mundo” en el cuadro de texto.
1. Creación de la interfaz. Los formularios son la base para crear
la interfaz de una aplicación. Se pueden usar formularios para
agregar ventanas y cuadros de diálogo a la aplicación. También
se pueden usar como contenedores de elementos que no son parte
visible de la interfaz de la aplicación (por ejemplo, se puede tener
un formulario en una aplicación que sirva como contenedor para
gráficos que se quieran presentar en otros formularios). El primer
paso para generar una aplicación de Visual Basic consiste en crear
los formularios que van a ser la base de la interfaz de la aplicación. Después, se dibujan los objetos que van a componer la
interfaz en los formularios que se han creado. Para esta primera
aplicación, usaremos dos controles del cuadro de herramientas:
Botón Control, Cuadro de texto y Botón de comando.
Para dibujar un control mediante el cuadro de herramientas:
Seleccionar la herramienta del control que se ha elegido dibujar (en este caso el cuadro de texto).
Mover el puntero dentro del formulario. El puntero adoptará
la forma de cruz, como se muestra en la figura 3.
Colocar la cruz donde quiera que aparezca la esquina superior izquierda del control.
Arrastrar la cruz hasta que el control tenga el tamaño deseado (arrastrar significa mantener presionado el botón primario del mouse mientras mueve un objeto con el mouse).
Soltar el botón del ratón. El control aparecerá en el formulario.
Otra forma sencilla de agregar un control a un formulario es hacer
doble clic en el botón de ese control en el cuadro de herramientas.
Esto crea un control con un tamaño predeterminado situado en el
centro del formulario. Posteriormente, es posible mover el control
a otra ubicación del formulario. Obsérvese que, en las esquinas
11
Figure 3: Dibujar un cuadro de texto con el cuadro de herramientas.
del control, aparecen unos pequeños cuadros rectangulares (llamados controladores de tamaño). En el siguiente paso se usarán
estos controladores para cambiar el tamaño del control. También
se puede usar el ratón, el teclado y comandos de menú para mover
controles, bloquear y desbloquear la posición de los controles y
ajustar sus posiciones.
Para cambiar el tamaño de un control:
– Seleccionar el control que se desee cambiar de tamaño.
Aparecerán en el control los controladores de tamaño.
– Situar el puntero del ratón en un controlador de tamaño
y arrastrarlo hasta que el control tenga el tamaño deseado. Los controladores de las esquinas cambiarán el
tamaño de controles horizontal y verticalmente, mientras que los controladores de los lados cambiarán el tamaño
sólo en una dirección.
– Soltar el botón del ratón. Otra forma de cambiar el tamaño
12
es emplear la tecla MAYÚSCULAS junto con las teclas
de dirección para cambiar el tamaño del control seleccionado.
Mover un control. Usar el ratón para arrastrar el control a
otra ubicación del formulario o bien, usar la ventana Propiedades
para cambiar las propiedades Top y Left. Cuando se ha seleccionado un control, es posible usar la tecla CTRL junto con
las teclas de dirección para desplazar el control una unidad
de la cuadrı́cula cada vez que se pulse la tecla de dirección. Si
la cuadrı́cula está desactivada, el control se mueve un pı́xel
cada vez.
Bloquear la posición de todos los controles. En el menú Formato, seleccionar Bloquear controles (o bien seleccionar el
botón Alternar bloqueo de controles de la barra de herramientas Editor de formularios). Esto bloqueará todos los controles
del formulario en sus posiciones actuales, de forma que no los
podrá mover accidentalmente una vez que estén en la ubicación deseada. Se bloquearán los controles sólo en el formulario seleccionado (los controles de otros formularios no se
ven afectados). Este comando se puede usar, también, para
desbloquear las posiciones de los controles.
Ajustar la posición de controles bloqueados. Es posible arrastrar el control que tiene el enfoque si se presiona la tecla
CTRL y la tecla de dirección adecuada o bien se pueden cambiar las propiedades Top y Left del control en la ventana
Propiedades.
Ya se dispone de la interfaz de la aplicación “Hola, mundo”, como
se muestra en la figura 4.
2. Establecimiento de propiedades. El siguiente paso consiste en
establecer las propiedades de los objetos que se han creado. La
ventana Propiedades (figura 5) proporciona una manera fácil de
establecer las propiedades de todos los objetos de un formulario.
Para abrir la ventana Propiedades, seleccionar el comando Ventana (propiedades del menú Ver), seleccionar el botón Ventana
(propiedades de la barra de herramientas) o utilizar el menú contextual del control.
13
Figure 4: La interfaz de la aplicación ”Hola, mundo!”.
La ventana Propiedades consta de los siguientes elementos:
Cuadro del objeto: Presenta el nombre del objeto. Mediante
la flecha situada a la derecha del cuadro Objeto se puede presentar la lista de objetos del formulario actual.
Fichas de orden: Permite seleccionar entre una lista alfabética
de propiedades o una vista jerárquica dividida en categorı́as
lógicas, como las que tratan de la apariencia, fuentes o posición.
Lista de propiedades: La columna de la izquierda presenta
todas las propiedades del objeto seleccionado. Es posible modificar y ver los valores en la columna de la derecha.
Para establecer propiedades desde la ventana Propiedades:
Abrir la ventana de propiedades del formulario o control seleccionado.
14
Figure 5: La ventana de propiedades.
En la lista Propiedades, seleccionar el nombre de una propiedad.
En la columna de la derecha, escribir o seleccionar el nuevo
valor de la propiedad. Las propiedades enumeradas tienen
una lista predefinida de valores. Es posible presentar la lista
si se presiona la flecha hacia abajo que hay a la derecha del
cuadro Valores o puede recorrer la lista haciendo doble clic
en un elemento de la lista.
En el ejemplo “Hola, mundo” es necesario cambiar los valores de
tres propiedades. El resto de propiedades se dejará al valor predeterminado.
Establecimiento de la propiedad Icon. Todos los formularios en Visual Basic tienen un icono genérico predeterminado que aparece
15
Objeto
Propiedad
Valor
Form
Caption
Hola Mundo
TextBox
Text
(Vacı́o)
CommandButton Caption
Aceptar
Table 1: Establecimiento de las propiedades.
cuando se minimiza el formulario. Es posible cambiar este icono
por otro. Para asignar un icono a un formulario, establecer la
propiedad Icon para el formulario en cuestión. Será posible utilizar iconos de 32 x 32 pı́xeles que eran estándar en las versiones
de Microsoft Windows de 16 bits y que se utilizan también en
Windows 95 y Windows NT, ası́ como los iconos de 16 x 16 pı́xeles
empleados en Windows 95.
3. Escritura de código. La ventana Editor de código es el lugar donde
se escribe el código de Visual Basic para la aplicación que se esté
diseñando. El código consta de instrucciones del lenguaje, constantes y declaraciones. Mediante la ventana Editor de código se
puede ver y modificar rápidamente el código de la aplicación.
Para abrir la ventana Código, seleccionar el formulario o el control
para el que se desea escribir código o bien, en la ventana Explorador de proyectos, seleccionar el nombre de un formulario o un
módulo y escoger la opción Ver código. La figura 6 muestra la
ventana Editor de código que aparece. Será posible seleccionar
la presentación de todos los procedimientos en la misma ventana
Código o presentar un único procedimiento cada vez.
Para presentar todos los procedimientos en la misma ventana Código, seleccionar, en el menú Herramientas, Opciones.
Posteriormente, en la ficha Editor, del cuadro de diálogo Opciones, activar la casilla de verificación situada a la izquierda
de Vista completa predeterminada del módulo (agrega o quita
una lı́nea separadora entre los procedimientos) o bien activar el botón Ver módulo completo, en la esquina inferior
izquierda de la ventana Editor de código.
16
Figure 6: La ventana Editor de código.
Para presentar un único procedimiento cada vez en la ventana Código, seleccionar, en el menú Herramientas, Opciones.
Posteriormente, en la ficha Editor, del cuadro de diálogo Opciones, desactivar la casilla de verificación o bien activar el
botón Ver procedimiento, en la esquina inferior izquierda de
la ventana Editor de código.
La ventana Código incluye los siguientes elementos:
Cuadro de lista Objeto: Presenta el nombre del objeto seleccionado. Haga clic en la flecha de la derecha del cuadro de
lista para presentar una lista de todos los objetos asociados
con el formulario.
Cuadro de lista Procedimiento: Enumera los procedimientos
o eventos de un objeto. El cuadro presenta el nombre del procedimiento seleccionado, en este caso Click. Elija la flecha
que hay a la derecha del cuadro para presentar todos los procedimientos del objeto.
Creación de procedimientos de evento. El código en una
aplicación de Visual Basic se divide en bloques menores llama17
dos procedimientos. Un procedimiento de evento, como los que
se crearán aquı́, contiene código que se ejecuta cuando se produce un evento (como cuando un usuario hace clic en un botón
del ratón). Un procedimiento de evento de un control combina el
nombre real del control (especificado en la propiedad Name), un
carácter de subrayado y el nombre del evento. Por ejemplo, si se
quiere que un botón de comando, llamado Command1, invoque un
procedimiento de evento cuando se haga clic en botón, utilizar el
procedimiento Command1 Click.
Para crear un procedimiento de evento, primero es necesario seleccionar, en el cuadro de lista Objeto, el nombre de un objeto del
formulario activo (el formulario activo es el formulario que actualmente tiene el enfoque), en el ejemplo que se está realizando,
escoger el botón de comando Command1. Después, en el cuadro
de lista Procedimiento, seleccionar el nombre de un evento del
objeto seleccionado (en este caso, el procedimiento Click ya está
seleccionado puesto que es el procedimiento predeterminado para
un botón de comando). Como consecuencia de la acción anterior,
se presenta en la ventana Código una plantilla para el procedimiento de evento. Finalmente, y entre las instrucciones Sub
y End Sub, se escriba el siguiente código: Text1.Text = “Hola,
mundo”.
El procedimiento de evento deberı́a parecerse a éste:
Private Sub Command1 Click () Text1.Text = “Hola, mundo” End
Sub
Obsérvese que aquı́ el código simplemente cambia la propiedad
Text del control llamado Text1 para que sea “Hola, mundo”. La
sintaxis de este ejemplo tiene el formato objeto.propiedad, donde
Text1 es el objeto y Text la propiedad. Es posible utilizar esta
sintaxis para cambiar los valores de las propiedades de cualquier
formulario o control como respuesta a los eventos que se producen
mientras se ejecuta su aplicación.
Finalmente, veamos como se ejecuta la aplicación. Para ejecutar
la aplicación, seleccionar la opción Iniciar en el menú Ejecutar, seleccionar el botón Iniciar de la barra de herramientas o presionar la tecla
18
F5. Al presionar el botón de comando que se ha creado en el formulario,
debe aparecer el texto “Hola, mundo” en el cuadro de texto.
2.3.4 Sintaxis básica en Visual Basic
1. COMENTARIOS. Los comentarios se pueden poner detrás de rem
o del carácter ’. Por ejemplo: “rem Esto es un comentario” ó “ ’ Esto
también”
2. DECLARACIÓN DE VARIABLES. El mnemónico Dim se emplea
para declarar variables y les asigna espacio en memoria. Por
ejemplo: “Dim dir% ’En dir% se guarda una dirección GPIB asignada.
3. LLAMADAS A FUNCIONES. “Call función(argumentos)”. Los argumentos pueden ser de entrada ó salida indistintamente. La
otra forma de hacer llamadas a funciones es “función argumentos”. Por ejemplo: “Call ibwrt(dir%, “FRO 0, HOR MTB, TSL
POS,”) rem de esta forma se envı́a el comando de flanco de subida
al osciloscopio”, ó “Call ibwrt(dir%, “FRO 0,HOR MTB, TL POS,”
’de esta forma se consigue lo mismo”. En ambos casos hay que
tener cuidado con no olvidar la coma antes de cerrar comillas.
4. FINALIZACIÓN. El mnemónico End finaliza el programa en el
punto donde se escriba.
2.4 Esquema de un Controller para PC
En la figura 7 se muestra el esquema de un controller sencillo para PC.
Este controller se basa en tres PALes del tipo PLD–22V10.
Figure 7: Esquema de un controller para PC.
3
Material necesario
1. Osciloscopio PM3375 con puerto GPIB.
19
2. Analizador lógico Tektronix 1230.
3. Sonda.
4. PC.
5. Tarjeta IEEE-488 (GPIB) instalada en el PC.
6. Dos cables (uno de ellos de la norma IEEE-488) y tarjeta con tira
de pines para conectar las sondas del analizador lógico.
7. Visual Basic.
8. Ficheros DLL necesarios para las funciones GPIB.
9. Fichero de Constantes Globales de GPIB: NIGLOBAL.BAS.
10. Fichero de librerı́a de funciones GPIB: VBIB32.BAS (ambos en
DISQUETE).
4
Realización de la práctica
La práctica se divide en dos partes. La 1a parte tiene como objetivo el
diseño de un osciloscopio “virtual” desde el que se le puedan mandar
diferentes órdenes, mediante botones, al osciloscopio. En concreto se
diseñará una interface que permita al usuario configurar las siguientes
funciones del osciloscopio:
1. Funciones de tiempo.
Tiempo:1uS/Div
Tiempo:10uS/Div
Tiempo:0.1mS/Div
Tiempo:1mS/Div
Trigger por flanco de bajada
Trigger por flanco de subida
2. Funciones del canal A.
20
Canal A con acoplamiento DC
Canal A con acoplamiento AC
Canal A con acoplamiento a Tierra
Canal A OFF
Canal A: 1V/div
Canal A: 0.1V/div
Canal A: 0.01V/div
3. Funciones del canal B.
Canal B con acoplamiento DC
Canal B con acoplamiento AC
Canal B con acoplamiento a Tierra
Canal B OFF
Canal B: 1V/div
Canal B: 0.1V/div
Canal B: 0.01V/div
4. Funciones especiales.
Osciloscopio en modo Local
Autoset
Modo Analógico
Modo Digital
Apagar el osciloscopio virtual dejando el real en modo local.
Posteriormente, se visualizará, utilizando el analizador lógico 1230 de
Tektronix, el protocolo GPIB.
21
4.1 1a Parte: Control remoto del Osciloscopio
4.1.1 Abrir un Proyecto
Para empezar a crear esta aplicación, seleccionar Nuevo proyecto en el
menú Archivo. Posteriormente, seleccionar EXE estándar en el cuadro
de diálogo Nuevo proyecto (cuando se inicie, por primera vez, Visual
Basic aparecerá el cuadro de diálogo Nuevo proyecto). Visual Basic
crea un proyecto nuevo y presenta un formulario nuevo.
En el explorador de proyectos, hacer click con el botón derecho del
ratón para agregar ”Módulo”. Agregar los ficheros NIGLOBAL.BAS
y VBIB32.BAS.
4.1.2 Funciones de inicio y fin del programa
Para empezar el proyecto nos situamos en la hoja de código del formulario y escribimos la función principal del programa:
Private Sub Form Load()
’ códigos End Sub
Dentro de ella inicializar la tarjeta GPIB mediante la función “Call
ibfind(”GPIB0”, tarjeta%)”, habiendo definido, previamente, la variable
tarjeta% con la palabra clave “Dim (i.e., Dim tarjeta%)”.
Es necesario buscar los componentes conectados al bus GPIB que, en
nuestro caso, sólo debe ser el osciloscopio: “Call ibdev(0, 8, 0, 14, 1, 0,
oscilos%)”.
Una vez localizado el manejador del osciloscopio (su dirección GPIB),
ya es posible comenzar a mandarle comandos. Es necesario:
1. Reinicializar el dispositivo (osciloscopio) GPIB.
2. Ordenar al osciloscopio el funcionamiento en modo Talker y Listener.
3. Poner el osciloscopio en modo local.
De no hacerse la reinicialización del osciloscopio, el programa generará
errores de ejecución.
Para terminar, escribir la función de terminación del programa:
Private Sub Form Terminate()
’ códigos End
Sub
22
Aquı́ es necesario, como mı́nimo, dejar el osciloscopio en modo local
para poder manejarlo, desde su botonera, después de cerrado el osciloscopio virtual (el programa de Visual Basic). Ver las fotocopias para
una descripción de los parámetros de las funciones.
4.1.3 Funciones de tiempo
Para diseñar un grupo de OptionButtons, de los que sólo se seleccione
uno a la vez (i.e. para distintas escalas de tiempo), se procede de la
siguiente forma:
1. Se dibuja un “FRAME” donde quepan, al menos, cuatro OptionButtons.
2. Se dibuja, dentro del FRAME, los OptionButtons necesarios.
3. Haciendo doble click en cada OptionButton, automáticamente, se
muestra la parte de código referente a ese OptionButton. Escribir
en la zona de código que aparece el comando necesario para fijar
la escala de tiempo que se pide.
Diseñar otro conjunto de dos OptionButtons para el flanco del trigger
(subida o bajada).
4.1.4 Funciones de los canales A y B
Hacer lo mismo que en el apartado anterior pero para todas las funciones, relacionadas con los canales A y B, que se piden.
4.1.5 Funciones Especiales
Para cada una de las funciones especiales crear un CommandButton y
escribir el código correspondiente para ejecutar los comandos.
Para la finalizar la aplicación debe hacerse una llamada a la función
Form terminate().
23
4.1.6 Prueba
Una vez hecho el programa, conectar la sonda al canal A y medir la
señal de calibración del osciloscopio. Es preciso probar todas las funciones que se han programado, teniendo en cuenta que al terminar el
programa debe hacerlo dejando al osciloscopio en modo local (de lo contrario el osciloscopio quedarı́a bloqueado).
En la memoria debe incluirse el código del formulario realizado, de
forma ordenada y con los comentarios necesarios.
4.2 2a Parte: Protocolo GPIB.
Concluida la parte de diseño de un osciloscopio virtual basado en PC, el
alumno debe analizar el protocolo GPIB. Para ello utilizará el programa
que ha diseñado y el analizador lógico tektronix 1230. El objetivo de
esta parte de la práctica es analizar las transferencias GPIB:
1. Visualizar una transferencia de datos o comandos en lectura o escritura por parte del controller. Presentar en la memoria la forma
de onda de la transferencia, indicando los tiempos del acceso.
2. Analizar las señales que controlan el flujo de información por el
bus (ATN, IFC, REN, SRQ y EOI).
Presentar en la memoria diferentes formas de onda de la
transferencia, indicando los tiempos del acceso, en los que
las señales ATN, IFC ó REN tengan diferentes valores. Indicar si estas lı́neas son de entrada o salida para el controller.
Explicar las diferencias entre unas transferencias y las otras.
Indicar si las lı́neas SRQ y EOI son de entrada o salida para
el controller. Analizar e indicar las caracterı́sticas y limitaciones del controller del que se dispone. Explicar cómo piensa
que habrı́a que modificar el controller para que implemente
todas las caracterı́sticas de un controller, según la norma
IEEE–488.
24
Descargar