Høgskolen i Buskerud: Fag SESM3400 Styring av mekatroniske systemer

LabVIEW-kurs

Tirsdag 16.8.05 kl. 0945-1430, rom C212/213

Om kurset

Om LabVIEW

LabVIEW utgis av firmaet National Instruments. LabVIEW er en forkortelse for "Laboratory Virtual Instrument Engineering Workbench". I LabVIEW benytter brukerne grafisk programmering for å lage sine programmer (men det er også muligheter til å inkludere tekstbaserte programmer i et LabVIEW-program). Siste versjon av LabVIEW er 7.1, som er installert her på laben.

LabVIEW er ett av de mest benyttede programutviklingsverktøy anvendt i laboratorier, eksperimentoppstillinger og testeapplikasjoner og er dessuten velegnet for å realisere frittstående applikasjoner i kombinasjon med f.eks. FieldPoint som er et distribuert I/O-system med muligheter til kjøring av LabVIEW-programmer (på selve FieldPoint-utstyret).

LabVIEW brukes også for implementering av funksjoner og brukergrensesnitt i andre utviklingsomgivelser. LabVIEW har et rikt funksjonsbibliotek for nær sagt alt en trenger for å bygge opp et system for behandling, visualisering og analyse av innsamlede data fra fysiske prosesser (loggdata) og for styring av prosesser.

Mål med kurset

Dere skal i løpet av dette LabVIEW-kurset bli i stand til å utvikle VI'er  for bl.a. generering av signaler, presentasjon, analyse og lagring av signaler (på fil). I løpet av faget skal dere bruke LabVIEW-ferdighetene til simulering av dynamiske systemer og til måling og styring av fysiske prosesser vha. FieldPoint I/O-utstyr.

Litteratur

Lærebok for dette LabVIEW-kurset er Lær LabVIEW trinn for trinn.

Kursopplegg

Kurset baseres på forelesninger/demonstrasjoner via storskjerm, kombinert med øvinger.

Kurslærer

Siv.ing. Finn Haugen, TechTeach. (E-post: finn@techteach.no)

Oppstart av LabVIEW

Vi starter LabVIEW via Start-knappen på PC'ens skriverbord og gjør oss litt kjent med knappene på LabVIEWs oppstartsvindu.

Åpne og kjøre en VI

Vi kjører VI'en Examples / Analysis Demonstrations / Temperature System Demo.vi, som er tilgjengelig via pila til høyre på Open-knappen i LabVIEWs oppstartsvindu.

Hvordan er VI'er laget?

Hver VI har

  • et frontpanel (Window / Show Panel)
  • et tilhørende diagram (Window / Show Diagram).

Vi studerer Temperature System Demo.vi.

Vi lager vår første VI

[Kap. 3.1-3.6 i læreboka]

Vi skal lage en VI, sigtrans.vi, som er beskrevet i kap. 3 i læreboken.

Paletter som benyttes under programmeringen:

  • Tools palette (Window / Show Tools palette). Merk muligheten til å velge automatisk, kontekst-avhengig musmarkør.
  • Controls palette (Window / Show Control palette) - kun for frontpanelet. (Fom. LabVIEW 7.0 kan høyreklikk / Properties-menyen brukes som ett menyvalg (tidligere måtte en velge blant flere menyer) til konfigurering av diverse egenskaper for frontpanelelementer.)
  • Functions palette (Window / Show Functions palette) - kun for diagrammet

