# LabVIEW

LabVIEW és una plataforma de programari, una eina gràfica de test, control i disseny mitjançant la programació de molt alt nivell. El llenguatge que utilitza s'anomena llenguatge G i cerca d'acostar la programació potent tant a usuaris experimentats com a novells, amb temps de desenvolupament molt reduïts.
Constitueix un revolucionari sistema de programació gràfica (veieu Fig. 1) per aplicacions que demanen un gran control, anàlisi i presentació de les dades. Amb LabVIEW es redueix el desenvolupament de les aplicacions i és molt intuïtiu i fàcil de fer servir i aprendre. LabView es diferencia d'altres llenguatges de programació com el Llenguatge C o BASIC per la seva programació gràfica i deixa enrere la feixuga programació de línies i més línies de codi.
Aquest programa va ser creat per National Instruments el 1976 per a funcionar amb màquines Apple Macintosh (MAC), les primeres que tenien una interfície gràfica. Sortí al mercat per primer cop el 1986. Actualment existeix per a plataformes Windows, UNIX, MAC i Linux (amb algunes diferències de programari respecte a Windows). La darrera versió és la LabVIEW 2017, que sortí el maig del 2017.
Els programes fets amb LabVIEW s'anomenen VI (Virtual Instrument), degut a l'ús inicial del programari pel control d'instruments.
NI LabVIEW és un entorn de programació gràfica que permet fàcilment controlar i adquirir dades des de qualsevol instrument a qualsevol bus. Es poden automatitzar mesures des de diversos dispositius, analitzar dades així que són adquirits i crear solucions personalitzades, tot en qüestió de minuts.

## Usos comuns

