LabVIEW

LabVIEW (Laboratory Virtual Instrument Engineering Workbench) on ettevõtte National Instruments (NI) graafiline programmeerimiskeskkond ja keel. LabVIEW võimaldab luua programme testimiseks, mõõtmiseks, andmehõiveks, aparaatide kontrolliks, mõõtmiste analüüsiks, tulemuste kujutamiseks – aruannete genereerimiseks, modelleerimiseks, manussüsteemide programmeerimiseks ja elektroonikaskeemide joonistamiseks. 

LabVIEW on tarkvarapakett, mis pakub kasutajatele vahendeid, et lahendada tänapäeva mõõteseadmete programmeerimise probleeme ning võimaldab suutlikkust luua innovatiivseid lahendusi kiiremini ja tõhusamalt kui varem.

LabVIEW eelised 
LabVIEW on välja töötatud selleks, et insenerid ja teadlased saaksid luua paindlikke mõõte- ja kontrollprogramme kiiremini ja odavamalt. LabVIEW süsteemiprojekteerimise tarkvara keskmeks on National Instrumentsi platvorm. See võimaldab kasutada igakülgseid tööriistu, mida vajame, ehitamaks mõõte- ja kontrollprogramme, aga seda kõike võimalikult lühikese ajaga. LabVIEW võimaldab juhtida mitmesugust riistvara ja seeläbi automatiseerida näiteks mõõtmisi, signaalide genereerimisi. Samuti võib mõõtmisi ja genereerimisi modelleerida arvutiekraanil, selleks eraldi riistvara kasutamata. Kombineerides LabVIEW tarkvara võimalusi National Instrumentsi konfigureeritava riistvaraga, võime koostada vägagi keerukaid ja täpseid mõõtmissüsteeme. Kasutatakse täpseid tulemusi nõudva materjali ioonse elektroaktiivse polümeeri (IEAP) testimisel ja arendamisel.

Graafiline programmeerimine 
Programmeerimiskeskkonda LabVIEW (nagu ka analoogseid keskkondi HP VEE, Hewlett-Packard Visual Engineering Environment) ei iseloomusta mitte graafilise kasutajaliidese olemasolu, vaid programmikoodi esituse põhimõtted: programmi loomine graafilises programmeerimiskeskkonnas ei seisne tekstiridade sisestamises arvutisse, vaid hoopis piltkujul esitatud funktsioonikastikeste ühendamises muutujate kulgemisradu tähistavate joonte abil. Selline programmeerimistegevus meenutab tööd projekteerimistarkvaraga (P-CAD, OrCAD jms), keelele endale (meetodile) on pandud nimeks G.
Graafilise programmeerimiskeskkonna erinevus visuaalsest (Visual C, Delphi jms) seisneb nimelt selles, et nende abil loodud lõpptulemus on küll igati graafiline, aga selle loomise protsess jääb endiselt tekstiliseks. Sellega on mainitud visuaalsed keskkonnad kõigest samm edasi eelmise põlvkonna tekstipõhisest keskkonnast. Teksti sisestamine on nendes küll lihtsustatud – tekstiridade kirjutamine on asendatud modulaarsete vormide täitmisega ning sellega kaasnevad lohistamise võimalused. Aga sisuliselt ei ole nad graafilised programmeerimise keskkonnad, nagu seda on LabVIEW.

Andmete voog
Andmevoo meetod – iga funktsioon saab rakenduda alles siis, kui temani on jõudnud kõik vajalikud sisendparameetrid.

Suurem osa tekstil põhinevaid programmeerimiskeeli kasutab nn käsuvoomudelit, LabVIEW seevastu kasutab programmi täitmisel andmevoomudelit. Lihtsustatult, käsuvoomudeli järgi, määrab programmi täitmise järjekorra programmi elementide järjestus. LabVIEW-s kasutatava andmevoomudel töötab nii, et plokkdiagrammil asuv element (nt funktsioon) käivitub alles siis, kui selle sisendites on kõik nõutud andmed, pärast seda tekitab element oma väljundile tulemuse. Edasi liigub tulemus mööda andmevoogu juba järgmise elemendi sisendisse. See liikumine määrab LabVIEW programmi täitmise järjekorra.

