Wat is LabVIEW?
Een grafisch software systeem, gericht op het aansturen en het uitlezen van
meetinstrumenten en op de presentatie en de verwerking van meetgegevens.
Karakteristieken
- Programmeertaal G
- grafische programmeertaal
- Virtual Instruments (of VI's)
- vorm en naam van objecten is ontleend aan de wereld van de instrumenten
- Data flow principe
- data-driven of data-dependent execution
Onderdelen van een LabVIEW programma (VI)
- Front Panel (of Panel Window)
- buitenkant van het instrument
- gebruikersinterface met alle controls en indicators
- voor het wijzigen van instellingen
(gevoeligheden, standen van schakelaars)
- dient om uitvoer zichtbaar te maken
- Block Diagram (of Diagram Window)
- de structuur van het programma
- het code-gedeelte van een programma
- Icon (of pictogram)
- dient om een gebouwde VI in een ander programma als sub-VI (zie aldaar)
te kunnen gebruiken
Editing techniques
- Pull-down menus, pop-up menus
- Tools palette
- Control palette (bij Diagram Window)
- Functions palette (bij Panel Window)
- Toolbar (van zowel Diagram Window als Panel Window)
- Controls en indicators
- data input via controls
- data output via indicators
- Help windows
- Objecten selecteren, verplaatsen, kopiëren,
verwijderen
Data types ondersteund door LabVIEW
- Getallen
- integer (signed, unsigned)
- real (single presicion 32 bits, double precision 64 bits)
- Booleans
- Strings
- Text rings
- Arrays
- Clusters
Beslissingen
Door middel van functies die als logische operator gebruikt worden, kunnen
beslissingen in de code ingebouwd worden.
- pseudo-code equivalent:
ALS voorwaarde geldt DAN voer opdrachten uit
Herhalingen
In veel programma's is het noodzakelijk om dezelfde handelingen meerdere
malen te verrichten, waarbij bij elke herhaling variabelen andere waarden
hebben of kunnen krijgen.
- While Loop
- pseudo-code equivalent:
DOE code ZOLANG voorwaarde geldt
- voorwaarde (gebruikt als stopconditie) staat in loop
- code wordt altijd één maal uitgevoerd
- zo nodig een extra test (beslissing) gebruiken om éénmalige
uitvoering te voorkomen
- For Loop
- pseudo-code equivalent
HERHAAL code GEDURENDE aantal iteraties
- aantal iteraties N moet van te voren worden opgegeven
- geen loopconditie
- wèl loopvariabele die aangeeft welke iteratie bezig is
- de loopvariabele begint bij 0 en loopt tot en met N-1
Maken van een sub-VI
- Selecteer (deel van) VI in Diagram window
- Edit -> Create SubVI
Debugging techniques
- Single-stepping door de VI
- Step Into knop
- Step Over knop
- Step Out knop
- Execution Highlighting
- Probe Tool
- Pause knop
- Breakpoint
Arrays
- Type-toekenning (control of indicator)
- Dimensies
Beslissingen: Case Structure
Een structuur waarbij onderscheid gemaakt kan worden tussen twee of meer
"waarden" voor het selectief uitvoeren van code.
Te gebruiken "waarden"
- TRUE-FALSE selector (slechts twee mogelijkheden)
- Numeric selector (Numeric ring, Lists, Menus)
(twee of meer mogelijkheden)
- Enumerated Type (twee of meer mogelijkheden)
- Type van waarde wordt gezet door aansluiting op "?"
NB: Als de waarde van de "Case selector" out of range is, kan de VI
als geheel niet uitgevoerd worden. Je moet dan een default frame toevoegen
dat in zo'n geval altijd uitgevoerd wordt.
Deze structuur is te vinden in het Functions\Structures subpalette.
Sequence Structure
Soms is het nodig om een bepaalde volgorde van de uitvoering van delen van
een programma te forceren.
Dit wordt gedaan met de Sequence Structure.
Een Sequence Structure bestaat uit een aantal "frames" die in een bepaalde
volgorde achter elkaar zitten en die in die volgorde uitgevoerd worden.
Niet uitgevoerde frames voegen geen "overhead" toe; het enige nadeel is dat
de inhoud van slechts één frame tegelijk zichtbaar is.
Formula Node
Een Formula Node is nuttig om formules uit te rekenen in het Block Diagram.
- Invoer
- Uitvoer
- Formuleregels afsluiten met puntkomma
Shift Registers
Shift registers zijn speciale variabelen die worden gebruikt om bepaalde
waarden van ene iteratie naar de volgende te transporteren.
Ze kunnen alle data types bevatten, d.w.z. getallen, strings, arrays,
clusters, file paths, etc.
Een klassiek voorbeeld van een situatie waarin shift registers noodzakelijk
zijn, is het berekenen van een "running average": je hebt een signaal met
veel ruis en door het running average te bereken, kan je het signaal
vloeiender maken.
Een andere voorbeeld is een situatie waarin bepaalde elementen van een
array moeten worden geselecteerd en in een apart array gezet.
Local Variables
Locale variabelen maken het mogelijk om hetzelfde object toegankelijk te
maken op verschillende plaatsen van het diagram.
Daarnaast kan men m.b.v. locale variabelen een object tegelijkertijd als
control en als indicator gebruiken.
Een klassiek voorbeeld van het gebruik van locale variabelen is om de controle
over twee of meer parallelle lussen te krijgen.
Een andere voorbeeld: men wil de waarde van een control in de loop van de
tijd veranderen.
Met locale (en globale) variabelen moet je altijd oppassen voor de
zogenaamde "race condition", dat wil zeggen dat je probeert om tegelijkertijd
een object te schrijven en hetzelfde object te lezen.
LabVIEW Visual Displays: Charts & Graphs
- Waveform Chart
De Waveform Chart is een special numeric indicator dat in meste gevallen
binnen een lus wordt gezet.
Nieuwe data punten worden punt-voor-punt aan de Chart toegevoegd en
meteen weergegeven.
Er zijn drie "operation modes" voor Waveform Charts: Strip Chart,
Scope Chart en Sweep Chart.
De laatste twee werken ongeveer als een oscilloscoop
scherm en de Strip Chart als een XT schrijver (chart recorder).
- Graphs
Er zijn twee types graphs in LabVIEW, Waveform Graph en XY Graph.
In tegenstelling tot de Chart, ze kunnen data niet onthouden,
d.w.z. je moet altijd het gehele
array van data met een Graph verbinden, ook als de Graph binnen een lus zit.
De Waveform graph geeft data van een array weer op de Y-as tegen de
bijbehorende index plaatsen.
voorbeelden: Waveform Graph Example 1.vi
Waveform Graph Example 2.vi
Waveform Graph Example 3.vi
De XY Graph zet arrays van data uit tegen elkaar. Om twee paren van arrays op een
grafiek weer te geven, gebruikt men een Build Array functie.
Strings
Een string is een verzameling van zichtbare en niet zichbare tekens
(characters).
Strings worden vooral gebruikt voor file I/O, instrument I/O en netwerk
communicatie.
String controls en indicators hebben 4 display modes:
*normal display* "\" code display* password display
hex display
Meest gebruikte "\" codes:
- \b = Backspace (ASCII BS)
- \s = Space (ASCII SP)
- \r = Return (ASCII CR)
- \n = Newline(ASCII LF)
- \t = Tab (ASCII HT)
LabVIEW heeft veel functies om strings te behandelen.
Deze kunnen in twee grote groepen worden verdeeld:
functies om strings te bouwen (samen te voegen) en functies om strings te
ontleden in kleinere strings.
File I/O
File I/O functies in LabVIEW worden in drie grote groepen (niveaus) verdeeld:
- High-level File VIs
- Intermediate File Functions
- Advanced File Functions
De High-level VIs worden gebruikt voor specifieke doelen, bijvoorbeeld
gegevens naar een bestand schrijven of uit een bestand lezen in
spreadsheet format.
Dat is nuttig als de gegevens in de vorm van een array komen.
In andere gevallen is het verstandig om Intermediate of
Advanced file functies te gebruiken want ze bieden meer flexibiliteit.