S'utilitza tant per enginyers com per científics per a tasques com ara:
* Adquisició i generació de dades (mitjançant les targetes d'adquisició de dades, que recullen els impulsos elèctrics enviats pels sensors)
* Control d'instruments de laboratori (interns al PC o externs)
* Automatització industrial amb PAC (Controlador d'Automatització Programable)
* Disseny de control: simulació, prototipatge ràpid, maquinari-en-el-llaç (HIL) i validació
* Control i supervisió de processos
* Disseny integrat de micros i xips
* Domòtica i xarxes de sensors sense fils
* Robòtica
* Visió artificial i control de moviment
* Educació (enginyers electrònics/telecomunicacions/informàtics...)
* Joguets com el Lego Mindstorms o el WeDo l'utilitzen, portant la programació gràfica a nens de totes les edats.
Els instruments antónoms tradicionals, tals com oscil·loscopis i generadors d'ona, són molt poderosos, cars i dissenyats per dur a terme una o més feines específiques definides pel fabricant.

## Característiques principals

La seva principal característica és la facilitat d'ús, ja que permet fer programes relativament complexes a persones amb poca experiència en el món de la programació. També cal dir que és vàlid per a programadors professionals. De fet hi ha milions d'enginyers i científics que l'utilitzen arreu del món en una infinitat d'aplicacions.
Degut a la seva programació gràfica, permet el desenvolupament de programari, per a programadors amb poca experiència, però també, permet fer grans desenvolupaments als programadors més experimentats en LabVIEW. La potència de l'entorn permet la creació d'aplicacions amb milers de VIs (equivalent a milions de pàgines de codi text) per a aplicacions complexes, programes d'automatitzacions de desenes de milers de punts d'entrades/sortides o més, etc. Existeix informació sobre bones pràctiques de programació per a optimitzar el rendiment i la qualitat de la programació. El LabView 7.0 introdueix un nou tipus de subVI anomenat VIs Express (Express VIS). Aquests són VIs interactius que tenen una configuració de caixa de diàleg que permet a l'usuari personalitzar la funcionalitat del VI Express. El VIS estàndard són VIs modulars i personalitzables mitjançant cablejat i funcions que són elements fonamentals d'operació de LabView.
Presenta facilitats per l'ús de:
* Interfícies de comunicacions:
** Port sèrie
** Port paral·lel
** GPIB
** PXI
** VXI
** TCP/IP, UDP, DataSocket
** IrDA (infraroig)
** Bluetooth i WiFi
** USB
** OPC...
* Capacitat d'interaccionar amb altres aplicacions:
** dll
** ActiveX
** Matlab i Simulink
** Conjunts de .NET
** Mathematica, Autocad, ...
* Eines gràfiques i textuals per al processament digital de senyals.
* Visualització i comandament de gràfiques amb dades dinàmiques, de forma continuada.
* Adquisició i tractament d'imatges.
* Control de moviment (i combinat amb tot ho anterior).
* Temps Real estricte.
* Programació de FPGAs, processador de senyals digitals i qualsevol microprocessador de 32 bits i algun de 16 bits.
* Sincronització entre dispositius.

## Programació amb LabVIEW

En ser una eina gràfica de programació, els programes no s'escriuen, sinó que es dibuixen.
Com s'ha dit és una eina gràfica de programació, això significa que els programes no s'escriuen, sinó que es dibuixen, facilitant la seva comprensió. Al tenir ja pre-dissenyats una gran quantitat de blocs, se li facilita a l'usuari la creació del projecte, amb la qual cosa en comptes d'estar una gran quantitat de temps a programar un dispositiu / bloc, se li permet invertir molt menys temps i dedicar - una mica més en la interfície gràfica i la interacció amb l'usuari final. Cada VI consta de dues parts diferenciades:
* Panell Frontal: El Panell Frontal és la interfície amb l'usuari, la utilitzem per interaccionar amb l'usuari quan el programa s'està executant. Els usuaris podran observar les dades del programa actualitzades en temps real (com van fluint les dades, un exemple seria una calculadora, on tu li poses les entrades, i et posa el resultat a la sortida). En aquesta interfície es defineixen els controls (els fem servir com a entrades, poden ser botons, marcadors, etc.) i indicadors (els fem servir com sortides, poden ser gràfiques...).
* Diagrama de Blocs: és el programa pròpiament dit, on es defineix la seva funcionalitat, aquí es col·loquen icones que realitzen una determinada funció i s'interconnecten (el codi que controla el programa. sol haver una tercera part icona / connector que són els mitjans utilitzats per a connectar un VI amb altres VIs.
Al panell frontal, trobarem tota mena de controls o indicadors, on cada un d'aquests elements té assignat en el diagrama de blocs una terminal, és a dir l'usuari podrà dissenyar un projecte en el panell frontal amb controls i indicadors, on aquests elements seran les entrades i sortides que interaccionaran amb la terminal del VI. Podem observar en el diagrama de blocs, tots els valors dels controls i Idice, com van fluint entre ells quan s'està executant un programa VI.

## Programació concurrent i seqüencial

L'eina està dissenyada per a la programació concurrent, permetent un cop compilat executant tot el que es pot començant per les entrades fins que es necessita esperar que la resta de processos acabi. Això facilita molt la tasca de programació per a processadors multinucli. Per altra banda, també és possible afegir blocs de codi, els quals s'executen seqüencialment, per a fer tasques específiques, tot i que no és el mètode recomanat de treball. Gràcies a aquest sistema podem combinar la programació gràfica i l'escrita, mantenint l'execució concurrent del programa excepte dins les caixes de codi seqüencial.

## Beneficis

Un dels beneficis de LabVIEW respecte altres entorns de desenvolupament és el gran suport per a l'accés al maquinari d'instrumentació. Els Controladors de dispositius i les capes d'abstracció per a molts tipus diferents d'instruments i els busos s'inclouen o es troben disponibles per a la seva inclusió. Aquests es presenten com a nodes gràfics. Les capes d'abstracció ofereixen interfícies de programari estàndard per comunicar-se amb dispositius de maquinari.
Un altre benefici molt important a tenir en compte és la seva facilitat d'aprenentatge. Degut al seu llenguatge G de programació, labView té una corba d'aprenentatge molt poc pronunciada. Això fa que qualsevol persona pugui començar a fer feina productiva en poc temps, minimitzant el temps d'aprenentatge.
Un dels grans beneficis són les seves llibreries, ja que LV té una gran quantitat de llibreries per l'adquisició de dades, generació de senyals, eines matemàtiques, eines estadístiques, condicionament de senyals, anàlisi, etc., juntament amb nombrosos elements de la interfície gràfica que són proporcionats en diferents opcions de diferents "packages". El nombre de blocs de matemàtiques avançades per a funcions com ara la integració, filtres i altres funcions especialitzades en general associades amb la captura de dades dels sensors hardware és immens.
Un altre dels molts beneficis del LabVIEW, és la reutilització de codi. El caràcter modular del codi de LabVIEW permet reutilitzar el codi sense modificacions, ja que si els tipus de dada d'entrada i sortida són compatibles, dos sub VIs són intercanviables.

## Crítiques

LabVIEW és un programari propietari producte de la National Instruments. A diferència dels llenguatges de programació comuns, com el C o FORTRAN, LabVIEW no és controlat per un comitè d'estàndards com ara l'ANSI.

### Llicències

A partir de la versió 8, totes les instal·lacions de LabVIEW en equips amb Windows requereix que els clients de National Instruments es posin en contacte per Internet o per telèfon per "activar" el producte. Els usuaris de Macintosh i Linux no estan subjectes a aquest requisit.
La construcció d'una aplicació independent amb LabVIEW requereix el component Application Builder que s'inclou amb el "Sistema de Desenvolupament Professional", sinó que requereix una compra per separat si s'usa el "Paquet bàsic" o el "Sistema de desenvolupament Complet"

## Temps d'execució

Executables compilats produïts pel Generador d'aplicacions no són veritablement independents, ja que ells també requereixen que el motor del LabVIEW estigui instal·lat en qualsevol equip on l'usuari executi l'aplicació. L'ús dels controls estàndard requereixen una biblioteca de temps d'execució per a qualsevol llenguatge i molts sistemes operatius ja subministren les llibreries necessàries per als llenguatges comuns, com ara C. No obstant això, la biblioteca de temps d'execució requerida per LabVIEW no es subministra amb qualsevol sistema operatiu i cal instal·lar-la específicament per l'administrador o l'usuari. Aquest requisit pot causar problemes si una aplicació es distribueix a un usuari que pot estar preparat per executar l'aplicació, però no té la inclinació o el permís per instal·lar arxius addicionals en el sistema d'acollida abans d'executar el fitxer executable.

### Copyright

D'acord amb el contracte de llicència de National Instruments un executable construït amb LabVIEW ha de contenir una nota indicant que el programari està escrit en LabVIEW.
Hi ha cert debat sobre si LabVIEW és realment un llenguatge de programació de propòsit general (o en alguns casos si és realment un llenguatge de programació), enfront d'un entorn de desenvolupament d'aplicacions específiques per a la mesura i automatització Els crítics assenyalen la manca de característiques comunes a la majoria d'altres llenguatges de programació, com ara la inclusió de característiques orientades a objectes (afegit a la 8.20) o fins a la versió 2009 la falta d'un mètode natiu per fer recursivitat.

## Altres alternatives

El LabVIEW es pot utilitzar per a crear molts tipus diferents de programes, i està orientat a tot tipus d'aplicacions. De fet, es parla que el LabVIEW es troba com envoltant els altres llenguatges, pel que es fa molt difícil dir que existeixin alternatives comparables. Si baixem al nivell de programació, les alternatives podrien anar des de llenguatges textuals com el C, C++, Visual Basic o VHDL, fins a altres eines gràfiques com el HP-VEE (ara Agilent-VEE), etc.
LabVIEW va ser desenvolupat el 1986 per al Macintosh, El Macintosh era llavors l'únic ordinador que tenia una interfície gràfica d'usuari. La primera aplicació va ser per LabVIEW per automatitzar els mesuraments, assegurant una comunicació simple i bona relació entre l'equip i els instruments. Atès que el codi sigui gràfica, però no amb els enginyers de manera de pensar, és a dir, (bloc) diagrames. Llarg dels anys han estat nombroses addicions al programari, incloent suport per a diversos sistemes operatius. També hi ha una àmplia gamma d'aplicacions, incloent el reconeixement d'imatge, els càlculs matemàtics i simulacions, control de processos i controladors en temps real. En la versió 7, és possible utilitzar la mà PDA's d'escriptura, i des de la versió 7.1 per als sistemes integrats, com ara FPGA's i 32-bit CPU's.
També s'utilitzen las funcions de LabWindows/CVI les que conté el Simulink que és un llenguatge de programació desenvolupat per National Instruments que junt amb el LabVIEW pots crear un ambient desenvolupat optimitzat per l'adquisició, anàlisi i presentació de dades en ANSI C, la qual cosa incrementa la productivitat d'enginyers i científics.
Els enginyers i científics també utilitzen aquesta compatibilitat amb LabWindows/CVI per desenvolupar aplicacions d'alt perfomance, en àrees de manufactura, militars, aeroespacials i telecomunicacions.
Els processos s'executen en paral·lel de LabVIEW. Quan diversos processos en paral·lel, s'encarregarà de totes les dades en el seu propi ritme. Per a la transferència de dades entre els diferents processos de diferents mètodes de sincronització elaborat, que tots tenen les seves pròpies avantatges i desavantatges. Aquests mètodes es poden utilitzar juntament amb els altres, però és preferible limitar el nombre de mètodes.

## Història

Va ser en 1986 que la primera versió de LabVIEW es realitza sobre Macintosh. Es continua un treball incessant per afegir funcionalitats:
* 1986: LabVIEW 1.0, primera versió en Mac OS
* 1990: LabVIEW 2.0, màxim aprofitament dels resultats
* 1992: LabVIEW 2.5, primera versió en Windows 3.1 i Solaris
* 1993: LabVIEW 3.0
* 1994: LabVIEW 3.0.1, primera versió en Windows NT
* 1994: LabVIEW 3.1
* 1995: LabVIEW 3.1.1, integració de l'Application Builder (creació d'arxius executables)
* 1996: LabVIEW 4.0
* 1997: LabVIEW 4.1
* 1998: LabVIEW 5.0, multitasca, contenidors ActiveX, assistent per a l'adquisició de dada (targetes d'adquisició DAQ) i assistent per al control d'instruments
* 1999: LabVIEW 5.1, primera versió per a Linux, primera versió de LabVIEW RT
* 2000: LabVIEW 6.0, controls gràfics en 3D, referències de controls
* 2001: LabVIEW 6.1, millorament i correccions, primera versió en Palm OS
* 2003: LabVIEW 7.0, VI Express, primera versió en Windows Mobile* 2006 :
* 2004: LabVIEW 7.1, traducció en francès, alemany i japonesos
* 2005: LabVIEW 8.0, Projec
* 2006: LabVIEW 8.20, Programació orientada a objectes
* 2007: LabVIEW 8.5, primera versió del *toolkit FPGA i del *toolkit Statechart
* 2008: LabVIEW 8.6, neteja automàtica dels diagrames. Aquest any també va ser utilitzat per controlar el LHC, l'accelerador de partícules més gran construït fins ara.
* 2009: LabVIEW 2009, suport arquitectures 32/64 bits, MathScript RT, Orientació a Objectes en LabVIEW RT/FPGA,SSL,Nous Controls de visualització de dades en 2D i 3D, Creació de muntatges .NET, Eines de rèplica de sistemes i VIs PDE (Equació Diferencial Parcial)
* 2010: LabVIEW 2010, - Combinació d'instruccions, optimitzacions de codi, streaming de dades, guardar VIs sense codi compilat, SubVI inline (reducció de crides), exportació de dades de gràfics a Excel, configuració de hardware per web, empaquetament de llibreries, cerca i instal·lació de controladors d'instruments.
- Salt de fils. - Reemplaçament escalar de conjunts. - Propagació condicional. - Eliminació del "Tail Call". - Re-associació d'expressions. - Moviment de la corba de codi invariable. - Corba immutable i índex de separació. - Simplificació de variables d'inducció. - Corba de desenrotlla. - Eliminació de codi mort. - Propagació de constants condicionals disperses. La miscel·lània tecnològica integrada a l'edició 2010 composta majoritàriament per DFIR i LLVM subministra millores d'acompliment mitjançant un esquema d'optimització. Això fa del LabVIEW 2010 un sistema més ràpid els nivells d'eficiència van des del 20% al 200% depenent de l'aplicació. Fins i tot si es tracta de controls de temps real, els beneficis d'acord amb els detalls tècnics de la companyia es poden administrar des del compilador.

## Referències

* ↑ «Product Activation FAQ». National Instruments.
* ↑ «Building a Stand-Alone Application». National Instruments.
* ↑ Llicència del Labview PDF
* ↑ «Is LabVIEW a general purpose programming language?». Arxivat de l'original el 2011-03-10. [Consulta: 27 febrer 2011].

## Vegeu també

* Electrònica
* Llenguatge de programació
* Labwindows

## Enllaços externs

* National Instruments Spain