Академический Документы
Профессиональный Документы
Культура Документы
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:
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 1
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).
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).
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 2
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).
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).
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 3
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
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
L E
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
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.
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
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:
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:
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
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"
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".
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 7
Se utiliza el puerto 0
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 8
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).
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.
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).
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 9
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).
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.
Los profesores de Informtica Industrial Universidad Politecnica de Valencia DISCA ETSID v 1.1 - erratas a: lescolar@disca.upv.es Pgina 1