Polümorfism
Üks LabVIEW sümpaatsemaid omadusi on tema põhifunktsioonide polümorfism. See tähendab seda, et erinevate andmetüüpide ja vormidega opereerimiseks kasutatakse samu funktsioone, mis adapteeruvad esimesena funktsiooni sisendisse ühendatud andmetüübile. Täisarv teisendatakse siiski reaalarvuks, mitte vastupidi; sama loogiline põhimõte kehtib 8-, 16- ja 32-bitiste arvudega tehete sooritamisel. Kui näiteks liitmisfunktsiooni sisenditesse ühendada massiiv ja üksikmuutuja, liidetakse see üksikmuutuja rea igale elemendile. Põhimõtteliselt erinevate andmetüüpidega muutujaid siiski kokku liita (stringiks ühendada) ei saa. Selleks tuleb nad eelnevalt sobivale kujule teisendada, mille tarvis on LabVIEWl mitu funktsiooni, näiteks stringi kujul esineva numbrilise muutuja liitmine täisarvuga.

Tsüklid 
LabVIEW keskkonnas kohtab WHILE-tsüklit, samuti on olemas valikustruktuur (CASE Structure) ja kaadristruktuur (FRAME Structure) tegevuse järjestamiseks. Tsükliliste muutujate külgedele on võimalik tekitada mälupuhvreid – nihkeregistreid (shift register) ja kohalikke muutujaid. Nihkeregister võimaldab ühe tsükli lõppedes tekitatud väärtuse järgmisse tsüklisse sisse tuua. Valemite sisestamine on võimalik valemiraami (formula node) abil, milles raami külgedele defineeritakse sisend- ja väljundmuutujad ning raami sisse kirjutatakse muutujaid siduv valem.

Kaadristruktuur
Kaadristruktuur on üles ehitatud analoogiliselt filmi kaadritega, mis on nummerdatud järjekorras 0-1-2-jne.

Valikustruktuur
Valikustruktuuri täitmine toimub vastavalt valija (selector) (struktuuri vasakul äärel) külge ühendatud muutujale. Tõeväärtuste korral on valikuid kaks (TRUE/FALSE), numbrite või stringide korral hulgaliselt.

FOR-tsükkel
FOR-tsüklit läbitakse N korda, kui terminali N külge on ühendatud täisarvuline väärtus. Kui struktuuri siseneb rida, puudub vajadus N ühendamiseks. Automaatselt töötab tsükkel minimaalse siseneva rea pikkusega võrdne arv kordi.

WHILE-tsükkel
WHILE-tsüklit läbitakse vähemalt üks kord. See töötab, kuni tsüklit käigus hoidev muutuja (paremas alumises nurgas) on ühendatud tõeväärtusega TRUE.

Andmetüübid
LabVIEWs liiguvad andmed mööda juhtmeid. Igal juhtmel võib olla üks andmete allikas, kuid juhet saab ühendada mitmete VI-de ja funktsioonidega. Juhtmetel võib olla
vastavalt nende andmete tüübile mitmesuguseid stiile, värve ja paksusi.
Juhtme tüübid on reaalarv, täisarv, kahendväärtus või string. Lisaks jagunevad kõik juhtmetüübid kolme erinevasse andmetüüpi. Andmetüüpideks on skalaar, 1D-jada ja 2D-jada. Kõiki reaalarvudega seotud andmetüüpe märgistatakse LabVIEW programmis oranži värvusega, täisarvudega andmetüüpe sinisega, kahendväärtustega andmetüüpe rohelisega ning string kujul andmetüüpe roosa värvusega.

LabVIEW programmiosad
LabVIEW programm (VI) koosneb:
paneelist (Front Panel) – kasutajaliides 
diagrammist (Diagram) – programmi kood 
ikoon ja liides (muhv) (Icon / Connector Pane) – ühenduspunkt programmi sõlmede (funktsioonide, VI-de vahel)

LabVIEW paneel
Paneel (Panel) on programmi graafiline kasutajaliides, sellel paiknevad programmi sisendelemendid ehk juhtelemendid (Controls) ja väljundelemendid ehk indikaatorid (Indicators). Iga paneelielement kujutab diagrammil terminali. Juhtelemendid ja indikaatorid jagunevad järgmistesse tüüpidesse: 
arvud (Numeric) 
sõned ehk tekstväärtused (String) 
tõeväärtused (Binary) 
massiivid (Array) 
graafikud (Graph, Chart) 
klastrid (Cluster) 
dekoratsioonid ehk kujunduselemendid (Decoration)

LabVIEW diagramm
Diagramm kujutab LabVIEW programmi koodi graafilises (G-)keeles. Diagramm esitatakse funktsioone kujutavate piltide kogumina (Icon), mis on ühendatud andmevoogu (Dataflow) tähistavate joontega ehk juhtmetega (Wires). Programmi täidetakse andmevoogu tähistavate joonte kulgemist järgides. Diagramm koosneb järgmistest osadest:
terminalid – ühenduspunktid (sisendid (Contols) / väljundid (Indicators)) paneeli ja diagrammi vahel 
sõlmed (Nodes) (nende hulka kuuluvad ka alamVI-d) klassikaliste programmeerimiskeelte operaatorite ja protseduuride (alamprogrammide) analoogid 
Jooned ehk juhtmed (Wires) – kannavad (juhivad) andmeid sõlmede ja terminalide vahel

