Beruflich Dokumente
Kultur Dokumente
Hay que tener una consideración importante: los potenciales termoeléctricos y de contacto
(VTyC). Para medir el valor real de tensión sobre la muestra (VMuestra), hay que promediar los valores
de tensión obtenidos por los multímetros (VMult) en uno y otro sentido de la corriente aplicada, o sea:
Para anular el efecto de los potenciales VTyC, restando las ecuaciones anteriores:
VMuestra = [VMult(I) – Vmult(-I)]/2
Figura 2.1 -Equipo de resistometría utilizado en el proceso de medición.
Las técnicas usadas para medir resistencias en el rango normal, generalmente no son
adecuadas para mediciones de baja-resistencia debido a los errores causados por caídas de potencial
a través de los cables de conexión. Para solucionar estas limitaciones, las mediciones de baja
resistencia usualmente se realizan mediante el método de las cuatro puntas (Kelvin). Una fuente de
corriente, inyecta una corriente I a través de una resistencia desconocida, produciendo una caída de
voltaje en el dispositivo. Aun cuando existe una resistencia de los conectores, esta no afecta la
corriente a través de la resistencia a medir debido a que se supone una fuente de corriente constante
con alta impedancia de salida (aquí esta uno de los motivos de usar esa fuente de corriente).
Además, si el voltímetro tiene una muy alta impedancia de entrada, la corriente por los
conectores será despreciable, y la caída de potencial a través los conductores será esencialmente
cero. Entonces, el voltaje medido por el medidor será esencialmente el mismo que el voltaje a través
de la resistencia desconocida.
Como la corriente a través de la resistencia a medir y el voltaje a través del dispositivo son
ambos conocidos, el valor de la resistencia puede fácilmente ser determinado a partir de la Ley de
Ohm.
Figura 2.3 - Resistencia eléctrica de una aleación de Cobre – Cinc – Aluminio (CuZnAl ).
La Figura 2.3 muestra la resistencia eléctrica de una aleación CuZnAl a medida que la
temperatura varia entre 800 y 20ºC. Analizando esta curva apropiadamente (calculando su derivada
por ejemplo) se pueden encontrar puntos críticos de la misma. En este caso en particular, estas
puntos críticos (temperaturas críticas) informan acerca de un ordenamiento atómico experimentado
por la red cristalina del material a medida que la temperatura es modificada.
Figura 2.4 – Transformación de fases de los “smart materials”
La Figura 2.4 da cuenta de una transformación de fases que experimentan ciertos materiales
que se denominan materiales inteligentes “Smart materials en inglés”. Dentro de este grupo se
encuentran los conocidos como Materiales con memoria de forma, que son con los que se trabaja en
el IFIMAT. Como el nombre lo indica son materiales, aleaciones, que en respuesta a estímulos,
como pueden ser temperatura, tensión, comprensión, modifican en forma controlada, su forma. De
allí que puedan utilizarse en gran variedad de dispositivos. Aquellos que se fabrican con aleaciones
biocompatibles son aptos para aplicaciones en el campo de la medicina, la ortodoncia, como stens
coronarios, por ejemplo, o prótesis.
La técnica de resistometría eléctrica resulta muy útil para calcular las transformaciones de
fases de los “smart materials”. Se trata de la transformación martensítica (manifestada por la
variación de temperatura o por aplicación de fuerzas), y mediante esta técnica se pueden obtener la
mayoría de los parámetros que la caracterizan: temperaturas críticas, histéresis (tendencia de un
material a conservar una de sus propiedades, en ausencia del estímulo que la ha generado), fracción
de material transformado, etc). A veces es útil analizar esta transformación a partir de la curva de
fracción transformada en función de la temperatura.
Figura 2.5 – Evolución de la resistencia eléctrica a temperatura constante
Estándar IEEE-488
(http://www.hit.bme.hu/~papay/edu/GPIB/tutor.htm)
Un equipo completo de medición consta de uno o mas dispositivos programables, un bus de
comunicación GPIB y una placa capturadora de datos conectada a una PC.
Los dispositivos son normalmente direccionables y deben proveer una forma de actualizar
dichas direcciones. Cada dispositivo tiene una dirección primaria que varia entre 0 y 30, siendo la
dirección 31 donde no se lee ni se transmite. A su vez poseen direcciones secundarias que pueden
ser utilizadas para direccionar funciones de dispositivos.
La velocidad de la transferencia de datos es controlada por la respuesta del dispositivo más
lento en el Bus, por esta razón es difícil estimar el ritmo de transferencia de datos en el Bus IEEE-
488 ya que son dispositivos dependientes.
Líneas de transmisión de datos:
Las líneas DIO1 hasta DIO8 son utilizadas para transferir direcciones, controlar información
y datos. Los formatos para direcciones y controles de bytes son definidos por el estándar IEEE 488,
mientras que los formatos de datos son indefinidos y pueden ser ASCII (con o sin paridad) o
binario. DIO1 es el Least Significant Bit (esto deberá corresponder al bit 0 en la mayoría de las
computadoras).
Se puede dividir las 8 lineas en dos grupos: 3 lineas de Handshake y 5 lineas de
administración de interfaces, las cuales de describen a continuación. Las primeras son utilizadas
para llevar a cabo el proceso de “handshake”.
Líneas de Handshake
Las tres líneas de handshake (NRFD, NDAC, DAV) controlan la transferencia de mensajes
entre los dispositivos y definen el mecanismo para el reconocimiento de la transferencia de datos.
Este proceso de handshaking garantiza que los bytes en la línea de datos son enviados y
recibidos sin ningún error de transmisión y es una de las características únicas del Bus IEEE-488.
La línea de handshake NRFD (Not Ready for Data) es sostenida por un Listener para indicar
que no está todavía preparado para el próximo dato o para un byte de control. Por otro lado el
Controlador no verá liberado el NRFD (por ejemplo, cuando este listo para recibir datos) hasta que
todos los dispositivos lo hayan liberado.
La línea de handshake NDAC (Not Data Accepted) es sostenida por un Listener para indicar
que todavía no está preparado para el próximo dato o para un byte de control en la línea de datos.
Por otro lado el Controlador no verá liberado el NDAC (por ejemplo, cuando el dato sea aceptado)
hasta que todos los dispositivos lo hayan liberado.
La línea de handshake DAV (Data Valid) es sostenida por un Talker para indicar que un
dato o byte de control ha sido colocado en la línea de datos y ha tenido el tiempo de estabilización
mínima especificado. Por lo tanto el byte puede ahora ser aceptado por los dispositivos.
1- Aviso de trasmisión: Cuando el talker detecta que todos los listeners están desocupados avisa
(setea DAV en 1) que se comenzará el proceso de transmisión de un dato (o un byte de control) y
espera que todos los dispositivos estén preparados para recibirlo. Si después de setear la línea DAV
a 1, el Controlador o el Talker perciben que las líneas NRFD y NDAC están altas, ocurrirá un error.
2- Aviso de preparación para la recepción: Cuando cada listener esta preparado para recibir los
datos realiza un aviso al talker (setea NRFD en 1 y NDAC en 0).
3- Transmisión de los datos: Cuando el talker detecta que todos los listeners están preparados
(NRFD en 1), pone los datos en el bus y avisa a los listeners (setea NRFD y DAV en 0) que ya hay
datos validos en las lineas de datos.
4- Aviso de ocupado: Cuando los listeners detectan que hay datos válidos en el bus avisan al talker
(setea NDAC en 1) que están ocupados recibiendo dichos datos.
Figura 3.5 – Aviso de ocupado del Bus GPIB
5- Retransmisión: Una vez que el talker setea en 0 la linea DAV espera un tiempo determinado para
volver a indicar a los listeners que desea enviar un nuevo dato (paso 1). Dicho tiempo puede ser
configurable adaptándose a la cantidad de dispositivos instalados en el bus y la distancia entre los
mismos.
En la siguiente figura (figura 3.6) se muestra el proceso de handshake completo mostrando los
cambios en el estado de cada linea de control (DAV, NRFD y NDAC) en cada momento del
proceso.
Las cinco líneas de administración de interfaces (ATN, EOI, IFC, REN, SRQ) administran
el flujo de datos y bytes de control de un lado a otro de la interfaz.
La señal ATN (Attention) es afirmada por el Controlador para indicar que una dirección o un
byte de control está ubicado en el Bus de datos. La señal ATN es liberada para permitir al Talker
asignado tomar posición o datos en el Bus de datos. El Controlador recupera el control reafirmando
la señal ATN; esto normalmente es hecho de manera sincrónica con el handshake para eliminar
confusiones entre el control y los bytes de datos.
La señal EOI (End or Identify) tiene dos usos. Un Talker puede mantener simultáneamente
EOI con el último byte de datos para indicar el end-of-data. El Controlador puede sostener EOI
junto con ATN para iniciar un parallel poll (el proceso de sondeo, de una vez, de todos los
dispositivos configurados y de lectura de una respuesta de sondeo compuesta). Aunque muchos
dispositivos no usan parallel poll, todos los dispositivos deberán usar EOI para finalizar la
transferencia (many currently available ones do not).
La señal IFC (Interface Clear) es mantenida sólo por el Controlador del Sistema con el
propósito de inicializar todas las interfaces de los dispositivos a un estado conocido. Después de
liberar IFC, el Controlador del Sistema es un Controlador Activo.
La señal REN (Remote Enable) es mantenida sólo por el Controlador del Sistema. Su uso no
da lugar a dispositivos dentro del modo de control remoto; REN sólo habilita a un dispositivo a ir
dentro del modo remoto cuando es direccionado para escuchar (listen). Estando en modo remoto un
dispositivo deberá ignorar el panel de control local.
La línea SRQ (Service Request) es como una interrupción: esta debe ser mantenida por
cualquier dispositivo para requerir al Controlador que realice alguna acción.
El Controlador debe determinar que dispositivo mantiene la señal SRQ. Para ello debe realizar un
proceso denominado serial poll, en el cual se consulta y lee el byte de estado de a un dispositivo por
vez. El dispositivo en cuestión libera la señal SRQ cuando es consultado.
Comandos SCPI
(http://zone.ni.com/devzone/cda/tut/p/id/9020)
Los comandos SCPI se escriben como texto ASCII, y tienen una estructura jerárquica por
niveles, separados por dos puntos.
Como se puede ver en la figura 3.7 los caracteres en mayúsculas son necesarios para especificar la
orden, mientras que los que están en minúsculas pueden suprimirse, sirviendo sólo para facilitar la
lectura de programas por usuario. Los comandos en sí pueden ser escritos indistintamente en
mayúsculas o minúsculas. Así, SCALE, sca y scale representan todos al mismo comando. Los dos
puntos sirven para separar los niveles de jerarquía, además los comandos se pueden concatenar con
un punto y coma. Una ventaja importante del estándar SCPI es la definición homogénea de
comandos para todos los aparatos de una misma clase, así los voltímetros por ejemplo tendrán para
la raíz un conjunto de comandos determinados.
En el Apéndice 1, se podrá ver un resumen y descripción de los comandos utilizados en el
desarrollo de la aplicación.
La interfaz PCI-GPIB IEEE-488 (Figura 3.8) convierte cualquier bus PCI de una
computadora personal en un sistema de control de instrumentos y adquisición de datos con una tasa
de transferencia mayor a 1 MB/s. Esta transferencia de datos sobre el bus GPIB se realiza usando la
máxima especificación IEEE-488 de longitud de cable (2 metros multiplicado por el número de
dispositivos).
La alta velocidad de las placas de computadoras, el administrador de estado del bus de la
máquina y el potente chip CB7210.2 asegura que la tarjeta sea capaz de mantener esta alta tasa de
transferencia de datos sobre el bus GPIB. Un búfer administrado como una FIFO (First In First Out,
sus siglas en inglés) y el avanzado método de transferencia de datos REP-INSW ISR proveen la
potencia requerida para transferir datos entre la tarjeta GPIB y la computadora.
Instrumentos Programables
Tabla 3.1 – Detalle de los equipos de medición con sus funciones y precisión
La placa capturadora se debe colocar en un puerto PCI de una PC estándar sin grandes
requerimientos de hardware adicional. A esta placa se le conecta un bus GPIB que a su vez se
conectan los dispositivos programables como lo muestra la siguiente figura:
Para que los programas de aplicación puedan interactuar con la placa de adquisición de
datos PCI instalada en la PC, es necesario agregar al Sistema Operativo el soporte de software de
bajo nivel. A este tipo de soporte se lo denomina “controlador de dispositivo” y abstrae las
características físicas de un dispositivo, garantizando su correcto funcionamiento del mismo cuando
una aplicación desea utilizarlo.
Requerimientos funcionales
1. Posibilidad de elegir el equipo a utilizar para la adquisición de los datos y configurar nuevos
equipos o variar la composición de los existentes.
– Leer, interpretar y actualizar algún archivo de configuración que permita conocer que
instrumentos hay conectados a la interfaz GPIB, cuales están disponibles para su utilización
y como se conforma un equipo completo de resistividad.
2. Control remoto del proceso de adquisición de datos en tiempo real: configuración,
inicialización, comienzo, pausa o continuación y detenimiento.
– En el contexto de este sistema se denomina proceso de resistividad al tipo de experimentos
que se realizan para analizar la resistividad de un material.
– Cada experimento, antes de su ejecución, incluye la configuración de cierta cantidad de
parámetros, como la intensidad de la corriente a aplicar en el circuito eléctrico o el intervalo
de tiempo en el cual nos interesa registrar las mediciones de los instrumentos.
– El usuario puede configurar en el sistema distintas combinaciones de valores de esos
parámetros, es decir puede almacenar distintas configuraciones del proceso de resistividad y
luego realizar ejecución del que desee.
– Se debe enviar a los controladores GPIB los comandos SCPI necesarios para inicializar los
instrumentos programables y solicitar los datos adquiridos.?Se debe establecer el orden de
inicialización adecuado de los distintos instrumentos para los experimentos de resistividad
que se deben realizar.
– Se debe establecer el orden y forma de recuperación de los datos adquiridos por los
instrumentos para realizar con los mismos los cálculos que sean necesarios.
3. Parámetros de configuración del proceso de resistividad configurables o establecidos por el
usuario. Algunos de los parámetros configurables son:
– intervalo de medición: tiempo entre dos mediciones consecutivas.
– intensidad de la corriente: intensidad de la corriente eléctrica aplicada al circuito.
– tiempo máximo de la ejecución: cuando el experimento alcance este valor, se detiene
automáticamente.
– precisión: cantidad de decimales de los datos adquiridos con los que trabajará el sistema.
4. Posibilidad de crear, modificar y seleccionar diferentes tipos de procesos de resistividad, es
decir administrar diferentes conjuntos de valores para los parámetros de configuración.
– A un tipo de proceso de resistividad específico se lo denomina proyecto del sistema.
– Un proyecto en este sistema consiste de un conjunto de valores de configuración
(almacenados en algún archivo de configuración del proyecto) y una lista de ejecuciones que
el usuario puede iniciar para este proyecto o proceso de resistividad.
– Los proyectos incluyen otros parámetros como por ejemplo: nombre, descripción y
ubicación en el sistema de archivos.
– Una ejecución consiste de un conjunto de datos adquiridos por los instrumentos y
comentarios del usuario realizados sobre ésta, desde el momento en que se inicia el proceso
de resistividad hasta el momento que se detiene.
5. Presentación de los datos adquiridos en forma amigable y usable en diferentes formatos.
Incluyen gráficos en base a los datos obtenidos e información sobre el estado del proceso.
– Gráficas en base a diferentes combinaciones de los datos adquiridos.
– Vistas textuales de los datos adquiridos.
– Acceso a los datos adquiridos de una ejecución para un proyecto determinado.
– Acceso a los comentarios realizados durante una ejecución de un proceso.
– Posibilidad de carga en la interfaz de todos los datos relacionados a una ejecución realizada
con anterioridad.
6. Asegurar la consistencia e integridad de los datos obtenidos ante posibles fallas.
– Mecanismo de auto-guardado que permita, ante una falla en el sistema, recuperar en forma
total o parcial el estado de la ejecución de un proceso de resistividad.
– Posibilidad de que el período de auto-guardado sea configurable por el usuario y por
proyecto.
7. Formatos de entrada y salida del sistema compatibles con otros sistemas, principalmente
sistemas de análisis de datos. Además los formatos deben ser estándares.
– Formatos de entradas al sistema en archivos XML.
– Formatos de salida del sistema en archivos de texto estilo CSV.
8. Para los puntos del 1 al 6, además de proveer la API que implemente dichos requerimientos se
debe proveer una interfaz gráfica amigable y confortable para llevar a cabo todas esas funciones
en forma visual.
– Las gráficas deben ser escalables automáticamente y opcionalmente en forma manual.
Además debe ser posible aumentar o disminuir el rango de los datos en distintos niveles.
– Las gráficas deben poderse exportar a distintos formatos de imágenes.
Escenarios de calidad
Arquitectura de la aplicación
Para obtener el esqueleto preliminar de la arquitectura del sistema, se sigue en este caso un
proceso de descomposición recursivo, en el cual para cada etapa o iteración se eligen un conjunto
de tácticas o patrones arquitectónicos para satisfacer el conjunto de requerimientos y escenarios de
calidad surgidos durante el análisis.
En la figura 1 se presentan las referencias que se utilizarán en los diagramas que ayuden a
entender arquitectura de componentes y módulos obtenida.
Entonces, las principales responsabilidades de los componentes del sistema serían las siguientes:
Mientras que las responsabilidades del controlador GPIB instalado en el sistema operativo
de la PC son las siguientes:
Controlador GPIB:
1. Proveer la interfaz adecuada para interpretar comandos SCPI.
2. Proveer los datos obtenidos de la interfaz y los instrumentos GPIB en un formato
manipulable por los niveles de aplicación.
3. Enviar las señales de control y de datos adecuadas hacia la placa GPIB, en base a los
comandos SCPI recibidos desde el nivel superior.
4. Interpretar las señales recibidas desde la placa GPIB para generar los datos en formatos
manipulables por los niveles de aplicación.
Primera descomposición
Proyectos: Recibe información de referencia sobre los proyectos, realiza su apertura y carga de
información relacionada, como la creación de nuevos proyectos. Brinda información sobre los
proyectos al componente UI y al Motor de resistividad. Las principales responsabilidades son:
1. Proveer la interfaz adecuada para recuperar y actualizar la información de los proyectos. La
información de los proyectos incluye los datos de configuración, datos adquiridos y
comentarios registrados durante la ejecución del proyecto
2. Procesar y registrar la información acerca de los proyectos, utilizando para ello la ruta al
archivo de configuración del mismo.
3. Procesar y registrar información acerca de las ejecuciones de los proyectos, utilizando para
la información de referencia sobre los mismos (por ejemplo la ruta correspondiente en el
sistema de archivos).
4. Provee la interfaz adecuada para recuperar la información de las ejecuciones de los
proyectos.
Responsabilidades internas:
1. Garantizar, ante posibles fallas internas y externas, la integridad de los datos de
configuración del proyecto y los comentarios que realiza el usuario sobre las ejecuciones de los
mismos. Para ello debe encargarse del auto guardado del proyecto.
Segunda descomposición
VistaUI: Renderiza los datos y funcionalidad del modelo en controles gráficos que permiten al
usuario interactuar con el sistema. Las responsabilidades especificas son:
1. Proveer al ModeloIU el servicio necesario para conocer en que momento debe actualizarse.
2. Proveer al controlador los servicios para que seleccione las distintas pantallas o controles
gráficos.
3. Muestra al Usuario los controles gráficos para que interactúe con el sistema.
4. Consultar el estado del modelo.
5. Delegar al ControladorIU los eventos generados por el Usuario
6. Recibir los eventos que el Usuario realiza sobre los controles.
ControladorIU: Mapea las acciones del usuario en actualizaciones sobre el modelo, selección y
actualización de las vistas a visualizar. Las responsabilidades especificas son:
1. Captura los eventos del Usuario que la VistaIU le envía.
2. Selecciona de la VistaIU las pantallas o controles gráficos a visualizar y actualiza su estado.
3. Actualiza el estado del ModeloIU.
4. Solicita al ModeloIU información sobre su estado.
Arquitectura final
En la Figura 5 se muestra el diagrama que incluye todos los componentes, módulos y sus
interrelaciones de la arquitectura final.
En esta sección se describen diversas decisiones que son tomadas como guía para la
implementación de la aplicación. Más precisamente se describe y justifica cual es la plataforma
sobre la cual ejecuta la aplicación a implementar, las bibliotecas que utiliza cada módulo para llevar
a cabo sus funciones, las herramientas y aplicativos de software libre adecuadas para realizar dicha
implementación y cualquier otro detalle que sea de utilidad durante el desarrollo.
Plataforma
Debian GNU/Linux
La última versión estable de Debian GNU/Linux es la 5.0, incluye la versión 2.6.26 del
núcleo de Linux y se denomina “lenny”. La versión 5.0 de Debian fue lanzada el 14 de Febrero de
2009, mientras que la última actualización estable es la versión 5.0.4 lanzada el 31 de Enero de
2010.
En la tabla 1 se muestra una comparativa de la distribución Debian frente a otras
distribuciones Linux. En la actualidad existen más de NNN distribuciones que utilizan Linux como
núcleo del sistema, pero en base a los requerimientos y necesidades funcionales, no funcionales y
filosóficos solo se analizan NN. Las que poseían una discontinuidad de más de 4 años a la fecha se
descartan por la probable des actualización del proyecto, algunas son descartadas por su poca
madures debido a su fecha de creación de no más de 3 años, otras no se tienen en cuenta por alguna
característica en especial como por ejemplo ser productos libres pero de empresas privadas
(Ubuntu) o tener un propósito de aplicación muy específico. También fueron descartadas las
distribuciones que solo proveían soporte para arquitecturas x86 (Arch Linux, Ark Linux, CRUX,
ATL Linux, VectorLinux, Mandriva, GoboLinux o Frugalware) y además las que se consideran
distribuciones livianas (Arch Linux, Ark Linux, Desktop Light Linux).
Tabla 1: Comparación de las distribuciones Linux más representativas.
A continuación de describe cual es y de donde proviene el soporte que brinda Debian para el
control de dispositivos GPIB.
A finales del año 2004 Robert Jordens tomó el trabajo que se realiza en el proyecto Linux-
GPIB para crear un paquete gpib en la distribución Debian. Fue incluido inicialmente en forma
estable en la versión 3.1 denominada “sarge”, lanzada el 6 de Junio de 2005. La versión del paquete
gpib en ese momento fue la 3.2.03-1.
El objetivo del nuevo paquete es proveer el soporte de software en Debian para dispositivos
de hardware GPIB que cumplen con el estándar IEEE 488.2. Dicho soporte consiste de los módulos
controladores para tarjetas GPIB de diversos fabricante y las bibliotecas de programación que
facilitan el desarrollo de aplicaciones de monitoreo y control de estos dispositivos.
Para la versión 4.0 de Debian, lanzada el 8 de Abril de 2007 bajo el nombre de “etch”, no se
incluyó el paquete gpib como estable. Luego en la versión 5.0, lanzada el 14 de Enero de 2009 bajo
el nombre de “lenny”, se incluyó como estable la versión 3.2.11-1 del paquete.
En la actualidad gpib (3.2.11-1) incluye los siguientes paquetes:
– gpib-modules-source (3.2.11-1): Código fuente de los módulos del núcleo para varias
tarjetas GPIB (IEEE 488).
– libgpib0: Biblioteca para el lenguaje C del controlador GPIB (IEEE 488). La API de la
biblioteca está orientada a ser compatible con la biblioteca GPIB de National
Instruments.
– libgpib0-dev: Encabezados de los enlaces para el lenguaje C del controlador GPIB
(IEEE 488).
– libgpib-bin: Configuración y aplicaciones de soporte para libgpib.
– libgpib-perl: Enlaces de perl para libgpib.
– php5-gpib: Enlaces de php5 para libgpib.
– python-gpib: Enlaces de python para libgpib.
Para aclarar aún más la historia y características del controlador elegido se detalla a
continuación algunas cuestiones sobre el proyecto en el cual se basa el soporte en Debian.
El proyecto Linux-GPIB es un proyecto creado por Frank Mori Hess a finales del año 2001
con el objetivo de dar soporte a los dispositivos de hardware GPIB (cumplen con el estándar IEEE
488.2) en la versión 2.4 del núcleo de Linux. Su trabajo se basó originalmente en el paquete linux-
gpib-2.05-alpha, desarrollado por Claus Schoeter para el proyecto Linux Lab (iniciado por IBM
en Alemania en el año 2000).
Incluye un entorno de desarrollo que aporta una biblioteca GPIB escrita en lenguaje C,
módulos controladores para extender el núcleo del sistema y enlaces a diferentes lenguajes como
tcl, python, perl y php.
El soporte para tarjetas PCI de la firma Capital Equipment Corp (CEC) y las tarjetas
compatibles de otras firmas como Keithley comenzó a partir del 8 de Febrero de 2002 a través de la
versión linux-gpib=3.1.3. A partir de ese lanzamiento se incluye el módulo cec_pci como
controlador del tipo de tarjetas antes mencionadas.
A partir de mediados del año 2004 comenzó el soporte para los núcleos 2.6 de Linux.
Software de aplicación
Hasta aquí se ha hablado del núcleo del sistema operativo, controladores y algunas
bibliotecas de bajo nivel, es decir el software esencial para poder sacarle provecho a una PC y otras
extensiones de hardware como las tarjetas GPIB. Pero para implementar una aplicación que cumpla
con requerimientos tan específicos (como es el de control y monitoreo de los procesos de
resistividad eléctrica) es necesario además, contar con un conjunto de bibliotecas de alto nivel y
herramientas de aplicación.
Un ejemplo clásico de software de aplicación son las herramientas que permiten explorar y
manipular el sistema de archivos. Mientras que un buen ejemplo de una biblioteca de aplicación de
alto nivel puede ser una biblioteca para el envío de correos electrónicos.
Hoy en día los sistemas operativos proveen al menos dos tipo o modos de entornos de
aplicación, es decir la forma que proveen al usuario de acceder y manipular el software de
aplicación. La opción más primitiva es el entorno de una consola de comandos, que si bien la
mayoría de los usuarios considera obsoleta, suele ser muy útil en tareas de mantenimiento,
configuración, búsquedas complejas de datos, etc. Mientras que los entornos de escritorio con
gestores de ventanas, desde hace más de 15 años, son los más utilizados por la mayoría de los
usuarios de hoy en día.
Particularmente las distribuciones de Linux suelen proveer entornos de escritorio que
corresponden a proyectos diferentes, por lo tanto sus características también son diferentes, dando
la opción al usuario de cual instalar en su sistema. Como se mencionó anteriormente Debian
GNU/Linux se basa en el proyecto GNU, el cual provee dos entornos de escritorio que siguen con
su filosofía. El primer proyecto se denomina GNOME (GNU Network Object Model Environment)
y se basa en una biblioteca para la creación de interfaces gráficas de usuario (toolkit en inglés)
denominada GTK+, cuya licencia es LGPL desde su concepción. Mientras que el segundo proyecto
se denomina KDE (K Desktop Environment) y se basa en el toolkit Qt, una biblioteca creada por la
firma TrollTech. Qt fue originalmente software propietario, pero hacia el año 1998 se libera bajo
una licencia del estilo BSD. En el año 2008 TrollTech fue adquirida por Nokia y hoy en día Qt
puede distribuirse con alguno de los siguientes tipos de licencias según la filosofía del proyecto en
el cual se utilice: Comercial, GNU LGPL o GNU GPL.
Inicialmente fue desarrollado como un toolkit para el software GIMP, aplicación para la
manipulación de imágenes, pero hoy en día se utiliza en un gran numero de aplicaciones siendo
además el toolkit del proyecto de escritorio GNOME.
GTK+ es una interfaz de programación de aplicaciones (API), siendo uno de sus objetivos
principales proveer una jerarquía de widgets, permitiendo la derivación de nuevos widgets a partir
de otros ya existentes. Además podemos mencionas las siguientes características:
GTK trabaja sobre el tope de GDK (GIMP Drawing Kit) permitiendo el soporte para
distintos sistemas de ventanas que se encarguen de su visualización.
Se basa además en la biblioteca GLib, la cual es de propósito general y permite que GTK
sea portable a más de una plataforma, ya que realiza el reemplazo de algunas llamadas al sistema
estándares y provee funciones para manipular diferentes estructuras de datos que se utilizan
habitualmente (listas vinculadas, arboles, etc). Los servicios más importantes que provee GLib
(desde su verión 2.0) y en los cuales GTK+ se apoya son:
– facilitar las bases que permiten crear una jerarquía de clases; proveer un sistema de
señales.
– abstraer a GTK+ de la biblioteca de la API nativa para hilos de ejecución (threads en
inglés) de las diversas plataformas.
– proveer la habilidad para la carga de módulos, diversos tipos de datos útiles, macros,
conversiones de tipos, utilidades para la manipulación de cadenas de caracteres,
utilidades para la manipulación de archivos y una abstracción del bucle principal de un
programa.
Las siguientes son otras bibliotecas sobre las que GTK+ se apoya para implementar
funcionalidades más especificas:
Para el actual desarrollo se elige el segundo mecanismo ya que posee las siguientes ventajas:
– facilita la construcción rápida de un prototipo de la aplicación a implementar,
permitiendo de esta forma la captura de nuevos o actualización de los requerimientos.
– es un mecanismo más flexible y mantenible para proyectos de gran tamaño,
– agiliza los procesos del tratamiento de cambios, al menos en lo que se refiere al código
que generalmente involucra a la interfaz de usuario.
Una secuencia muy simple de los pasos para crear una interfaz utilizando Glade e integrarla
al resto de la aplicación sería:
3. Para integrar un proyecto Glade en una aplicación, básicamente se debe incluir la biblioteca
glade en algún módulo y agregar algunas sentencias que que permitan la carga dinámica de
los componentes descriptos en el archivo “.glade” del proyecto.
4. Implementar, en algún módulo de la aplicación, las funciones necesarias que traten los
eventos que se desean capturar sobre la interfaz del usuario. Los nombres de las funciones
deben coincidir con los de las asociaciones descriptas en el archivo del proyecto Glade.
Repositorios de datos
Para el almacenamiento de la mayoría de los datos que maneja la aplicación, como las
propiedades de los proyectos y los datos de configuración de los equipos, se utilizan archivos en
formato XML. Este formato brinda las siguientes ventajas: la información se almacena en texto
plano en forma estructural y siguiendo un estándar definido lo cual facilita su creación y edición
independientemente a la aplicación, permite la integrabilidad casi con cualquier sistema de la
actualidad, los mecanismos de recuperación de la información también son estándares existiendo
bibliotecas en todos los lenguajes que los implementan. En este punto cabe aclarar que no se utiliza
un motor de bases de datos relacional por las siguientes razones:
● la mayoría de los datos que maneja la aplicación deben ser configurables por el usuario a
través de la interfaz gráfica y también desde archivos de texto plano (por ejemplo archivos
XML).
● los datos que surgen de las ejecuciones de los procesos de adquisición también deben ser
almacenados en archivos de texto plano, ya conforman una entrada directa a los sistemas de
pos procesamiento y análisis numérico.
● el volumen de datos que maneja la aplicación no es importante y los diferentes conjuntos de
datos que manejan los distintos componentes no requieren de un manejo de relaciones
demasiado complejo.
Los datos adquiridos durante las mediciones se almacenan en archivos del estilo csv (valores
separados por comas), debido a que este tipo de formato estándar puede ser recuperado por la
mayoría de los sistemas de análisis de datos numéricos permitiendo así la integrabilidad con este
sistema. Además, al igual que los archivos XML, son archivos de texto plano por lo tanto su
creación y edición se realiza con cualquier editor de texto.
Para que el control y monitoreo real de los resultados de los ensayos de resistividad puedan
realizarse eficientemente es necesario que la aplicación administre más de un hilo de ejecución
(thread). En principio la aplicación maneja cuatro threads independientes:
– el que maneja el bucle de eventos de usuario sobre la interfaz gráfica de la aplicación y se
encarga de actualizar la misma.
– el que implementa el proceso de adquisición de los datos provenientes de los instrumentos de
medición y almacena esos datos de forma tal que sean accesibles al resto de la aplicación.
– el que actualiza la interfaz de usuario en base a dichos datos adquiridos. Este thread es necesario
para que el usuario pueda seguir interactuando con la aplicación mientras el proceso de
adquisición está activo y además evita que los tiempos de las tareas de actualización de la
interfaz de usuario influyan en los tiempos que se maneja el proceso de adquisición.
– el que almacena, cada cierto intervalo de tiempo, todos los datos que la aplicación mantiene en
memoria, garantizando la recuperación de los mismos ante posibles fallas del sistema. Esta
funcionalidad se encapsula en otro thread para que no interfiera en la eficiencia de las funciones
llevadas a cabo por los otros threads mencionados.
Los cuatro threads trabajan sobre información en común, con lo cual es necesario un
mecanismo de control de concurrencia que permita evitar conflictos durante la lectura y
actualización de los datos. Como mecanismo de control se utiliza en este caso el concepto de
semáforos.
Para la creación de distintos threads y semáforos que permitan llevar a cabo el control de
concurrencia se utiliza la biblioteca gthread-2.0 la cual es parte de GLib y provee una interfaz
portable sobre la biblioteca de threads C nativa dependiente de la plataforma.
SourceForge
Diagrama de módulos
En la Figura 1 se puede visualizar todo el conjunto de módulos y sus interrelaciones más las
dependencias para con las bibliotecas más destacadas en las cuales se apoyan.
Figura 1: Módulos de cada componente de la aplicación RHOcker
Soluciones de software de aplicación existentes
En esta sección se realiza un análisis sencillo de las soluciones disponibles que pudieran
acercarse al requerimiento esencial del IFIMAT, relacionado al control y monitoreo de instrumentos
programables. Se analizan diversos proyectos de distintas características incluyendo además la
solución propuesta en el presente trabajo. De cada software analizado se analizan las siguientes
características: compatibilidad con los equipos presentes en el instituto, plataformas, licencias,
gestión de los controladores, conectividad, etc.
LabVIEW
Es una herramienta gráfica que permite la realización de pruebas, control y diseño de los
procesos de medición mediante un lenguaje de programación gráfico denominado G.
El lenguaje G permite generar un circuito virtual que representa al circuito real que ejecutará
las mediciones, y dentro de las herramientas disponibles se incluyen controles, indicadores y
funciones de medición. Es muy útil para simular mediciones y luego implementarlas.
El proyecto fue creado por National Instruments en 1976 para funcionar sobre plataformas
MAC, siendo su fecha de lanzamiento al mercado por primera vez en 1986. Hoy en día se encuentra
disponible para las plataformas Windows, UNIX, MAC y Linux.
Además de utilizarse para adquisición y análisis matemático de los datos obtenidos y la
comunicación o control de instrumentos de cualquier fabricante, provee una interfaz para diseño
electrónico y aplicaciones en el campo de la robótica.
Las ventajas que se destacan son las siguientes:
– El software es patrocinado por un fabricante de instrumentos y placas de captura
como National Instruments, con lo cual proporciona un producto maduro en su
desarrollo.
– Es compatible con los buses de comunicación mas populares.
– Además de los módulos de captura posee módulos para el análisis matemático de los
datos.
Entre las desventajas, podemos resaltar:
– Alto costo de las licencias (desde u$s 1200).
– Imposibilidad de adaptación para procesos de adquisición más específicos como es
el caso de IFIMAT.
– Las gráficas que genera el software no concuerdan con las necesarias en los ensayos
de resistividad eléctrica del instituto.
– Debido a la cantidad de opciones que provee hace compleja la iniciación de una
medición, teniendo en cuenta que se debe programar la medición que se quiere
realizar.
– National Instruments lo construyó pensando en sus instrumentos, podría haber
problemas de compatibilidad con otros instrumentos ya que requiere de
controladores adicionales.
– Los controladores deben ser específicos para LabView.
– Todo en Labview se basa en la programación visual o gráfica, con lo cual el usuario
se ve obligado a poseer conocimiento sobre la configuración de la placa de
adquisición de datos y los instrumentos.
Delaytor
Software diseñado para un instrumento especifico, sin ser compatible con los instrumentos
del IFIMAT. Simplemente se encarga de obtener la medición de un determinado instrumento sin
posibilidad de generar gráficas ni programar las mediciones. Corre únicamente bajo plataforma
Windows y su distribución es en modo Freeware.
FreeVIEW
FreeVIEW es un software de control, monitoreo y captura de datos de instrumentos GPIB,
especialmente indicado para instrumentos de medición de sonido. Tiene la posibilidad de generar
gráficos, pero optimizados para el tipo de medición mencionado. Además solo está disponible para
instrumentos del fabricante National Instruments. Es un software propietario y funciona únicamente
en la plataforma Windows.
RHOcker
Corresponde al desarrollo descripto en el presente trabajo. El objetivo principal consiste en
el control y monitoreo de ensayos de resistometría eléctrica. Para llevar a cabo ese objetivo soporta
la comunicación con un equipo GPIB completo que incluye una placa capturadora de datos, un
multímetro, un nanovoltímetro y una fuente de corriente.
Desde la aplicación se pueden crear, iniciar, pausar y detener un proceso de adquisición de
datos para el contexto mencionado. Además permite visualizar por pantalla en tiempo real todas las
mediciones en forma textual y en forma gráfica se puede observar y analizar el comportamiento de
los datos adquiridos y las fórmulas calculadas en base a los mismos. Puede seleccionarse hasta tres
tipos de gráficas según las variables que estas incluyan: resistencia vs tiempo, resistencia vs
temperatura y temperatura vs tiempo.
En la tabla 2 se puede observar la comparación de RHOcker con los proyectos antes
mencionados. Las referencias para dicha tabla son las siguientes:
– Licencia: licencia con la que se distribuye el software.
– Gráficos: capacidad para generar gráficas de las mediciones.
– Gráficos auto ajustables: capacidad de que los gráficos sean auto-ajustables conforme
a las mediciones obtenidas.
– Captura de datos: capacidad para la captura de datos desde un dispositivo.
– Plataformas: plataformas en las que se puede ejecutar el software.
– Gestión de controladores: capacidad de gestionar, a través de sus controladores, los
instrumentos instalados en el sistema.
– Conexión USB: capacidad de conexión a través de una placa de adquisición de datos
USB.
– Post-procesamiento: herramientas de post-procesamiento de los datos obtenidos.
Tabla 2 - Comparación de soluciones de medición y monitoreo para ensayos
-Licencia
-Funcionalidad total requerida
-Simplicidad de manejo
-Facilidad de instalación
Para eso se hizo un análisis de las mejores soluciones disponibles para GNU/Linux y aquí los
resultados:
Scigraphica
http://scigraphica.sourceforge.net
Ventajas
-Licencia GNU GPL
-Genera gráficas en 2 y tres dimensiones
-Importa datos numéricos
Desventajas
-No exporta las gráficas a imágenes
-No contiene la capacidad de ejecutar funciones de calculo diferencial e integral
-No se encuentra en los repositorios oficiales de la distribución GNU-Linux Debian
-La ultima versión publicada data de 2005, por lo que ha quedado bastante relegada por productos
mas modernos.
RlPlot
http://rlplot.sourceforge.net
Ventajas
-Licencia GNU GPL
-Genera gráficas de gran calidad
-Esta disponible en los repositorios oficiales de la distribución GNU-Linux Debian
Desventajas
-No exporta las gráficas a imágenes
-No contiene la capacidad de ejecutar funciones de calculo diferencial e integral
-No tiene la funcionalidad de importar datos numéricos
KmPlot
http://edu.kde.org/kmplot
Ventajas
-Forma parte del entorno de escritorio KDE y tiene muchos años de desarrollo.
-Se encuentra disponible en la distribución GNU-Linux Debian
-Tiene la capacidad de generar gráficas de gran calidad y poder exportarlas fácilmente a imágenes
-Tiene la posibilidad de aplicar a las gráficas la funciones de calculo diferencial e integral
Desventajas
-La sintaxis de las funciones a la hora de generar las gráficas puede resultar complicada
-No tiene la funcionalidad de importar datos numéricos
LabPlot
http://labplot.sourceforge.net/
Ventajas
-Genera gráficas de funciones de una forma muy simple
-Puede importar datos numéricos
-Tiene la funcionalidad de exportar las gráficas a imágenes
-Tiene la posibilidad de aplicar a las gráficas la funciones de calculo diferencial e integral
-Se encuentra disponible en la distribución GNU/Linux Debian
Desventajas
-En los repositorios oficiales de GNU/Linux Debian no se encuentra la ultima versión que contiene
varios errores de la interface solucionados.
Por estas razones se eligió a LabPlot como la mejor alternativa, ya que cumple con todos los
requerimientos necesarios para el post-procesamiento de los datos, incluso es muy simple de utilizar
para todas las opciones que posee, como la importación de los datos numéricos y ejecución de las
funciones de calculo, ya que con un breve conjunto de clicks ya se obtienen los resultados
necesarios.
En el apéndice 4 se anexa un breve manual de uso de la aplicación con todas las funcionalidades
requeridas para el post procesamiento de los datos obtenidos de la medición.
Conclusiones
El trabajo desarrollado arroja varias conclusiones que tienen que ver con varios aspectos: con el
proyecto en si mismo, con el aporte a la comunidad universitaria, con el aporte a la comunidad de
software libre, además de los resultados obtenidos de la colaboración interdisciplinaria, el avance
que se logró con el software construido y por ultimo las grandes posibilidades de extender el
proyecto.
Este proyecto permitió recorrer todas las fases de desarrollo de un proyecto completo:
-Captura de requerimientos.
-Análisis.
-Investigación.
-Diseño de la solución.
-Implementación de la solución.
-Testeos y documentación.
Por estas razones se completa un ciclo completo de un proyecto completo de ingeniería de sistemas,
desde las reuniones iniciales con los integrantes del IFIMAT, pasando por la captura completa de
los requerimientos, el análisis y la investigación que hubo que realizar para resolver el problema
planteado, como así también el diseño y la implementación de la solución propuesta.
Algunos aspectos con respecto a la forma en que se desarrollo el trabajo tienen que ver con la solida
comunicación y el trabajo interdisciplinario logrado entre la Facultad de Ciencias Exactas, contando
a los integrantes de este proyecto como así el director elegido, con los integrantes del IFIMAT, ya
que desde el primer momento la predisposición y la voluntad ofrendada fueron fundamentales para
el desarrollo del proyecto.
Con respecto al aporte al IFIMAT, también debe considerarse la utilidad que se le dará al software
construido. Las investigaciones que realizan en el instituto constituyen un aporte muy importante a
la comunidad tandilense, sobre todo en sectores fabriles donde se solicitan estudios de materiales y
su reacción a la electricidad y la temperatura, para luego ser utilizados en productos que se
comercializan aquí y se exportan a varios lugares del mundo. Por esta razón es fundamental que el
IFIMAT contenga todas las herramientas posibles para obtener mejores resultados en las medición
y facilitar el estudio de los materiales.
El aporte al instituto no termina con la facilidad de mejorar las investigaciones, sino también con la
posibilidad que genera este proyecto de fomentar otro tipo de investigaciones relacionadas al
estudio de materiales y con el uso de los instrumentos de medición y su interacción con la PC.
El aporte a la comunidad del software libre es otra de las conclusiones importantes, además de la
necesidad de fomentar el uso y el desarrollo de este tipo de proyectos, que garantiza el acceso al
código fuente del software desarrollado, como así también facilita la redistribución y la
colaboración mutua entre desarrolladores en cualquier parte del mundo. Desde la facultad de
Ciencias Exactas y el IFIMAT es importante que se promocionen y se fomente la implementación
de proyectos de esta índole. Este proyecto desde sus orígenes fue realizado con software libre y
también todo lo relacionado con la implementación, testeos, entorno de desarrollo y software de
base es software libre.
Por ultimo, se enumeran las posibles extensiones que se pueden realizar al software construido y a
los módulos que lo componen. El desarrollo de toda la aplicación se mantuvo ordenado de tal forma
que sea bastante cómodo realizar pequeños cambios y modificaciones para agregar, quitar o
modificar funcionalidad. Las posibles extensiones podrían utilizarse para otro proyecto de trabajo
final de ingeniería de sistemas o proyecto de investigación del IFIMAT.
-Configuración del controlador para utilizar una placa capturadora mediante el puerto USB:
Muchos fabricantes de instrumentos y placas capturadoras ya están ofreciendo en el mercado una
evolución de placas capturadoras de datos a través del puerto USB. Tener una placa USB permite
una flexibilidad a la hora de utilizar la PC, ya que se podría usar cualquier PC portátil o portar la
captura de datos a cualquier PC. La idea de la portabilidad hacia una placa USB es configurar o
recompilar el controlador instalado para que la reconozca y funcione de la misma manera que una
placa PCI.
-Gestión de dispositivos:
La gestión de dispositivos desde la aplicación actualmente no se realiza, cada vez que se desee
agregar un dispositivo de medición debe configurarse desde el controlador instalado en la
plataforma y además no se puede agregar un conjunto de comandos SCPI para poder realizar otro
tipo de mediciones que no solamente estén relacionadas a la resistividad.
-Portabilidad de plataforma:
La portabilidad del sistema a otra plataforma podría ser una extensión del trabajo realizado, incluso
podría programarse otro sistema que sea multiplataforma y que gestionando los controladores como
se planteo en el punto anterior pudiera funcionar sin problemas en varias plataformas de sistemas
operativos.