Вы находитесь на странице: 1из 10

Prctica 5 de Informtica Industrial

Entrada digital con la tarjeta DAQ NI-USB 6008. l objetivo de la prctica es crear un programa que configure y programe la tarjeta de adquisicin de datos NI USB-6008 para que lea el valor de una de sus entradas digitales. ecordemos que cualquier proceso industrial est formado por: La tarjeta de adquisicin de datos (NI USB-6008 en nuestro caso), los diferentes sensores y actuadores (temperatura, presin, rels, etc..) y por ltimo por la aplicacin informtica que controlar todo el proceso (este ser nuestro trabajo). ara facilitar la realizacin de las prcticas, los tcnicos de laboratorio de la Universidad Politcnica de Valencia han diseado una placa que conecta directamente las entradas y salidas de la tarjeta NI USB-6008 a los distintos componentes (sensores) que van a utilizarse en las prcticas de la asignatura. n la figura 1 puede verse esta placa, en la parte posterior est soldada la tarjeta de adquisicin de datos NI USB-6008 y en la parte frontal hay tres grupos de componentes. En primer lugar hay un conector de tres pines que est preparado para recibir un sensor de temperatura (puede verse montado en la figura). Justo al lado, hay dos pulsadores que se utilizarn para simular las entradas digitales y dos leds que se utilizarn para simular las salidas digitales. En caso de disponer slo de la tarjeta NI USB-6008

R P

los alumnos pueden montar los componentes por separado sobre una placa de prototipos. De todos modos esta placa facilita el trabajo ya que hace innecesario el tiempo de montaje de los componentes. En la vida real las seales digitales las generan los sensores, pero en las prcticas utilizamos los pulsadores para simularlas. Cuando se suelta/presiona el pulsador, se est enviando una seal lgica (0/1) a la entrada de la tarjeta. En la vida real un ejemplo podra ser un detector de rebose de un depsito de lquido. ara realizar la prctica necesitamos un ordenador PC Compatible, el entorno de desarrollo C++ Builder, la tarjeta de adquisicin de datos NI USB-6008, un pulsador/interruptor, una resistencia (2K2), una regleta y un destornillador . l objetivo principal del programa es leer el estado de una de las entradas digitales de la tarjeta. Para ello vamos a utilizar un pulsador que va a simular el funcionamiento del sensor digital de rebose del depsito de lquidos. Cuando se presione el pulsador, se aplicar una seal lgica (0) en una de las entradas digitales de la tarjeta NI USB-6008 (entradas compatibles TTL). La configuracin del montaje puede verse en la siguiente figura:

0 (0V) = Hay rebose. 1 (5V) = No hay rebose.

Figura 1. Placa utilizada con los componentes.

Figura 2. Esquema de conexin de los pulsadores.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 1

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. n el esquema de la figura 2 puedes ver que el sensor est conectado a la tarjeta por el puerto P1.0, que es el pin 0 del puerto 1. El sensor de rebose funciona del siguiente modo: cuando el interruptor est abierto, la alimentacin llega directamente al puerto de la tarjeta, es decir le llega un 1 lgico (+5V) y sto significa que no hay rebose. Cuando el interruptor est cerrado, el circuito se conecta a masa y entrega un 0 (0V) a la tarjeta por el puerto, sto significa que hay rebose. Cuando leamos desde el programa el valor del puerto de la tarjeta tendremos que mostrar en pantalla un mensaje u otro en funcin de este valor. En la siguiente figura podemos ver un esquema de como quedara el montaje de la prctica:

Figura 4. Un nuevo proyecto en Builder.

pulsador

regleta

R 2K2

n proyecto almacena toda la informacin necesaria para el programa que vamos a crear: cdigo, unidades, formularios, libreras, etc...Lo importante es guardar el proyecto antes de seguir. Primero crea una carpeta en tu PC donde guardars la informacin del proyecto. Para guardarlo, haz clic en "Archivo/Guardar proyecto" o "File/Save project" si trabajas con la versin en ingls (vase figura 5).

Figura 3. Conexin de los componentes a la tarjeta.

o siguiente que haremos es usar el entorno de programacin Borland C++ Builder. Al arrancarlo lo primero que vemos es el interfaz de usuario con las barras de herramientas y un formulario nuevo vaco. Si te fijas en la barra de ttulo de la aplicacin, pone "C++ Builder6 Project1", esto significa que se ha creado un proyecto (vase figura 4).

Figura 5. Guardando el proyecto.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 2

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. orland te preguntar dos cosas, primero el nombre de la unidad (vase figura 6) y despus el nombre del proyecto (vase figura 7). Por defecto Borland propone los nombres que puedes ver en la figura, pero vamos a cambiarlos, pondremos los nuevos que puedes ver en las figuras. Recuerda crear un directorio nuevo para almacenar todo el proyecto.

