|
Pràctica guiada. Introducció al LabVIEW
Instrumentació Enginyeria Tècnica Telemàtica |
Durada: 1 sessió (2 hores)
Quan es parla d’instruments de mesura, és normal pensar en una carcassa rígida, en la que destaca la seva part frontal plena de botons, indicadors i altres tipus de controls. Darrera la part frontal estan les unions físiques d’aquests controls amb els circuits integrats i altres elements que processen els senyals d’entrada en funció de l’estat dels controls, i com a sortida mostren les corresponents dades en els visualitzadors del pannell frontal.
Un instrument virtual (VI) és un mòdul software que simula el pannell frontal d’un instrument i ajudat per elements hardware accessibles per l’ordenador (targes d’adquisició DAQ, instruments connectats via GPIB, VXI, RS-232) realitza un seguit de mesures com si es tractés d’un instrument real més complex.
La paraula LabVIEW està formada per les inicials de Laboratory Virtual Instrument Engineering Workbench. És un entorn gràfic pel desenvolupament d’aplicacions en el camp de la instrumentació, que permet desenvolupar instruments virtuals des de la captura de dades fins al control remot dels instruments. L’entorn de programació LabVIEW disposa de llibreries matemàtiques per a l’anàlisi de les dades, així com també, dels drivers de control dels instruments.
Un VI en l’entorn de programació visual LabVIEW consta de dues parts diferenciades: el Pannell Frontal (Front Panel) i el Diagrama de Blocs (Block Diagram). El pannell frontal és la interfície del programa amb l’usuari. En aquest pannell trobam representades totes les entrades i sortides del programa. Per analogia amb un instrument real, les entrades s’anomenen controls i les sortides indicadors. El diagrama de blocs és el codi de programació escrit en llenguatge visual, que implementa la funcionalitat de l’instrument. Els distints components del diagrama de blocs són els nodes del programa i la forma de connectar-se defineix el flux de dades entre nodes.
Per continuar la descripció de l’entorn de programació gràfica LabVIEW es recomana obrir el programa que es troba a INICIO/PROGRAMAS/Laboratori/National Instruments LabVIEW 6i i a la pantalla inicial (Figura 1) indica que es vol obrir un VI existent i seleccionar l’instrument virtual Tank Simulation.vi que es troba a la carpeta examples\apps\tankmntr.llb del directori d’instal·lació del LabVIEW. La Figura 2 mostra el pannell frontal i el diagrama de blocs que vos apareixerà en pantalla en obrir el VI indicat que permet la simulació d’un sistema de control d’un dipòsit.
Figura 1. Pannell d’entrada a l’aplicació LabVIEW
Figura 2. Pannell frontal i diagrama de blocs de l’instrument virtual Tank Simulation.vi
Aquesta és l’aparença d’un VI acabat, però per començar un programa haurem de seleccionar l’opció del pannell d’entrada New VI. A continuació es crearan dues finestres buides, una corresponent al pannell de control i l’altre al diagrama de blocs.
El disseny d’un programa es comença en el pannell frontal definint el tipus d’interfície que l’usuari veurà, és a dir, quines entrades i sortides tindrà el programa. Aquest procés es veurà millor durant la realització de la pràctica guiada descrita al següent apartat. A continuació es pretén descriure les principals eines i opcions disponibles en l’entorn.
Si ens situam sobre el pannell frontal, apareixeran dues paletes flotants. Una paleta d’eines que permet editar, modificar i depurar el VI, i una segona paleta de controls que serveix per a crear el pannell frontal (Figura 3). Si alguna d’aquestes paletes no són visibles es poden activar a les opcions show Tools palette o show Controls palette del menú window de la barra de menú superior. La paleta de funcions apareix si ens situam a la finestra del diagrama de blocs.
Figura 3. Paletes d’eines, controls i funcions.
Qualsevol dels controladors, indicadors i nodes del diagrama de blocs tenen múltiples opcions de funcionament que es poden activar o desactivar. Aquestes opcions són visibles depenent del tipus d’eina que tinguem activat. Una vegada seleccionada l’eina i l’element, amb el botó dret del ratolí apareix el menú de context amb les opcions.
Una vegada es tenen definits tots els controls i indicadors que l’instrument virtual ha d’utilitzar en el pannell frontal, es pot passar a la pantalla del diagrama de blocs per a realitzar les connexions dels mòduls i afegir altres blocs, tot indicant el flux que tindran les dades i el tractament que es realitzarà. En aquesta finestra es pot utilitzar la paleta d’eines per a crear les unions i/o modificar els diferents blocs. La figura 2 ens mostra un possible diagrama de blocs.
Una vegada creat el pannell frontal i el diagrama de blocs defineix el flux de dades que es farà servir així com els diferents tractaments que es faran sobre les dades el programa està llest per a ser executat. Existeixen vàries formes d’executar un programa en LabVIEW. Totes aquestes opcions d’execució es poden controlar a la barra de feines del diagrama de blocs (Figura 4).
Figura 4. Barra de feines del diagrama de blocs.
A continuació es descriuen les diferents opcions d’execució:
Execució del
programa. LabVIEW compilarà automàticament el programa si és necessari. Mentre
s’està en mode d’execució el botó anterior canvia d’aspecte i es transforma en
la següent imatge:
Execució contínua
fins que es pitja el botó de pausa o el programa acaba.
Botó per a finalitzar
l’execució del programa
Botó de pausa
Inici d’execució pas
a pas. Executa una estructura o un subVI i s’atura en el següent node
Executa el primer
node d’una estructura o subVI i s’atura abans d’executar el següent.
Finalitza l’execució
completa d’una estructura o subVI i s’atura.
Amb aquest botó es
pot activar l’opció d’executar el programa en mode “Highlight”. Aquest mode
d’execució permet veure una animació de com el flux de dades es mou durant
l’execució del VI.
Quan en la compilació d’un programa apareixen errors o quan un programa no realitzar les operacions que esperam, es poden utilitzar dues eines per a depurar el funcionament del programa: Probe i Breakpoint. La primera ens permet visualitzar el valor d’una dada mentre circula dins el diagrama de blocs d’un node al següent. La segona eina ens permet establir un punt d’interrupció en el programa. Ambdues les podem trobar a la paleta d’eines.
Creació d’un subVI
Un subVI té una funció similar en llenguatges de programació a les subrutines. Quan un conjunt d’operacions es preveu que es puguin utilitzar en diferents ocasions, es solen agrupar dins un subVI. Per tant, un subVI és un VI que és cridat dins un altre VI.
Un VI que és utilitzat com a subVI necessita una icona per a ser cridat des del diagrama de blocs. Tots els VI tenen un icona genèric que es pot editar i modificar. L’editor d’icones permet realitzar un dibuix representatiu del subVI i fitxar els terminals d’entrada i de sortida al subVI. Per definir els terminals d’entrada i sortida del subVI ens situarem sobre la icona (part superior dreta de la pantalla) i clicant el botó dret dues vegades apareixerà una icona del VI que podem retocar i ajustar al nostre gust. El subVI tindrà tants terminals d’entrada i de sortida com controls i indicadors tingui el VI que el defineix. Sobre la icona d’un subVI es pot obrir també la distribució de connectors, clicant dues vegades i seleccionant l’opció show connector. I apareixerà enlloc de la icona, la representació dels terminals d’entrada i sortida del subVI. El nombre de terminals d’entrada i sortida es poden modificar col·locant-nos sobre la representació dels terminals d’entrada i sortida, clicant el botó dret i escollint l’opció patterns.
Cada control s’ha d’assignar a un terminal d’entrada i cada indicador a un terminal de sortida. Aquesta assignació es realitza amb l’eina wire que apareix per defecte en la pantalla quan estam en l’opció show connector. Per a realitzar l’assignació ens situarem primer sobre un terminal i el seleccionarem, després ens col·locarem sobre un control o un indicador i també el seleccionarem. El control o indicador i el terminal quedaran units per una línia. Aquesta operació s’ha de repetir fins que tots els indicadors, controls i terminals estiguin connectats.
La nostra aplicació consisteix principalment en encendre 12 leds de forma correlativa, estant en cada moment únicament només un led encès i amb la possibilitat d’escollir començar per l’esquerra o per la dreta.
El primer que es farà serà dividir el problema en altres problemes més senzills o tasques i, per tant, més fàcils de programar. El pannell Frontal contarà amb els següents controls:
· Un array booleano amb 12 leds quadrats visibles i amb el nóm de “array booleà”.
· Un botó de stop rectangular.
· Un menú Ring de nom “menú” amb les següents opcions:
0: D’esquerra a dreta
1: De dreta a esquerra
· Un interruptor vertical.
Tasca 1:
Crear un array booleà de 12 posicions de forma que cada posició contingui l’estat d’un led (apagat =false, encès = true), i la posició del led dins l’array coincidirà amb l’índex. Per encendre tots els leds serà necessari repetir el procés dotze vegades (una activació per cada led). Per aconseguir aquesta tasca s’ha de crear el següent diagrama de blocs.
Tasca 2:
Com ens haurem adonat, els leds s’encenen tan ràpidament que és pràcticament impossible adonar-se de l’acció del VI. Per adonar-se millor, després d’encendre cada led introduirem un temps d’espera mitjançant l’estructura sequence. Adonar-se de la modificació introduïda al diagrama de blocs per aconseguir aquesta tasca.
Seqüència 0 de l’estructura que realitza la funció d’encendre i apagar els leds
Seqüència 1 de l’estructura que espera 100 ms abans de passar al següent led.
Tasca 3:
Podem apreciar com es van encenent els leds d’esquerra a dreta, però quan s’arriba al darrer led el programa s’atura i en aquesta pràctica ens interessa que el procés es repeteixi fins que sigui acabat mitjançant un botó de control que serveixi de stop. Per a fer això, utilitzarem l’estructura while i un control booleà (stop), que ens determinarà la condició de repetició. El diagrama de blocs de l’anterior tasca es modifica introduint nous elements com es pot veure a continuació:
Tasca 4:
Com a tasca final només ens queda que els leds es puguin encendre de dreta a esquerra i d’esquerra a dreta. Per aconseguir això introduirem un case. Dins del frame 0 hi situarem el moviment dels leds d’esquerra a dreta i al frame 1 hi posarem el moviment dels leds de dreta a esquerra. Al case hi connectarem el menú Ring del pannell frontal que ens determinarà cap a quin costat s’ha de fer el recorregut.
Frame 0 (Default) del case introduït
Frame 1 del case introduït
El disseny final del pannell Frontal podria ser el següent: