Keithley 3390 Generator Driver
Martín Cortés Godoy


Introducción

El programa Keithley3390 facilita la automatización de mediciones en circuitos de laboratorio, enviando comandos a equipos especializados, que en este caso es un generador de señales de marca Keithley Intruments. El programa ocupa el protocolo VXI11 para comunicación vía LAN con el equipo.

VXI11 es un conjunto de librerías pre programadas que implementan métodos para enviar y recibir cadenas de caracteres que serán los comandos de seteo o comandos de pregunta (query) que se le enviarán al equipo.

Originalmente, el programa se construyó para hacer pruebas de linealidad en amplificadores-derivadores, la pruebas consistían en darle al amplificador una entrada de -50 [mV] a -1[V] cada 50 [mV] (50, 100, 150, 200 etc.) y medir la salida con un osciloscopio cuya función era calcular el valor mínimo y enviarlo a un archivo .txt que luego era utilizado para hacer un histograma, el problema que para hacer esto último de necesitaban alrededor de 20000 mediciones del valor mínimo, en lo cual el osciloscopio demoraba unos 10 minutos por voltaje de entrada y había que medir alrededor de 500 amplificadores.

Para ésta última implementación, también se hizo un programa para el osciloscopio. El programa es ahora utilizado para automatizar cualquier labor que necesite el generador, dentro del laboratorio.




Contenido

1. Vxi11.x

Es la encargada de producir el encabezado VXI11.c, los archivos que la componen son una interfaz de código de equipos con drivers de bajo nivel.

2. Vxi11_user.h/Vxi11_user.cc

Son el corazón de la comunicación vía Ethernet, tiene implementado 4 métodos de envío y recepción de comandos y otras funciones de uso general.

3. Keithley3390.cpp/Keithley3390.h

Es la librería principal que comunica al computador con el generador de señales, contiene métodos que implementan las funciones de envío/recepción de VXI11, para setear (la forma de onda, la frecuencia, el voltaje máximo/mínimo) o para preguntarle al equipo acerca de su número de identificación o de los parámetros que tiene seteados.

4. pruebaKeith.cpp

Es el archivo main, hecho especialmente para ser presentado en clases, es bastante funcional pero comprueba el envío y recepción de las funciones implementadas.

5. Makefile

Genera e Instala la librería Keithley3390.so en Linux, Compila y genera el programa, tiene la opción de borrar la librería creada con Make cleanall




Casos de uso

I. Nombre: Comprobar conexión Ethernet

Actor: Operario

Descripción: El operario desea saber si el equipo está correctamente conectado al computador y si el equipo está listo para recibir comandos.

Flujo Principal:

1) El operario revisa que el cable esté físicamente conectado al puerto Ethernet.

2) El operario debe definir una dirección IP dentro de las opciones del Keithley 3390.

3) Se define una IP dentro del archivo main.

4) El operario corre el archivo make y ejecuta el archivo ejecutable.

5) Si el equipo está realmente conectado, retornará un string por pantalla con la descripción del modelo y su año de fabricación, luego, dará las opciones correspondientes para la generación de señales.

Variantes:

5A1) Si el equipo no está conectado, esperará a que el equipo responda hasta cumplir cierto timeout, anunciará error y se cerrará el programa, volviendo al paso 4.

Diagrama UML:

Comprobar Conexión Ethernet




II. Nombre: Elegir Función

Actor: Usuario o señal externa.

Descripción: Elige una función que puede ser Pulso, Sinusoidal, Cuadrada, Rampa, Ruido pulsando algún número, luego se escriben los parámetros deseados de cada uno (Frecuencia, Voltaje, Ciclo de trabajo, etc).

Flujo Principal:

1) Una vez corrido el programa, si todo está correcto dará al usuario a elegir entre 5 funciones enumeradas en 1, 2 ,3 ,4 y 5, el usuario debe elegir una pulsando el número, o pulsando 6 para salir.

2) Sea cual sea que pulse, el programa pedirá que se ingrese algún valor para su respectivo parámetro, por ejemplo: Frecuencia, Voltaje Máximo, Voltaje Mínimo, Ciclo de trabajo, Tiempo de bajada, etc.

3) Una vez definidos los parámetros, el equipo seteará la función deseada.

4) El programa dará a elegir al usuario si activar la salida o no. El usuario debería pulsar (y), si quiere activarla y (n), si no.

Variantes:

1A1) Si se ingresa una letra o un número que no esté dentro de las opciones, el programa lanzará error y se cerrará.

3A1) Si se ingresa un valor fuera de rango o equivocado, el generador emitirá un pitido y seteará el parámetro en el valor máximo/mínimo posible, probablemente el programa se cierre.

4A1) Si se ingresa una letra o un número que no esté dentro de las opciones, el programa lanzará error y se cerrará.

Diagrama UML:

Elegir Función




III. Nombre: Elegir otras opciones

Actor: Usuario o señal externa.

Descripción: Si en el caso anterior se decide por desactivar la salida, volver a definir una función, hacer una lista de parámetros o salir del programa.

Flujo Principal:

1) Una vez seteada la función, el programa enumera una lista de opciones entre las cuales está: (y) Activar Salida, (n) Desactivar Salida, (r) Lista de parámetros, (e) Volver a elegir función, (s) volver a elegir parámetros.

2) Sea cual sea que pulse, el programa retornará a la opción elegida, en el caso de elegir (e) o (s), la salida del generador se desconecta antes de volver a setear nuevos parámetros o alguna nueva función.

Variantes:

1A1) Si se ingresa una letra o un número que no esté dentro de las opciones, el programa lanzará error y se cerrará.

Diagrama UML:

Elegir otra opción






Pruebas


Configurando la IP del Computador

La IP del computador se debe configurar mediante el comando: $ sudo ifconfig eth0 192.168.1.251

Si la IP del computador no se configura previamente no se establecerá nunca conexión, esta IP tiene que ser distinta a la IP del Generador.

Configurar IP




Seteando una función Pulso

El programa no tiene GUI, pero si una forma bastante ordenada y fácil para setear funciones, en la siguiente figura se está configurando una función pulso, el título superior Keithley Instruments Inc…., es el string que retorna el equipo al enviarle el comando *IDN?, con la función getIDN().

Setear Pulso




Haciendo Resumen de Parámetros

En la siguiente imagen se ingresa la opción “Resumen de Parámetros”, el programa envía comandos mediantes las funciones getShape(), getFrecuency(), getHigh(), etc depende la función y retorna un string con el parámetro deseado.

Setear Pulso




Bugs

- Cuando se dan las opciones de elegir Función, si se presiona un número que no está, el programa se cae. Lo mismo ocurre cuando se dan las opciones de retorno y resumen de parámetros.

- Cuando se elige la función pulso, por alguna razón no se puede setear el rise time o tiempo de subida en [ns], el generador “reclama” y setea el mayor/menor valor posible o el programa se cae. Se optó por lo tanto eliminar ese parámetro y setearlo desde el main.