ara poder usar la tarjeta debemos incluir la librera NIDAQmx en el proyecto. Veamos como hacerlo. Accede al men "Vista/Organizador de proyectos" o "View/Project Manager" si trabajas con la versin en ingls (vase figura 8).

Cambia el nombre de la unidad UPrincipal

Figura 8 Abre el organizador de proyectos. Figura 6. Guarda la unidad del proyecto con otro nombre.

NOTA: Ten en cuenta que el nombre de las unidades y proyectos no admiten acentos.

n la siguiente ventana puedes ver todos los componentes del proyecto actual, haz clic con el botn derecho sobre el archivo ejecutable (Practica5.exe) y selecciona "Add" (vase figura 9).

Cambia el nombre del proyecto Practica6

Figura 7. Guardando el proyecto con otro nombre.

Figura 9. Aadiendo la librera al proyecto.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 3

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. l siguiente paso es buscar el archivo de librera y seleccionarlo (vase figura 10). Cambia el tipo de archivo a librera (flecha de abajo en la figura 10), de otro modo no podrs ver el archivo. Una vez seleccionado, acepta y Borland lo integrar en tu proyecto. Podrs verlo como un elemento nuevo en la lista que aparece en el organizador de proyectos (vase figura 11).

partir de este momento ya podemos utilizar cualquiera de las funciones que pone a nuestra disposicin la tarjeta de adquisicin NI USB-6008. Ahora vamos a disear la parte grfica de la aplicacin, vamos a incluir dos botones y una etiqueta. Veamos como hacerlo paso a paso. ero antes de nada copia los dos archivos de librera NIDAQmx.lib y NIDAQmx.h al directorio en el que has guardado el proyecto, no basta con aadirlo desde el gestor de proyectos, tiene que estar fsicamente en el mismo lugar que el programa. ara incluir los dos botones utiliza la herramienta botn de la barra de herramientas del compilador (vase figura 12). Haz clic en la herramienta botn una vez y haz clic en la posicin del formulario donde quieras situarlo, no te preocupes por la posicin, ms tarde podrs moverlo a otro lugar. Ya tenemos un botn.

P P

Figura 10. Selecciona el archico de librera NIDAQmx.lib

Comprueba desde el men View/Project Manager que la librera se ha aadido correctamente:

Figura 12. Herramienta aadir botn al formulario.

Figura 11. Librera aadida correctamente.

hora vamos a aadir un segundo botn. El procedimiento ser el mismo, utilizando la herramienta botn de la barra de herramientas. Sita el nuevo botn junto al creado anteriormente (vase figura 13). Tambin necesitaremos un lugar para que el programa nos muestre informacin, lo haremos con una etiqueta.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 4

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. a idea de cambiar el nombre es que tengan ms que ver con la funcin que les asignaremos en nuestro programa ms adelante y as aprenderemos ms sobre las propiedades de los objetos. Veamos con detalle como cambiar el nombre del primer botn y te quedar como ejercicio hacer lo mismo con el segundo botn y la etiqueta. l procedimiento es sencillo, primero haz clic sobre el botn para seleccionarlo (quedar resaltado con pequeos cuadrados en los extremos). Activa el "Inspector de Propiedades" (View/Object Inspector), para ver las propiedades del objeto. Busca la propiedad: "Name" y escribe: "BIniciar" (vase figura 15).

L E

Figura 13. Los dos botones ya insertados en el formulario.

hora vamos a aadir una etiqueta utilizando la herramienta etiqueta, es un icono con una "A" mayscula justo al lado del icono del botn. Haz clic en el icono etiqueta y haz clic en la zona del formulario donde quieras situar dicha etiqueta. Cuando lo hayas hecho tu formulario tendr tres elementos: dos botones y una etiqueta (vase figura 14).

Botn seleccionado

Figura 14. Los tres elementos situados en el formulario.

omo puedes ver nuestra aplicacin slo tiene terminada la parte grfica, no hay nada ms detrs, es decir, si ahora compilamos, lo nico que veremos ser una ventana con dos botones en los que podemos hacer clic pero no suceder absolutamente nada. No hay definido ningn cdigo que se active cuando alguno es pulsado. Tendremos que escribir el cdigo asociado a cada botn y tambin definir los mensajes que se mostrarn en la etiqueta, pero nos queda algo ms, te habrs dado cuenta que los botones y la etiqueta tienen nombres por defecto y nada significativos (Button1, Button2, Label1, etc..), mejor vamos a rebautizarlos.

Propiedades del botn

Figura 15. Cambiando el nombre al objeto botn.