Du kan sette diverse opsjoner for redigeringen via menyvalget Tools / Options, f.eks.

  • vise rutenett (grid) som hjelp for posisjonering
  • mulighet til å slette frontpanelelementer fra blokkdiagrammet
  • utseendet av signalledningene i blokkdiagrammet
  • definere desimalskilletegn (velge Windows-standarden på PC'en eller bruke punktum)

Feilsøking

[Kap. 3.7]

Vi legger inn noen feil i sigtrans.vi.

Hjelp

[Kap. 3.8]

Høyreklikk på et element på frontpanelet eller i blokkdiagrammet og velg Help.

Eller søk i dokumentasjonen som følger med LabVIEW via menyvalget Help osv.

Øving 1:

Signalgenerator

Veiledning v/Finn Haugen 16.8.05 på datasalen


Lag en VI ihht. følgende spesifikasjoner:

  • VI'en skal gå kontinuerlig (realiseres med en while-løkke), med en stopp-knapp på frontpanelet for kontrollert stopp.
  • Tidsskrittet skal være fast 0,05 sek, som skal være satt i et tallfelt på frontpanelet. Tallfeltet skal være de-aktivert (disabled) [Tips: Høyreklikk / Properties.]
  • VI'en skal realisere en signalgenerator for et signal som er summen, y, av følgende (del)signaler, altså y = u1 + u2 + B:
    • Sinussignalet u1(t)=A*sin(2*pi*f*t) der A og f er justerbare fra frontpanelet. Bruk gjerne en egnet funksjon på Functions Palette / All Functions / Analyze / Point by Point.
    • (Ikke prioriter dette punktet.) Randomsignalet u2(t) som er uniformt fordelt mellom -R og R der R er justerbar fra frontpanelet. Bruk gjerne en egnet funksjon på Functions Palette / All Functions / Analyze / Point by Point.
    • Biasen B der B er justerbar fra frontpanelet.

    Standardverdier (default-verdier) er A=1, f=1, R=0,2, B=0.

    A, f og R skal ikke kunne være negative, og alle skal kunne justeres i trinn på 0,1, og de skal også vises med én desimal.

  • y skal vises med en søyleindikator med tilhørende tallfelt.
  • (Ikke prioriter dette punktet.) Middelverdien av de 10 siste verdiene av y skal angis i et tallfelt. Bruk funksjonen MeanPtByPt (Point-by-point) som fins på paletten Functions Palette / All Functions / Analyze / Point By Point.
  • Dersom middelverdien av y er negativ, skal en lampe tennes. Bruk en komparator på Functions Palette / All Functions / Comparison.
  • Det skal være en passende beskrivende tekst (fritekst) for VI'en på frontpanelet.
  • Frontpanelet (og gjerne frontpanelelementene) skal ha en annen farge enn standardfargen(e).

Løsning 1

Dokumentasjon av VI

[Kap. 4.1]

Vi lager HTML-dokumentasjon av sigtrans.vi.

Datatyper i LabVIEW

[Kap. 5]

Dere har allerede blitt kjent med datatypene tall og boolske variable.

En oversikt over diverse datatyper fins på datatyper.vi (gjennomgås ikke).

Spesielle datatyper:

Tekstbasert programmeringsvindu: Formelnode

[Kap. 6.1, 6.2]

Vi skal lage sigtrans_formulanode.vi på basis av sigtrans.vi.

Plotting i diagrammer. Egenskapsnode (property node)

[Kap. 8 og 7]

Vi lager plott.vi, som demonstrerer 3 forskjellige diagramtyper, på basis av sigtrans.vi.

Egenskapsnoder kan brukes til å konfigurere chart programmatisk. Vi ser på konfiggraf.vi.

Sub-VI og LLB-filer

[Kap. 10]

En sub-VI er som en subrutine eller en funksjon inne i en (hoved-)VI.

VI'er som inneholder sub-VI'er kan lagres som LLB-filer (LabVIEW Library). Eksempel hovedvi.llb.

Lokale variable

[Kap. 11.1]

En lokal variabel er en "kopi" av en variabel (terminal). Den lokale variabelen kan benyttes hvor som helst internt i den aktuelle VI'en.

Vi lager lokal.vi

Strukturering av VI'er som utfører parallelle operasjoner

[Kap. 13]

Parallelle operasjoner kan realiseres vha. parallelle while-løkker, med utveksling av data mellom løkkene vha. lokale variable. Løkkene kan godt gå med separate syklustider. Eksempel: parallell.vi

Programstrukturer

[Kap. 12]

Skiftregister

[Kap. 14]

Et skiftregister benyttes for å huske tidligere sampelverdier av en variabel. Eksempel: skiftregister.vi.

Feedback-node kan brukes som erstatning for skiftregister-terminalene på programløkken der skiftregisteret inngår. Denne er tilgjengelig på Functions Palette / Structures. Et eksisterende skiftregister kan erstattes med en feedback-node ved å høyreklikke på en skiftregister-terminal.

Sette VI'ens egenskaper

[Kap. 16]

Menyvalg: File / VI Properties. Vi prøver med utgangspunkt i sigtrans.vi.

Øving 2:

Signalgenerator forts.

Veiledning v/Finn Haugen 16.8.05 på datasalen. Gjennomgang i begynnelsen av neste time (om én uke).


Ta utgangspunkt i losning1.vi, og legg inn følgende (den resulterende VI'en betegnes her losning2.vi):

  • Et cluster som inneholder parametrene A, f, R og B.
  • Summeringen av sinussignalet, randomsignalet og biasen skal foregå i en formelnode.
  • En graf (chart) som plotter y og dens middelverdi, my, som beregnet fra middelverdifunksjonen som ble lagt inn i losning1. Grafen skal ha rutenett (grid), og x-aksen skal gå fra 0 til 30 sek, hvilket skal defineres med en egenskapsnode for chart'en. Oppdateringsmodus skal være Sweep Chart. Grafen skal være blank (tømmes) hver gang VI'en startes.

Løsning: losning2.vi.

Webressurser for LabVIEW og NI

  • National Instruments' websted internasjonalt. Vi ser spesielt på 
    • produktkatalogen
    • developer's zone / resource library / application notes
  • National Instruments har norsk websted.
  • Nyhetsgrupper (via Google Groups)

Oppdatert 16.8.05 av Finn Haugen (finn@techteach.no)