Liides
Liides ehk muhv (Connector Pane) on klemmikarpi meenutav nelinurk paneeli ülemises paremas nurgas. Liidese klemmid on klassikaliste programmeerimiskeelte alamprogrammi sisestatavate/tagastatavate muutujate analoogid. Alam VI-d (Sub VI) on alamprogrammide (Procedure) analoogid.

Virtuaalne Instrument
LabVIEW programme nimetatakse virtuaalseteks instrumentideks (Virtual Instrument (VI)), nad imiteerivad/emuleerivad reaalsete füüsikaliste instrumentide, näiteks multimeetrite, ostsilloskoopide, termomeetrite ja analüsaatorite käitumist ja väljanägemist.

Platvormid
LabVIEW’s kirjutatud programme saab kasutada järgmistel arvutiplatvormidel:
MS Windows 
Apple Macintosh 
Sun Microsystems 
Linux
Pocket PC
Palm OS 
Windows CE 
Embedded 32-bit CPU

Riistvara
LabVIEW sisaldab sisseehitatud draivereid paljude kommunikatsioonistandardite kasutamiseks, näiteks GPIB, VXI, PXI, RS-232, USB, Ethernet ja Plug-in DAQ.

Paljud ettevõtted pakuvad draivereid enda mõõte- ja kontrollaparatuuri jaoks. Tüüpilised draiverid võimaldavad initsialiseerida seadme, konfigureerida seadet ning lugeda ja kirjutada andmeid.

LabVIEW ja arvutivõrk
Sisseehitatud võimalused arvutivõrgu kasutamiseks: 
TCP-IP 
Veebiserver 
E-post 
Active-X 
Andmebaasid

National Instrumentsi programmid
National Instruments toodab mitmesuguseid mõõtmis- ja juhtimisprogramme ja programmeerimisvahendeid: 
LabVIEW – graafiline universaalne programmeerimiskeskkond 
LabWindows/CVI – ANSI C keskkond, võimaldab kasutada LabVIEW funktsioone ja kasutajaliidese elemente 
Measurement Studio – liides MS Visual Studiole LabVIEW funktsioonide ja kasutajaliidese elementide kasutamiseks 
LabVIEW Datalogging and Supervisory Control 
NI Vision – kujutisetöötluse ja kontrolli tarkvara, masinnägemise tarkvara (Machine Vision) 
LabVIEW Real Time – LabVIEW reaalajamõõtmiste lisa, võimaldab ajalist lahutust kuni 1 mikrosekund NI RT keskkonnas (tavaline Windowsi väärtus on 1 ms) 
Palju muid pakette (MATRIX, Electronic Workbench jne)

Kasutajad
USA 500 juhtivast firmast (Fortune 500) kasutab LabVIEW-d mingil viisil 85%: 
Väljatöötlus/arendus 
Testimine 
Kontroll / kvaliteedikontroll 
Kümned tuhanded teadus-, uurimis-, õppeasutused kogu maailmas (Eestis TTÜ – alates 1998. aastast kõik mõõtelabori töökohad varustatud LabVIEW-ga): 
eksperimendijuhtimine 
mõõtesüsteemide õpetus
Kõik suuremad Eesti teadusasutused ja ülikoolid: 
Tartu Ülikoolis andmehõive ja analüüs LabVIEW keskkonnas alates 2006/07. õppeaastast, visuaalprogrammeerimine 2007/08. õppeaastast

Tuntud kasutajaid
NASA: vesinikulekete leidmiseks kosmosesüstikutes
Texas Instruments: maailma suurimaid mikroskeemitootjaid, traadita kommunikatsiooni skeemide automaatse testimise ja kvaliteedikontrolli süsteem
Microsoft: Xbox automaatne testimine (PXI-siinil, 2,5 GHz mõõtesagedus) 
USA õhujõud: LANTIRN-i süsteemi uus versioon – 50% odavam, kiirem, väiksem (öine madallennu navigatsiooni ja sihtmärgi otsimise süsteem, näiteks F-15, F-16 lennukitel)

Puudused
Päris kallis, eriti firmade versioon ja teadustöö versioon 
Normaalseks tööks vajalik monitori lahutus 1600×1200 punkti või 1900×1200 punkti – 19"–22" monitor (odav TFT tavaliselt 1200×1000 punkti) 
Diagrammile uute osade lisamine nõuab ajamahukat olemasolevate osade ümberpaigutamist säilitamaks loetavus (automaatne ümberpaigutamine ei anna enamasti soovitud tulemust) – uuemates versioonides sellele rohkem tähelepanu pööratud 
Klassikalise programmeerimisega harjunud inimesel kohati raske "paradigmat" taibata 
Ainult täielik (campus) litsents sisaldab kõiki tooteid, tavaliste litsentside korral vaja iga "lisa" eest eraldi maksta.

Versioonid

.

Viited

Kirjandus
Robert H. Bishop. Learning with LabVIEW 7 Express. Pearson/Prentice Hall, 2004. ISBN 0131239260
Gary W. Johnson. LabVIEW Graphical Programming: Practical Applications in Instrumentation and Control. McGraw-Hill, 1997 (June), 665 p. 2nd edition, softcover, includes CD-ROM.
Thomas Klinger. Image processing with LabVIEW and IMAQ vision. Prentice Hall PTR, Upper Saddle River, N.J, 2003. ISBN/ISSN: 0130474150 
Hall T. Martin. LabVIEW for automotive, telecommunications, semiconductor, biomedical, and other applications. Prentice Hall, 2000. 
Jon Olansen. Virtual bio-instrumentation : biomedical, clinical, and healthcare applications in LabVIEW. Prentice Hall PTR, Upper Saddle River, N.J, 2002. 
Jeffrey Travis. LabVIEW for everyone. Prentice Hall, 2002. ISBN 013065096X
National Instrumentsi kirjanduse loend

Muud allikad
 http://www.elin.ttu.ee/mesel/Study/Subjects/0030DAqS/Content/PrograVI/Graafiline_programmeerimiskeskkond_LabVIEW_ver2.htm, kasutatud 29.09.2013
 http://ims.ut.ee/~ramon/Progetiiger%206.%20klass.pdf, kasutatud 29.09.2013
 http://www.e-ope.ee/_download/euni_repository/file/2454/MHX0065_1_LabView.zip/MHX0065_1_LabView/MHX0065_Teema1_Sissejuhatus_%20LabView%20programmeerimine.pdf, kasutatud 29.09.2013
 http://softwarelicense.arizona.edu/labview, kasutatud 29.09.2013
 http://www.ni.com/labview/, kasutatud 29.09.2013
 http://www.eava.ee/opiobjektid/ADmuundus/NI%20LabVIEW.htm, kasutatud 29.09.2013
 http://www.elin.ttu.ee/mesel/LabView.htm, kasutatud 29.09.2013
 Tartu Ülikooli kursuse "Visuaalprogrammeerimine" loeng 1 slaidid (2011). Koostaja A. Reinart, kasutatud 29.09.2013
 Hall T. Martin. LabVIEW for automotive, telecommunications, semiconductor, biomedical, and other applications. Prentice Hall, 2000, kasutatud 29.09.2013
 Jon Olansen. Virtual bio-instrumentation : biomedical, clinical, and healthcare applications in LabVIEW.Prentice Hall PTR, Upper Saddle River, N.J, 2002, kasutatud 29.09.2013
 Jeffrey Travis. LabVIEW for everyone. Prentice Hall, 2002. ISBN 013065096X, kasutatud 29.09.2013

Välislingid 
 Official Home Page – National Instrument's orginaal veebileht
 LabVIEW Tools Network – LabVIEW lisafunktsioonide loetelu
 LabVIEW Help – Veebipõhine dokumentatsioon 2012
 LabVIEW Help – Veebipõhine dokumentatsioon 2010
 LabVIEW Help – Veebipõhine dokumentatsioon 2009
 LabVIEW Help – Veebipõhine dokumentatsioon 8.20
 Official LabVIEW Community Home Page – LabVIEW kommuun
 LAVA (LabVIEW Advanced Virtual Architects) – LabVIEW kommuun ja foorum
 Info-LabVIEW – LabVIEW elektroonne mail list
 OpenG – Vabavaralised lisad LabVIEW'le
 The LabVIEW Wiki – Wiki leht LabVIEW'st
 Tasuta netipõhine LabVIEW õppimise keskkond – Autor NI
 Mitmekeelne foorum LabVIEW'st
 ITpointed LabVIEW foorum
 Saksakeelne LabVIEW leht
 LabVIEW linkide kollektsioon: õpetused, blogid, abivahendid ja tarkavara

Rakendustarkvara
Programmeerimiskeeled