hora al botn 2 ponle de nombre: "BLeerEstadoRebose" y a la etiqueta ponle de nombre: "LEstado". Nota: La propiedad "Name" es el nombre de pila para el objeto que aparecer en el cdigo. La propiedad "Caption" es tan slo un alias para mostrar en pantalla y que no ser utilizado en el cdigo.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 5

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. omo resultado del cambio de nombre, en el formulario podemos ver los tres objetos con los nuevos nombres. En este caso, no hemos cambiado la propiedad "Caption" y por ello en pantalla aparece el texto asignado en "Name", pero si has cambiado la propiedad "Caption", entonces el texto de tus botones no coincidir con la figura 16.

l cdigo copiado, son tres instrucciones, 'BIniciar->Enabled = false;' hace que el botn "BIniciar" se desactive (como cuando en Windows una opcin del men est en gris) para que no pueda pulsarse. Para ello se utiliza la propiedad "Enabled". Si quisiramos activar el botn habra que poner "true". La segunda instruccin: 'process_init();' llama a una funcin externa que se encarga de 'despertar' la tarjeta, inicializndola y comprobando que no haya errores. Esta funcin todava no la hemos copiado, veremos ms adelante como incluirla y donde. La tercera instruccin que se ejecutar es: 'BLeerEstadoRebose->Enabled = true;' que activa el segundo botn con la misma propiedad. hora copia el cdigo para el segundo botn. Es el mismo procedimiento, haz doble clic en el segundo botn y copia el cdigo que puedes ver detallado en la figura siguiente:

Figura 16. Puede verse los nuevos nombres de los objetos.

s momento de escribir la funcionalidad de cada botn. El primer botn "BIniciar" incluir una llamada a la funcin que inicia la tarjeta. Para asociar cdigo al botn, tan slo hay que hacer doble clic sobre el mismo, Borland abrir una nueva ventana en la que podrs copiar el cdigo necesario. Puedes verlo en la figura siguiente:

Copia este cdigo

Figura 18. Cdigo asociado al segundo botn.

Copia este cdigo

Figura 17. Cdigo asociado al primer botn "BIniciar".

uando haces doble clic en un botn para asociar cdigo, Borland slo muestra la cabecera de la funcin (puedes verla subrayada en las figuras 17 y 18) y las llaves que delimitan el lugar donde insertars el cdigo. Fjate bien en la cabecera, siempre aparece el nombre que le dimos al objeto (BIniciar, BLeerEstadoRebose) junto al evento que activa la funcin, en este caso 'Clic'.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 6

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. ecesitamos aadir una nueva unidad en nuestro programa. Las unidades permiten separar el cdigo, organizando las funciones por categoras. A grosso modo es como organizar un armario, las cosas pequeas en un sitio y las grandes en otro. Por ejemplo en el caso de un proyecto industrial, el programa tendr un mdulo en el que estarn las funciones que utilizan la tarjeta de adquisicin, otro mdulo para las funciones estadsticas, otro para las funciones del interfaz grfico, etc. Para crear un mdulo nuevo utiliza el men "File/New/Unit" (vase la figura 19).

n esta nueva unidad "process" vamos a copiar la funcin de inicializacin de la tarjeta "process_init()". Una unidad est formada por dos bloques. En nuestro caso, la cabecera es "process.h" y el cuerpo es "process.cpp". En la cabecera se copia la definicin de todas las funciones que se va a incluir y en el cuerpo se copia la funcin completa. El hecho de incluir slo la definicin en la cabecera sirve para dar publicidad a las dems unidades, es como anunciar en voz alta: "tengo estas funciones disponibles...", por eso es importante siempre definirlas en la cabecera. Si la funcin est escrita en el cuerpo pero se nos olvida 'anunciarla' en la cabecera, es como si no existiera, ningn mdulo podr verla. Suele ser un error habitual. az clic en la pestaa correspondiente a la unidad "process" (en la parte superior de la ventana de la figura 21) y haz clic en la cabecera "process.h" (en la parte inferior de la ventana) para incluir la definicin de la funcin. Puedes ver en la figura 21 que se ha incluido la definicin de la funcin 'void process_init(void)' y se ha definido dos variables para utilizar en el programa, una entera y un enumerado. Para que otras unidades puedan acceder a esta funcin hay que poner una instruccin en el resto de los mdulos, de este modo pueden rastrear funciones en otros mdulos: #include "process.h"

Figura 19. Creando una nueva unidad.

Cuando se crea una unidad, Borland le pone un nombre por defecto: Unit1, Unit2 (vase figura 20). Haz clic en la pestaa de la unidad y desde "File/Save" la puedes guardar y al mismo tiempo le pones el nombre: "process.cpp".

Partes de una unidad: - cabecera (.h) - cuerpo (.cpp)

Haz clic en la pestaa de la unidad Gurdala desde "File/Save"

Figura 20. Cambia el nombre de las nuevas unidades.

Figura 21. Una unidad: Cabecera y cuerpo.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 7

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. hora que ya est definida la funcin en el encabezado del mdulo: 'process.h' ya slo queda escribir el cdigo en el cuerpo del mdulo: 'process.cpp'. Haz clic en la pestaa del mdulo 'process' en la parte superior de la ventana y despus haz clic en el cuerpo del mdulo 'process.cpp' (parte inferior de la ventana). Escribe dentro este cdigo y evita incluir dos veces la instruccin que incluye el mdulo (#include "process.h"), ya que puede generar errores durante la compilacin. As debe quedar:
El nmero que aparezca en tu PC

Se utiliza el puerto 0

Esta funcin prepara la tarjeta NI USB-6008 para empezar a trabajar.

Esta funcin lee el sensor conectado al puerto 0 de la tarjeta.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 8

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. na vez que compiles el proyecto, si no hay errores, podrs ver la aplicacin funcionando en pantalla (vase figura 22). Si se produce algn error revisa bien la sintaxis del cdigo, los puntos y coma al final de las instrucciones, etc. Lo primero es iniciar la tarjeta, pulsa el botn 'BIniciar' para que la tarjeta se active. Si pulsas el botn 'BLeerEstadoRebose' antes de iniciar la tarjeta, el programa dar un error.

ste programa funciona comprobando el estado del sensor, pero el modo en el que lo hace es por consulta. Lo que quiere decir es que slo cuando el usuario hace clic en el botn 'BLeerEstadoRebose' el programa leer el sensor. Si el estado del sensor cambia y el usuario no ha pulsado el botn para leer, no suceder nada y ese evento no ser registrado. Ahora dejemos pulsado el botn de la tarjeta y hagamos clic en el botn 'BLeerEstadoRebose', podrs comprobar que cambia el mensaje en la pantalla. El cambio de color es una opcin que se deja planteada como ejercicio (vase figura 24).

Figura 22. Aplicacin funcionando.

o ideal es no permitir que se pulse el botn 'BLeerEstadoRebose' hasta que se haya pulsado el botn 'BIniciar'. Esto puedes hacerlo cambiando la propiedad 'Enabled' de este botn. En la figura 23 puedes ver esta propiedad. Se propone como ejercicio escribir el cdigo necesario para que inicialmente slo aparezca activado el botn 'BIniciar' y cuando se haya hecho clic en este botn, 'BLeerEstadoRebose' se active, desactivando 'BIniciar' de nuevo.

Figura 24. La aplicacin detecta el cambio del sensor.

l siguiente paso ser aadir un temporizador al programa. Lo que conseguimos con este dispositivo es que el programa compruebe el sensor automticamente a intervalos regulares. Es como una alarma que se dispara continuamente y ejecuta un fragmento de cdigo. El objeto "Timer" puedes encontrarlo en la barra de herramientas "System" (vase figura 25).

La propiedad se cambia: Form1->BIniciar->Enabled=false;

Figura 23. Desactivar un botn con la propiedad 'Enabled'.

Figura 25. Elemento "Timer" en la barra de herramientas.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 9

Prctica 5 de Informtica Industrial


Entrada digital con la tarjeta DAQ NI-USB 6008. hora lo que debemos hacer es insertar el objeto temporizador al formulario. Para ello primero activa la barra de herramientas 'System' y haz clic en el icono "Timer" (vase figura 25) y una vez hecho, haz clic de nuevo en cualquier lugar del formulario para insertar el temporizador. Podrs ver que aparece un pequeo relojito (vase figura 26). De momento no hace nada, debemos asociar una funcin a este temporizador para que sea de utilidad.

l siguiente paso ser asociar la funcin que ejecutar el temporizador. Es muy sencillo porque Borland lo hace casi todo por nosotros, slo hay que hacer doble clic en el icono del temporizador y se abrir una ventana en la que podrs escribir el cdigo (vase figura 28).

Figura 28. Asociando cdigo al temporizador.

Figura 26. Temporizador insertado en el formulario.

l temporizador hace que una determinada tarea se repita a intervalos de tiempo. Este tiempo lo decidimos nosotros. Para el caso del sensor, bastara con que se compruebe cada medio segundo, de modo, que tendr el valor 500 milisegundos (vase la figura 27).

n la figura anterior puedes ver que Borland C++ crea la definicin de la funcin y las llaves. Donde aparece la flecha naranja es donde hay que escribir el cdigo, que en este caso hace lo mismo que el botn "BLeerEstadoRebose". El programa leer sensor cuando el usuario haga clic en el botn (modo manual) y tambin cada medio segundo gracias al temporizador (modo automtico). Puedes ver cmo quedara el cdigo en la figura 29. Tambin he incluido el cdigo para cambiar el color de la etiqueta. Se propone como ejercicio que se pueda elegir entre modo manual y modo automtico.

Figura 27. Ajustando el valor del temporizador.

Figura 29. Cdigo asociado al temporizador.

Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 1

Вам также может понравиться