1 Innledning. Bli kjent med LABVIEW. NB! Ta med multimeter og lite skrujern!

Like dokumenter
2 Regulering av varmeovn med P-regulator

1 Innledning. 2 Virkemåte for kortet. Bli kjent med USB I/O kort K8055. NB! Ta med multimeter og lite skrujern!

1 Innledning TRAFIKKLYS. NB! Ta med Dataøving 2! Fag SO507E Styresystemer HIST-AFT jan 14 PHv Dataøving 3 SANNTID MED LABVIEW.

2 Regulering av varmeovn med PI-regulator

Brukergrensesnittet i LabVIEW

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Test av USB IO-enhet. Regulering og HMI.

Zelio Soft grunnkurs. Zelio Logic reléerstatter programmering

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

LabVIEW seriekommunikasjon med mikrokontroller

Hei verden Introduksjon Swift PDF

Hei verden. Introduksjon. Steg 1: Sette opp Xcode. Skrevet av: Andreas Amundsen

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

NY PÅ NETT. Enkel tekstbehandling

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Argumenter fra kommandolinjen

BRUK AV TiSferaDesign I RINGETABLÅER MED ELEKTRONISK NAVNELISTE:

Verden. Steg 1: Vinduet. Introduksjon

FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Dette eksemplet forutsetter at du allerede har gjennomgått Kom i gang med tavler 1.

Debugging. Tore Berg Hansen, TISIP

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Bygge en kube. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Plotting av data i grafer

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Steg 1: Vår første datamaskin

Bruksanvisning Unitronics Vision

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

JS: Grunnleggende JavaScript Nybegynner

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Etiming på nærløp. Dersom du får opp vinduet under er filene fra forrige løp flyttet, og du må oppgi hvor systemfilen ligger.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Brukerveiledning Løypelegging i Ocad v.9 Skrevet av Arvid Mølnvik for Spkl. Freidig

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Kanter, kanter, mange mangekanter

1) Sørg for at du fortsatt er i eventredigeringsmodus (klikk F6 på tastaturet, eller velg ikonet med en person fra menylinjen).

Hvordan lage terreng i ArchiCAD (mesh tool):

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Dagens tema: 12 gode råd for en kompilatorskriver

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Nedlasting av SCRIBUS og installasjon av programmet

Tilstandsmaskiner kalles på engelsk for Finite State Machines.

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

Oppsummering fra sist

Kom i gang med micro:bit

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Her skal du lære å programmere micro:biten slik at du kan spele stein, saks, papir med den eller mot den.

Nytt prosjekt og programlogikk

PC-AXIS Brukerveiledning for tabelluttak og bearbeiding av data

HØGSKOLEN I SØR-TRØNDELAG

Kodetime for Nordstrand barneskole

Snake Expert Scratch PDF

Kjenner du alle funksjonene på tastaturet?

Løypelegging ved bruk av

Eksterne enheter Brukerhåndbok

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Steg 1: Installere programvaren

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

PXT: Flasketuten peker på

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden.

Kapittel 1 En oversikt over C-språket

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

PLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

JS: Grunnleggende JavaScript

PXT: Hermegåsa. Introduksjon. Skrevet av: Felix Bjerke og Tjerand Silde

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Bruk av kildeavskrifter som er merket med grønn kule

Brukerveiledning for SMS fra Outlook

Elektroniske sjekklister

Det beste fra Windows 10

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Programmet kan lastes ned gratis fra (Downloads ) og er ikke en del av CxOne-pakken.

Donkey Kong. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle

2 Om statiske variable/konstanter og statiske metoder.

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Communicate SymWriter: R1 Lage en tavle

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Steg 1: Installasjon. Steg 2: Installasjon av programvare. ved nettverkstilkoblingen på baksiden av kameraet. Kameraet vil rotere og tilte automatisk.

Hvor i All Verden? Del 2. Introduksjon. Steg 0: Forrige gang. Skrevet av: Geir Arne Hjelle

Hva er TegnBehandler?

Del 1 En oversikt over C-programmering

Steg 1: Katten og fotballbanen

Installasjon av Mediasite Desktop Recorder 2

PC-EN HUSKER ALT FOR DEG ORD FOR ORD. Skriv dagbok

Transkript:

D:\Per\Fag\Styresys\Oppgavebok\K8055LV_12\Øving 2\K8055_LV2012_SANN2_2014.wpd Fag SO507E Styresystemer HIST-AFT jan 14 PHv Dataøving 2 i SANNTID MED LABVIEW Bli kjent med LABVIEW NB! Ta med multimeter og lite skrujern! Innleveres: Utført av: Godkjenning: 1 Innledning Formålet med denne oppgaven er å bli kjent med programmeringsverktøyet LabView 2012 som leveres av National Instruments og å lage programmet IOtestLV som du brukte i dataøving 1. LabView er et søsterprodukt til LabWindows. Begge produkter er laget spesielt for styring av eksternt utstyr fra en PC. Opprinnelig ble de laget for styring av labinstrumenter, labutstyr og datainnsamlingsutstyr. Det finnes derfor ferdige instrumentdrivere til voldsomt mye utstyr av denne typen. Særlig utstyr fra National Instruments, men også fra mange andre produsenter. Filene som produseres av LabWindows har etternavnet vi som står for Virtual Instrument, mens etternavnet på den ene typen filer som produseres av LabWindows har etternavnet cvi som står for Virtual Instrument programmert i C. I begge disse produktene lages grensesnittet på skjermen grafisk i et slags teikneprogram. Hovedforskjellen mellom de to produktene er at i LabView lages også programkoden grafisk, mens i LabWindows programmeres det i C. For den som er god i C-programmering er mulighetene og fleksibiliteten i LabWindows mye større enn i LabView. LabView derimot gir et mer konkret grafisk bilde av programkoden og er mye lettere å komme i gang med når programmeringsferdigheten i tradisjonelle programmeringsspråk ikke er helt på topp. LabView baserer seg på en dataflytmodell mens LabWindows-program er hendelsesorienterte. Vanlige tradisjonelle dataprogram er sekvensorienterte eller løkkeorienterte. I et sekvensorientert program kan du følge gangen i programmet fra start til slutt ved å følge kildekoden i en sekvens. I løkkeorienterte programmet kan du følge gangen i programmet rundt og rundt i ei løkke. De fleste PLS-program er bygd opp av en sekvens som gjentar seg hele tida i ei større løkke. Det finnes også program som tilsynelatende er hendelsesorientert, men hvor programmet likevel hele tida går i ei løkke (event loop). I LabView er det mulig å følge dataflyten ved å følge ledningene som forbinder de grafiske blokkene. I utgangspunktet er ikke LabView hendelsesbasert, men i vår profesjonelle versjon av programmet er det mulig å programmere hendelsesorientert i tillegg til dataflytorientert. Det beste fra begge verdener? Hendelsesorientert programmering baserer seg på at hver hendelse (event) fører til en handling (action). Den som lager programmet har ingen mulighet til å forutsi i hvilken rekkefølge hendelsene kommer. Det er det brukeren av programmet og eventuelt eksternt tilkopla utstyr som bestemmer. Eksempler fra dagliglivet: Hendelse: Det ringer på døra. Handling: Lukk opp døra. Hendelse: Kaffen koker over. Handling: Ta kaffekjelen av plata og slå av plata. Hendelse: Timen er slutt. Handling: Gå ut på gangen. Hendelser og handlinger i LabView kan være: Hendelse: Det skjer et klikk med venstre museknapp når musemarkøren står over Avslutt-knappen. Handling: Avslutt programmet. Hendelse: Klokka har gått ut samplingstida. Handling: Hent inn prosessverdien fra ADomformeren. Rekn ut pådraget. Send pådraget ut til DA-omformeren. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 13

Side 2 Dataøving 2 SANNTID Bli kjent medlabview Bak kulissene foregår det veldig mye, men dersom du bare husker på at LabView kan være både hendelsesorientert og dataflytorientert på samme tid så går det greit. Du må forutse alle hendelser som du vil at programmet skal håndtere og så programmere alle handlingene som hører med til hendelsene. 2 Kjøring av demoprogrammet GrafEksempel Oppstart av LabView: Programmet er installert på alle PC ene på 217. Du starter opp programmet fra Start 6 Alle programmer 6 National Intrumensts 6 National Instruments LabVIEW 2012. NB! Første gang du starter opp programmet kan det hende det dukker opp noen vinduer på skjermen med spørsmal. Svar Ja på alle. Nå dukker oppstartvinduet opp: For å bli bedre kjent med LabView skal du først se på et ferdig eksempel. Det finnes utrolig mange ferdige eksempler i LabView som viser hvordan de forskjellige delene i programmet er brukt til å løse en eller annen oppgave. Du finner dem under Help 6 Find Examples... øverst i oppstartvinduet. Her skal du i stedet se på eksemplet GrafEksempel.vi som ligger under K:\Fag\AFT\EDT\_FAG\SANNTID\LabView. a) Du skal starte opp programmet i LabView. Dersom du finner programnavnet direkte under Open halveis ned i høgre kolonne kan du starte det opp direkte derfra. Hvis ikke må du gå veien om Browse... og så leite deg fram til du finner programmet på katalogen: K:\Fag\AFT\EDT\_FAG\SANNTID\LabView. Når GrafEksempel er starta opp i LabView får du først opp frontpanelet. Side 14 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 3 2.1 Frontpanelet Du har nå fått opp frontpanelet til GrafEksempel. Det viser brukergrensesnittet. a) Prøvekjør programmet ved å trykke på. Etterpå kan du stoppe programmet ved å trykke på. Når programet er stoppet kan du redigere f eks farge, posisjon, størrelse osv på alle objektene i frontpanelet uten at det påvirker virkemåten under kjøring. Et godt brukergrensesnitt skal gjøre at brukeren får til å bruke programmet med et minimum av instruksjon. En av fordelene med LabView er at det finnes veldig mange ferdige objekter som er ganske avanserte. Hele objektet som plotter kurver i frontpanelet er et ferdig objekt som heter Waveform Chart. Dersom du høgreklikker på dette objektet under kjøring vil du se at det inneholder mange innebygde muligheter. Du kan også prøve å klikke på feltene som markerer fargekodene til kurvene! b) Test ut Waveform Chart! c) Prøvekjør programmet en stund og test ut alle knappene og innmatingsfeltene i programmet til du skjønner hva som skjer når du trykker på dem eller skriver inn verdier. 2.2 Blokkdiagrammet Til alle frontpanel er det kopla et blokkdiagram. I blokkdiagrammet programmeres handlingene som skal skje basert på hendelser i frontpanelet. Hva skal skje når brukeren trykker på? Programmet skal avslutte! Dette må programmeres i blokkdiagrammet. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 15

Side 4 Dataøving 2 SANNTID Bli kjent medlabview a) Åpn opp blokkdiagrammet ved å velge Window 6 Show Block Diagram Nå dukker dette blokkdiagrammet opp: b) For å få litt hjelp er det greit å åpne det kontekst-sensitive hjelpevinduet. Gjør det ved å gå inn på menylinja øverst i blokkdiagrammet og velge Help 6Show Context Help. c) Nå dukker hjelpevinduet opp. Det viser hjelp om det objektet som musemarkøren står over i øyeblikket. Dersom du holder musemarkøren din over Sinusblokka midt på i øverste halvdel av blokkdiagrammet skal du få se figuren til høgre her. Gjør du det? Hjelpen forteller at signalet ut er lik sinus til signalet inn dersom signalet inn er i radianer. Ofte vil du kunne få mer hjelp ved å trykke på Detailed help. For mer kompliserte Side 16 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 5 blokker viser den detaljerte hjelpa ofte videre til eksempelprogram som viser bruken av blokka. Eksempelprogram kan være nyttige fordi det ikke alltid er like lett å vite hvordan du skal bruke avanserte blokker. På høgre side i blokkdiagrammet er det en Case Structure. Denne består av ei ramme med etiketten True. Når denne strukturen får inn et signal til som er True så skal det skje som står inni ramma under etiketten True. Inni ramma er det ei blokk med navnet Sinus og cosinussignaler. Det er Waveform Chart-blokka som foretar oppteikning av kurvene i frontpanelet. Hver gang det kommer signaler til denne blokka så oppdateres kurvene i frontpanelet. Inn på Waveform Chart-blokka går det en signalbunt med de tre signalene som plottes. d) Hvilke tre signaler er det som går inn til Waveform Chart-blokka? e) Hva skjer om signalet til er False? 2.3 Trådløs kopling mellom frontpanel og blokkdiagram Det som står som etikettnavn på objekter i frontpanelet blir også brukt som navn på de tilhørende signalgivere eller signalmottakere i blokkdiagrammet. I LabView kalles et objekt i frontpanelet som skal ta i mot data fra brukeren eller opereres av brukeren for en Control. Tilsvarende kalles alle objekter i frontpanelet som ikke kan opereres av brukeren, men gir informasjon fra programmet tilbake til brukeren for en Indicator. Alle objekter i frontpanelet av typen indikator eller kontroll har en tilhørende terminal (Terminal) i blokkdiagrammet. Et objekt i frontpanelet som skal ta i mot data fra brukeren vil alltid automatisk få ei tilsvarende termninal-blokk i blokkdiagrammet som mottar verdien trådløst og som kan sende den videre på en ledning. LabView er basert på en dataflytmodell og alle data blir sendt ved hjelp av ledninger eller trådløse forbindelser. Dette innmatingsfeltet i frontpanelet er en kontroll som har denne terminalen i blokkdiagrammet. Terminalen mottar signalet trådløst fra frontpanelet og kan sende det videre i blokkdiagrammet med en ledning. Et objekt i frontpanelet som skal ta i mot data fra programmet vil alltid automatisk få ei tilsvarende termninal-blokk i blokkdiagrammet som mottar verdien fra en ledning og sender den trådløst videre til indikakatoren. Dette visingsfeltet i frontpanelet en indikator som mottar verdier trådløst fra denne terminalen blokkdiagrammet. Noen ganger kan det bli tungvint å trekke signalledninger på kryss og tvers mellom blokkene. Da kan det være greit å lage en lokal variabel som formidler trådløs kontakt mellom blokker. Alle lokale variabler må ha en tilhørende indikator eller kontroll i frontpanelet. Den lokale variablen vil ha samme navn som signalet som sendes eller mottas trådløst. i er Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 17

Side 6 Dataøving 2 SANNTID Bli kjent medlabview Dette er en lokal variabel trådløsmottaker som sender signalet videre på en signalledningen. Det er også mulig å bruke lokale variable til å sende verdier trådløst tilbake til en kontroll eller en indikator i frontpanelet for å oppdatere denne uten at brukeren gjør noe. Et eksempel på dette er som mottar verdien 0,1 fra en signalledning og sender dette til alle trådløse mottakere av variablen Cosinus offset. Det gjelder også innmatingsfeltet som da vil skifte verdi fra 0 til 0,1. Objekter i frontpanelet kan virke både som sendere og mottakere eller bare som mottakere av trådløse signaler. Kontrollere i frontpanelet kan både sende og motta trådløse signaler. Indikatorer kan bare motta trådløse signaler. Det finnes en spesialmottaker som bare mottar trådløse signaler direkte fra frontpanelet på en egen skjerma frekvens. Det kan sammenliknes med et nødsamband. Dette er som tar imot nye verdier fra brukergrensesnittet akkurat når en bestemt knapp eller innmatingsfelt e l blir manøvrert. Denne trådløse mottakeren finnes bare i Event Structure hvor objektet det gjelder må være spesielt definert. Et problem er at den som lager programmet kan velge å skjule etiketten til objekter i frontpanelet. Dette gjelder særlig objekter med flere valg hvor også valgene skal ha sine navn. Da blir det ofte komplisert for brukeren om det i tillegg står en etikett. Et eksempel på det er venderen for å velge mellom frekvens i Hz eller i rad/sek. En etikett i tillegg vil da kunne forvirre brukeren. LabView hjelper deg med å finne terminalen om du høgreklikker med musa i en kontroll eller indikator og så velger Find 6 Terminal. Tilsvarende kan du i blokkdiagrammet høgreklikke med musa i en terminal eller lokal variabel så velge Find 6 Control eller Find 6 Indikator når du vil finne det tilhørende objektet i frontpanelet. a) Finn terminalen til følgende fire objekter i frontpanelet: Den øverste: Den nederste: b) Finn indikatoren/kontrolleren til følgende terminal: Finn indikatoren/kontrolleren til følgende Variabel: 2.4 Programmering med ledninger og trådløse forbindelser Her er vist et utsnitt av blokkdiagrammet Side 18 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 7 som viser hvordan sinussignalet som skal vises i Waveform Chart i frontpanelet reknes ut med vanlige blokker. Noen ganger kan det være veldig arbeidskrevende å hente inn masse blokker og så forbinde dem med ledninger for å få utført enkle utrekninger. Et alternativ kan da være å bruke ei formelblokk (Formula Node) hvor utrekninger kan skrives i C-syntaks med et redusert sett av C- funksjoner. Her er det de samme utrekninger som foretas, men nå for cosinussignalet. Innmaten i formelnoden programmeres som en vanlig C-funksjon, mens ramma rundt overtar rollen til funksjonshodet. Alle inn- og utverdier må få en egen variabel i ramma til blokka. Interne hjelpevariabler må deklareres på samme måte som i C. 2.4 Handtering av hendelser med Event Structure Når en hendelse oppstår i frontpanelet så kan denne fanges opp nesten momentant av hendelsefella (Event Structure). En vanlig terminal sender bare mottatte verdier videre når den delen av blokkskjemaet kjøres, mens hendelsefella bryter inn i den normale programkjøringa, tar tak i hendelsen og utfører handlingen som er programmert til akkurat denne spesielle hendelsen. Et program som spesifiserer handlingene til en hendelse kalles et avbruddsprogram. Hendelsen avbryter den vanlige programkjøringa og starter det tilhørende avbruddsprogrammet. Når avbruddsprogrammet er ferdigkjørt fortsetter den vanlige programkjøringa der det var før det ble avbrutt av hendelsen og avbruddsprogrammet. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 19

Side 8 Dataøving 2 SANNTID Bli kjent medlabview I figuren er det plassert ei hendelsefella inni ei While Loop. Hendelsefella kjennes igjen på at det er et timeglass oppe i venstre hjørnet. Whileløkka kjennes igjen på at ramma er ei pil som starter og slutter nederst i høgre hjørne. I tillegg er det et blått kvadrat med en i inni i nedre venstre hjørne og et grønt kvadrat med en rød flekk inni i nedre høgre hjørne. Det blå kvadratet kan gi informasjon om hvor mange ganger løkka er kjørt. Det grønne kvadratet er en betingelses-terminal for While-løkka som kan brukes til å stoppe løkka. I praksis må hendelsfella stå inni i ei løkke. Det er mest vanlig å bruke ei while-løkke sammen med hendelsesfella. I navnefeltet på hendelsefella står det at dette er hendelse nr 1 og at den blir aktivert når Avslutt-knappen i frontpanelet skifter verdi: dvs trykkes ned. Da skifter NewVal fra False til True. Terminalen merka Avslutt gjør ingenting og er bare plassert her fordi den må stå et sted. Det er terminalen NewVal som mottar meldinga om at Avslutt har fått en ny verdi. Når Avslutt har fått en ny verdi sender nødsambandet ut den nye verdien dvs True som betyr at knappen er trykket ned. Denne verdien mottas av NewVal som sender den videre ut på ledningen. Den lokale variablen Stoppet sender så verdien True videre til alle trådløse mottakere som er merka Stoppet. Dvs både til frontpanelet og til andre lokale variable i blokkskjemaet. Ledningen fra NewVal går også videre ut gjennom høgre rammekant og ned til betingelsesterminalen. Når denne denne mottar verdien True så stopper all videre kjøring av denne løkka, men LabView-programmet vil fortsette å gå dersom det er andre While-løkker i blokkdiagrammet som ikke har fått stoppordre. a) Hva er det som gjør at den andre While-løkka i blokkskjemaet også får stoppordre og at hele LabView-programmet stopper? Timeglasset oppe i venstre hjørne kan brukes til å kople opp en maksimaltid som hendelsesfella skal vente på ei ny hendelse. Særlig for hendelser som foregår i eksternt utstyr kan dette være viktig. Når det ikke er noen tilkopling til timeglasset så betyr det at denne hendelsefella er aktiv i uendelig lang tid. I praksis betyr det at hendelsefella er aktiv hele tida mens den omsluttende While-løkka er aktiv. b) Trykk på høgre eller venstre trekant på enden av etiketten og se nærmere på de andre hendelsene som fanges opp i hendelsefella. Hvor mange hendelser fanges opp av fella utenom hendelse null? 3 Hvordan lage programmet IOtest1LV? I dataøving 1 brukte du programmet IOtest1LV til å kommunisere med PC I/O-kortet i PC en. Du skal nå lage din egen versjon av dette programmet. 3.1 Laging av frontpanelet Side 20 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 9 Programmet skal brukes til å sende verdier til og fra K8055-kortet. Vi starter alltid med å lage frontpanelet først og blokkdiagrammet etterpå. Det er sjelden vi blir fornøgd med programmet med en gang. Som oftest må man gå tilbake og utvide brukergrensesnittet i frontpanelet. Deretter må blokkdiagrammet oppdateres osv. I praksis blir dette en evig runddans til man er fornøgd. a) Nytt frontpanel: Lukk alle vinduene (frontpaneler og blokkdiagram) i LabView. Nå skal Getting started-vinduet dukke opp. Gå inn under New og velg Blank VI. Nå dukker dette vinduet opp: Ditt frontpanel er sikkert litt større. På frontpanelet skal du nå plassere alle de objektene du har bruk for. I første omgang er det bare om å gjøre å få de riktige objektene plassert på frontpanelet. Når alle objekter er på frontpanelet med de riktige egenskapene plasseres de omtrent der de skal være. Finjustering gjøres først helt til slutt når alt virker som det skal! b) Innmatingsfeltene DA1" og DA2": I frontpanel skal det være to innmatingsfelt. Start med å plassere et innmatingsfelt av typen Numeric Control på frontpanelet. Du finner det i Controls- Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 21

Side 10 Dataøving 2 SANNTID Bli kjent medlabview vinduet under Modern 6 Numeric. Skift navn til DA1. Lag også en kopi av denne som du skifter navn på til DA2 og plasser kopien til høgre for DA1. Tips! Det er ikke sikkert at Controlspalettevinduet ditt ser greit ut første gangen du bruker det. Uansett hvordan det ser ut vil det nederst i vinduet være et felt som heter Change Visible Palettes... Klikk der! Da skal dette vinduet dukke opp. Klikk på Select All og deretter på OK. Nå skal utseendet på Controls-palettevinduet se sånn ut: Går du nå inn på Modern og Numeric finner du Numeric Control. c) Trykk-knappen Avslutt I front-panelet skal det være ni trykk-knapper. Plasser først en trykk-knapp av typen Cancel Button på frontpanelet. Den finner du i Controls-vinduet under Modern 6 Boolean. Etterpå må du gi knappen de rette egenskapene. Høgreklikk på knappen og velg Properties. Gå videre inn på Appearence-fanen og redigere egenskapene så de blir som på figuren. Gå over i blokkdiagrammet og finn igjen terminalen til Avslutt-knappen. Den er symbolisert med et ikon som det står Cancel på. Det kan skape forvirring. Side 22 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 11 Høgreklikk på terminalen og velg det nest nederste valget hvor det står en hake foran View As Icon. Nå skal terminalen skifte symbol til d) Resten av trykk-knappene: Kopier knappen i frontpanelet og lag åtte kopier med Label og Off text som stemmer med det som skal stå på de andre knappene. Mens du lager dem kan du prøve å grovplassere dem med det samme så du ender opp med et frontpanel som ser omtrent ut som på figuren: e) Visningsfelt: I frontpanelet skal det også være visningsfelt for tallverdier. Et visningsfelt er en indikator. Når du allerede har innmatingsfelt i frontpanelet så er det enkleste å lage et visningsfelt ved først å lage en ny kopi av et av innmatingsfeltene. 1) Lag en ekstra kopi av innmatingsfeltet DA1. Høgreklikk på kopien og velg Change to Indicator. Nå skal innmatingsfeltet blitt til et visningsfelt. 2) Lag fire kopier av visningsfeltet så du til sammen får fem indikatorfelt. Skift navn på kopiene og grovplasser dem så du får omtrent frontpanelet som vist på neste figur. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 23

Side 12 Dataøving 2 SANNTID Bli kjent medlabview f) Radioknappene SK5 og SK6": Radioknappene (Radio Buttons) brukes som av/på knapper for å vise om adresselaskene på kortet er tilkopla eller ikke. Radioknappene finner du i Controls-vinduet under Classic 6 Boolean 6 Square Radio Button. 1) Lag først en radioknapp som du plasserer over oppkoplingsknappen. Deretter høgreklikker du radioknappen, velger Properties og gir den verdier som vist i figuren under. Legg merke til at det er valgt en synlig Off text: SK5 i stedet for å la etiketten (Label) : SK5 være synlig. Grunnen er at en etikett som skal stå rett til høgre for radioknappen vil havne et godt stykke fra knappen. Dersom teksten ønskes rett til høgre for knappen må det gjøres på denne måten. Hvis du i stedet vil ha etiketten over knappen er det bedre å bruke synlig etikett og droppe off-teksten. Side 24 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 13 2) Når du er ferdig lager du en kopi som du plasserer til høgre for den første radioknappen og sørger for at den heter SK6. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 25

Side 14 Dataøving 2 SANNTID Bli kjent medlabview g) Lysdioden Oppkopling OK?": Lysdioder kan brukes som indikatorlamper i brukergrensesnittet. Disse har én farge når de er avslått og en annen farge når de er påslått. Her skal du bruke en lysdiode som viser om det er kontakt mellom brukergrensesnittet på PCen og K8055-kortet etter at brukeren har trykka på Oppkopling. Lysdioder finner du i Controls-vinduet under Modern 6 Boolean 6 Round LED. Lag først en lysdiode som du plasserer under oppkoplingsknappen. Deretter åpner du Properties og gir den verdier som vist på figuren. Pass på at On-fargen er grønn og at Off-fargen er mørkegrå. h) Lysdioder for digitale innganger: Det skal være fem lysdioder som viser statusen til de 5 digitale inngangene på kortet når brukeren trykker på Les alle digitale - knappen. Disse skal være uten synlig etikett (label), men ha etikettnavnene LED1 til LED5. On-fargen skal være Rød, mens Off-fargen skal være mørkegrå. Lag de fem lysdiodene og plasser dem under Les alle digitale - knappen.. Side 26 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 15 i) Pynterammer for gruppering: For å gruppere objekter som hører sammen kan det være greit å bruke innramminger. En type ramme kan du lage med Modern6 Decoration 6 Recessed Frame. Du skal lage tre rammer som vist på figuren: Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 27

Side 16 Dataøving 2 SANNTID Bli kjent medlabview j) Tekst på rammene: Det hører ikke med synlige etiketter (label) til rammene så tekst må settes på som ekstra objekter. Det kan gjøres enkelt ved å dobbeltklikke i frontpanelet der hvor du vil plassere teksten. Deretter skriver du inn teksten og flytter den dit du vil ha den. Lag tekster og plasser den over rammene så du får et frontpanel som vist på neste figur: Nå skal du ha laget ferdig dette brukergrensesnittet. Ikke bry deg om at objektene ikke er plassert helt pent. Den siste finpussen med plassering av objekter på skjermen gjøres helt til slutt når hele programmet er ferdiglaget og funker som det skal. 3.2 Prøvekjøring av frontpanelet. Det er fullt mulig å teste alle kontrollerne uten å ha laget noe blokkskjema. I vårt frontpanel består kontrollerne av innmatingsfeltene og trykk-knappene. Fordi vi ikke har laga noe kode i blokkdiagrammet vil de ikke skje noe i indikatorne (lysdioder og visningsfelt). a) Trykk på og prøvekjør frontpanelet. Får du skrevet inn nye verdier i DA1? b) Avslutt testinga av frontpanelet ved å trykke på 3.3 Laging av kode i blokkdiagrammet. Side 28 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 17 Mens du har laga frontpanelet har LabView plassert en terminal i blokkdiagrammet for hvert objekt av kontroller- eller indikator-typen du har plassert i frontpanelet. Reine dekorasjoner eller tekster får ingen terminal i blokkdiagrammet. a) Blokkdiagrammet: Dersom du ikke allerede har funnet blokkdiagrammet kan du få LabView til å vise deg det ved å velge Window 6 Show Block Diagram. LabView plasserer terminalene mer eller mindre tilfeldig i blokkdiagrammet. Det er derfor behov for opprydding, men det er greit å ha en plan for hvor terminalene skal plasseres og hvordan programmet skal se ut. I LabVIEW er det ingen bestemt rekkefølge på hvordan programmet kjøres. Det eneste som er garantert er at programflyten er i pilretninga, men det er umulig å forutsi rekkefølgen på parallelle løp som ikke har noen innbyrdes kopling. Det er derfor vanlig å tvangsinndele programmmet i tre deler. Del 1: Oppstartkode. Dette er vanligvis for å sørge for de riktige startverdiene og at eksternt utstyr blir starta opp på riktig måte. Del 2: Kjørekode. Det er den delen av koden som sørger for at alt skjer som planlagt under vanlig programkjøring. Del 3: Avsluttingskode. Når programmet avsluttes må ofte eksternt utstyr kjøres ned og avstenges på et forsvarlig vis. Det kan også være at brukeren bør spørres om det er ting som skal lagres til neste kjøring osv. Stacked Sequence Structure: For å få delt programmet i deler som skal kjøres etter hverandre brukes en sekvens-struktur. Når det er mer enn litt kode blir det mest oversiktelig å bruke en sekvens-stakk (Stacked Sequence structure). Denne består av bilder med programkode som ligger oppå hverandre i en stor bunke. Under kjøring kjøres først alle kode på det første bildet, deretter all kode på bilde nummer to osv. helt til all kode på det siste bildet er ferdigkjørt. Da stopper programmet. Bilde nummer en skal inneholde oppstartkoden. Koden der kjøres bare en gang. På bilde nummer to skal vi lage noen evige løkker sånn at programmet vil holde seg på bilde nummer to helt til brukeren trykker på Avslutt-knappen og programmet går over til bilde nr 3 hvor avsluttingskoden legges. Bilde nr tre kjøres en gang. Deretter stopper programmet. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 29

Side 18 Dataøving 2 SANNTID Bli kjent medlabview b) Hent en sekvensstakk fra Controls-vinduet under Programming 6 Structures og trekk den rundt alle terminalene i blokkdiagrammet. c) Høgreklikk inni øvre ramme og velg Add Frame After. Da får du et bilde til i stakken. Gjenta dette en gang til sånn at du totalt får bildene 0, 1 og 2 i stakken. d) Bla over til bilde 1 i stakken ved å trykke på høgre eller venstre trekant ved overskriften i øvre ramme. Bilde nummer en i stakken skal være et tomt bilde som du skal bruke til kjørekoden. e) Event Strukture og While Loop: Hent ei hendelsefelle (Event Structure) fra Controls-vinduet under Programming 6 Structures og trekk den ut til et passende rektangel i bilde 1. Hent deretter ut ei while-løkke (While Loop) fra Programming 6 Structures og trekk den ut rundt hendelsefella. f) Oppfanging av trykk på Avslutt-knappen. Høgreklikk i etiketten på øverste ramme til hendelsefella og velg Edit Events Handled by This Case... Nå dukker det opp et Side 30 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 19 vindu hvor du først velger hvilket objekt som hendelsen skal knytte til i midterste kolonne og så hendelsestype i høgre kolonne. Velg Avslutt og Value Change som vist i figuren og trykk OK: g) Handlingskode til Avsluttknappen: Når noen trykker på Avslutt-knappen skal programmet stoppe. Dette gjøres enklest ved å kople en ledning fra NewVal til termineringsknappen for While-løkka rett gjennom høgre ramme som vist på figuren. h) Prøvekjøring: Fordelen med LabVIEW er at det er mulig å teste programmet etter hvert som det er lagt til kode. Gå over til frontpanelet og start opp programmet ved å trykke på. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 31

Side 20 Dataøving 2 SANNTID Bli kjent medlabview h1) Får du stoppet programmet ved å trykke på Avslutt-knappen? h2) Har Avslutt-knappen riktig gråfarge etter at programmet er stoppet? i) Riktig gråfarge på knapper etter at de er sluppet: Knapper kommer først tilbake til sin riktige lysegrå farge når den tilhørende terminalen sin kode er ferdigkjørt. Det betyr at terminalen til Avslutt-knappen ikke kan stå på på bilde 0 i sekvensstakken, men må flyttes over på bilde 1 og plasseres inni While-løkka. Er det plass kan det være greit å plassere den helt inni hendelsefella for hendelsen Avslutt som vist på figuren. i1) NB! Ikke klipp ut terminalen og lim den inn igjen på rett plass! Det skaper rot i frontpanelet. Flytt og parker Avslutt-terminalen ved å trekke den ut fra sekvens-stakken med musa og parker den midlertidig i blokkdiagrammet på utsida av sekvensstakken. Bla deretter over til bilde 1 på stakken og trekk Avslutt-terminalen over på rett plass. Terminalen skal bare stå her uten noen tilkopling. i2) Prøvekjør programmet nå. Får du fortsatt stoppet programmet ved å trykke på Avslutt-knappen? Har Avslutt-knappen riktig gråfarge etter at programmet er stoppet nå? j) Handlingskode for Oppkoplings-knappen: Når brukeren trykker på Oppkopling så skal det settes opp en forbindelse via USB-kabelen fra PC en og til K8055-kortet. Fordi en PC kan styre inntil fire kort må forbindelsen settes opp til det kortet som har riktig adresse. I tillegg kan det være at et annet program på PC en allerede har satt en forbindelse til kortet. NB! Bare den applikasjonen som har satt opp en USBforbindelse kan bryte den. Dersom USB-kabelen frakoples brytes automatisk forbindelsen. Derfor må følgende skje i blokkdiagrammet: (NB! De fire punktene som følger her er bare informasjon. Konkret programmering starter først i punkt j1) på neste side.) 1) Lukk forbindelsen til kortet. (Kommer konkret i punkt j3) 2) Les av hvilke lasker som brukeren har satt på kortet ved å lese av de to radioknappene SK5 og SK6. Konverter dette til ei adresse og skriv adressa i indikator-feltet KortAdresse. (Kommer konkret i punkt j4) 3) Åpn opp forbindelsen til kortet med angitt adresse og skriv svaret som kommer tilbake fra K8055-kortet i indikator-feltet Aktivt kort. (Kommer konkret i punkt j5) Side 32 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 21 4) Sjekk at det faktisk er satt opp en forbindelse til kortet på riktig adresse. Det er jo ikke sikkert at det finnes noe kort som er kopla til PC en med den adressa brukeren foreslår. Dersom forbindelsen er OK så skal lysdioden i frontpanelet merka Oppkopling OK? tennes. I motsatt fall skal den slukkes. (Kommer konkret i punkt j6) j1) Oppfanging av trykk på Oppkoplingsknappen: Høgreklikk i etiketten på øverste ramme til hendelsefella og velg Add Event Case... I vinduet som nå dukker opp velger du Oppkopling under Event Sources og Value Change under Events. Trykk OK. Nå skal du ha fått lagt til en ny hendelse som skal fanges opp i hendelsefella. j2) Noen av stegene 1 til 4 må skje i riktig rekkefølge. Det må derfor opprettes en sekvens-stakk inni hendelsefella for hendelsen Oppkopling. Opprett sekvensstakken med fire bilder på samme måte som i 3.3 punktene b, c og d. Sidesprang: Kopling av koden i blokkdiagrammet til DLL-fila med funksjoner som styrer K8055-kortet. På heimesidene til www.velleman.be finnes det mange eksempler på hvordan K8055-kortet kan programmeres i forskjellige programmeringsspråk. I tillegg finnes det ofte nyere og mer kompakte dll-filer enn det som følger med byggesettet. Det finnes muligheter for programmering i Visual Basic, Visual C/C++, Borland C/C++ og LabVIEW. I tillegg finnes det apper for styring av kortet med Android og iphone. For å programmere i LabVIEW er det nødvendig å benytte ei ferdig blokk i LabVIEW som kan brukes til å få tak i hver enkelte funksjon i en DLL. Forutsetninga for at dette skal funke er at man har tilgang på en beskrivelse av hvilke variable som går inn i en funksjon og hvilke variable som returneres fra funksjonen. I C kalles dette for en prototyp. For en DLL som skal brukes i C er gjerne disse samla i header-fila. I LabVIEW må du ha tilgang til de samme opplysningene. Dersom det finnes ei header-fil så er det greit å bruke informasjonen i denne. Dere skal bruke en samling sånne blokker som er laga ferdig av Per Hveem. I tillegg til blokkene må dere også ha tilgang på sjølve dll-fila som heter K8055D.dll. Blokkene i form av subvier og dll-fila ligger samla på katalogen: K:\Fag\AFT\EDT\_FAG\SANNTID\LabVIEW\K8055 subvi. Hver av disse subviene har sitt eget frontpanel. Ved å dobbeltklikke på blokka dukker frontpanelet opp. Det forteller hvilke variable som går inn og hvilke variable som kommer ut av blokka, men prototypene forteller også mye. Som vedlegg til denne øvinga finner du derfor også en utskrift av prototypene til den tilhørende headerfila. Dll-fil med driver 3.02 virker for Windows XP, Vista og Windows 7. Dll-fila inneholder mange nyttige funksjoner som kan brukes for å lese og skrive til K8055- kortet. Det er kommet ei dll-fil med driver 4.0, men den kan ikke uten videre byttes ut med driver 3.02. Det kan bety at det er noe galt i driver 4.0 fordi alle nye driverversjoner av dllfiler som ikke skifter navn skal være bakoverkompatible. Sidesprang slutt! j3) Henting av subviet CloseDevice: Få fram bilde 0 i sekvens-stakken som du nettopp har laga innihendelsefella. Gå deretter inn i Functions-vinduet Select a VI... Nå dukker det opp et filbehandlingsvindu. Der finner du fram til katalogen K:\Fag\AFT\EDT\_FAG\SANNTID\LabVIEW\K8055 subvi og velger K8055 Close Device.vi. Nå dukker det opp ei blokk som du plasserer som vist på figuren. I tillegg flytter du terminalen Oppkopling over fra bilde 0 i hovedsekvens-stakken over til bilde 0 i den lokale sekvens-stakken inni Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 33

Side 22 Dataøving 2 SANNTID Bli kjent medlabview hendelsefella som vist på neste figur. Legg merke til at NewVal ikke skal være tilkopla noe som helst. Når hendelsesfella er satt opp til å fange en hendelse vil det som står inni fella for den hendelsen automatisk bli kjørt. j4) Avlesing av radioknappene SK6 og SK6: Når brukeren trykker på Oppkopling skal verdien til radioknappene leses av, konverteres til et tall og skrives opp i indikatorfeltet. Hvordan dette kan gjøres er vist på figuren for bilde 1 i stakken: j4 I) j4 II) Hva er det matematiske uttrykket for Kortadresse som funksjon av SK5 og SK6? Kopl opp som vist på figuren. Tips: SK5, SK6 og KortAdresse er terminaler som allerede befinner seg et eller annet sted i blokkdiagrammet. Klarer du ikke finne terminalen kan du høgreklikke på tilsvarende objekter i frontpanelet og se om det er noe hjelp der. Resten av blokkene kan finnes i Controls-vinduet under Programming og enten i Boolean eller Numeric. Tips! Dersom terminalen KortAdresse ikke har rett datatype høgreklikker du på terminalen og velger Properties. Deretter går du inn på skillearket Data Type. Så klikker du på ikonet som står rett under Representation og velger rett datatype i boksen som dukker opp. j5) Åpning av forbindelsen til kortet: Verdien som kommer inn på terminalen KortAdresse skal også sendes over til K8055-kortet Side 34 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 23 for å sette opp forbindelsen. I bilde 2 på stakken i neste figur er boksen en lokal variabel. j5 I) j5 II) Lag den lokale variablen ved å høgreklikke på indikatoren KortAdresse i frontpanelet og så lage en lokal variabel. Plasser den lokale variabelen i bilde 2 som vist på figuren. Legg merke til at den lokale varabelen du får nå har en trekanta pil på venstre side side. Det er fordi den er av typen Write. Dvs at den kan skrive trådløst til indikatoren i frontpanelet. Vi ønsker å lese verdien fra indikatorfeltet og sende den videre på en ledning. Gjør den om til typen Read ved å høgreklikke på variabelen og så gjøre den om til Read. Nå skal den få tykkere blå ramme. j5 III) Hent inn subviet OpenDevice.vi og terminalen Aktivt kort og plasser dem i bilde 2 som vist på figuren. Foreta deretter sammenkopling med ledning. (OpenDevice prøver å kople opp forbindelsen til det kortet som innsignal viser. Dersom oppkoplinga går greit returneres nummeret på kortet som er kopla opp. Dersom kortet ikke finnes eller det ikke lykkes å sette opp forbindelsen returneres tallet -1.) j6) Tenning av lysdioden: Under Oppkoplings-knappen i frontpanelet er det plassert en lysdiode som indikator. Dersom oppkoplinga er vellykka skal denne lysdioden tennes. I motsatt fall skal den slukkes. En lysdiode har en logisk verdi av typen True (dvs sann) for å tennes og False (dvs usann) for å slukkes. Lag koplinga som vist i bilde 3 i neste figur. Tips! Det kan være lurt å prøvekjøre programmet nå og så rette opp eventuelle feil før du går videre. Virker det som det skal? For å følge med på hva som skjer i blokkskjemaet under programkjøring kan det være nyttig å trykke inn Highlightknappen. Tips! Alt tar fryktelig lang tid når Highlight-knappen er aktivert. Når du er ferdig med prøvekjøringa er det lurt å deaktivere Highlight-knappen. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 35

Side 24 Dataøving 2 SANNTID Bli kjent medlabview k) Oppfanging av trykk på Sett alle digitale-knappen: Høgreklikk i etiketten på øverste ramme til hendelsefella og velg Add Event Case... I vinduet som nå dukker opp velger du Sett Alle Digitale under Event Sources og Value Change under Events. Trykk OK. Nå skal du ha fått lagt til en ny hendelse som skal fanges opp i hendelsefella. Hent inn rett subvi og rett terminal så du får det som på figuren. l) Oppfanging av trykk på Nullstill alle digitale-knappen: Gjør det samme som i k), men nå for Nullstill alle digitale-knappen. Prøvekjør programmet. Får du tent og slukka diodene LD1 til LD8 på kortet? m) Oppfanging av trykk på Les alle digitale-knappen: Fra Read All Digitalblokka kommer det et heltall som kan tolkes binært. De fem minst signifikante bit-ene tilsvarer da de fem trykk-knappene Inp1 til Inp 5 på K8055-kortet. 1 betyr at knappen holdes inne. 0 at den står ute. Disse enerne og nullene må så konverteres til True eller False (True 6 1 og False 6 0) for at lysdiodene på frontpanelet under Les alle digitale-knappen skal lyse riktig. Fra Read All Digital-blokka går signalet til terminalen Leste Digitale. Men det går også en avgreining til ei Number To Boolean Array-blokk og videre til ei Array To Cluster-blokk og så videre til ei Unbundle-blokk før det går til lysdiodene. NB! Unbundle-blokka får automatisk like mange utgangeer som bit i innsignalet når inngangen koples til! De nye blokkene finner du i Controls-vinduet under Programming og videre ned i Boolean eller Array eller Cluster, Class, & Variant. Utvid hendelsefella til også å fange opp trykk på Les alle digitale-knappen. Kopl deretter opp som vist på figuren og test om det virker. n) Oppfanging av trykk på Sett alle analoge-knappen: Utvid hendelsefella til også å fange opp trykk på Sett alle analoge-knappen. Kopl deretter opp som vist på neste figur og test om det virker. Side 36 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 25 o) Oppfanging av trykk på Nullstill alle analoge-knappen: Utvid hendelsefella til også å fange opp trykk på Nullstill alle analoge-knappen. Kopl deretter opp ut fra den kunnskapen du nå har og test om det virker. p) Oppfanging av trykk på Les alle analoge-knappen: Utvid hendelsefella til å fange opp trykk på Les alle analoge-knappen. Kopl deretter opp som vist på figuren og test om det virker. q) Oppfanging av innmating i innmatingsfeltet DA1: Utvid hendelsefella til å fange opp innmating i DA1-feltet. Kopl deretter opp som vist på figuren og test om det virker. Tallet 1 i konstantblokka gir beskjed til Output Analog Channel-blokka om at det er utgangen DAC1 på kortet som skal stilles inn på ei spenning som tilsvarer tallet DA1-feltet. r) Oppfanging av innmating i innmatingsfeltet DA2: Utvid hendelsefella til også å fange opp innmating i DA2-feltet. Kopl deretter opp ut fra den kunnskapen du nå har og test om det virker. s) Oppfanging av trykk på Sjekk DLL-knappen: Utvid hendelsefella til å fange opp trykk på Sjekk DLL-knappen. Plasser en sekvens-stakk i fella for denne hendelsen. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 37

Side 26 Dataøving 2 SANNTID Bli kjent medlabview s1) Kopl deretter opp som vist på neste figur. I bilde 0 i sekvens-stakken er det brukt ei One Button Dialog-blokk. Denne brukes for å lage sprettoppvinduer på skjermen. Den øverste tekststrengen viser meldinga som skal vises i meldingsboksen. Den andre tekststrengen viser hva som skal stå på knappen nederst i meldingsboksen. Blokka finner du i Controls-vinduet under Programming og videre ned i Dialog & User Interface. Tekststrengene skriver du sjøl inn i en String Constant som du finner under Programming/String. Den øverste tekststrengen viser hva som skal stå inni boksen, mens den nederste viser hva som skal stå på knappen som lukker boksen. s2) Kopl deretter opp bilde 1 i sekvens-stakken som vist på neste figur og test ut om det virker. s3) Hvorfor er det brukt en sekvens-stakk her? t) Oppstartskode: På bilde nummer 0 på hovedsekvensstakken er det nå greit å programmere det som skal skje ved oppstart av programmet. Det kan være spesielle startverdier som skal settes hver gang programmet starter opp. Kopl opp som vist på neste figur. Side 38 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 27 u) Avsluttingskode: På bilde nummer 2 på hovedsekvensstakken er det nå greit å programmere det som skal skje ved avslutting av programmet. Det kan f eks være spesielle slutt-tilstander som ekstern utstyr skal ha før de frakoples. Kopl opp som vist på figuren. Fordi det er god plass er det her ikke brukt en sekvens-stakk med bildene oppå hverandre, men i stedet en Flat Sequence Structure som viser bildene etter hverandre som en slags film. Nye bilderuter legges inn ved å høgreklikke i øvre ramme og velge Add Frame After. Se på blokkene! Hva skjer når avsluttingskoden kjøres. 4 Testing av programmet IOtest1? Programmet er ikke uten videre feilfritt fordi om LabVIEW har sjekka det og det lar seg kjøre. Det må det testes for andre typer feil. Oppfører programmet seg som det skal også når det Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 39

Side 28 Dataøving 2 SANNTID Bli kjent medlabview brukes opp mot K8055-kortet.? Hvis det er ting som ikke virker må du eventuelt rette dem opp i ditt program etter hvert som du går gjennom testene under.. Pass på at adresselaskene på kortet ditt stemmer med det du merker av før du trykker på oppkoplingsknappen. Dersom oppkoplinga fra PC til kort er OK vil det markeres med at lysdioden Oppkopling OK? tennes og viser grønt lys i frontpanelet. a) Får du grønt lys på lysdioden i frontpanelet? b) Test de digitale utgangene ved å kontrollere at du får tent og slukka alle lysdiodene. Virker lysdiodene LD1.. LD8 som de skal? c) Test de digitale inngangene ved trykke på de 5 bryterne merka Inp1..Inp5 etter tur. Virker de digitale inngangene som de skal? d) Test de analoge utgangene. d1) Trykk på Sett alle analoge-knappen. Lyser lysdiodene PW1 og PW2? d2) Trykk på Nullstill alle analoge-knappen. Slukker lysdiodene PW1 og PW2? d3) Prøv med verdiene 0, 50, 100, 150, 200 og 255 på innmatingsfeltet til DA1 Lyser lysdioden PW1omtrent proporsjonalt med den analoge verdien du sender ut? d4) Prøv med verdiene 0, 50, 100, 150, 200 og 255 på innmatingsfeltet til DA2 Lyser lysdioden PW2omtrent proporsjonalt med den analoge verdien du sender ut? e) Test av analoge innganger gjøres i første omgang med laskene SK2 og SK3 tilkopla. Da kan du variere spenninga på AD1 og AD2 ved hjelp av potmetrene. e1) Sett det ene potmeteret i den ene ytterstillingen og det andre potmeteret i motsatt ytterstilling. Trykk på Les alle analoge-knappen. Hva leser du av på AD1 og AD2? AD1 =,AD2= Er dette rett? e2) Bytt ytterstilling på de to potmetrene. Trykk på Les alle analoge-knappen. Hva leser du av på AD1 og AD2? AD1 =, AD2= Er dette rett? f) Det er en svakhet i programmet du har laga. Når du trykker Sett alle analoge-knappen så sender du 255 til både DA1 og DA2. Men hva viser innmatingsfeltene for DA1 og DA2? DA1=, DA2=. Hva skulle de ha vist? Trykk på Nullstill alle analoge-knappen. Da sender du 0 til både DA1 og DA2. Men hva viser innmatingsfeltene for DA1 og DA2? DA1=, DA2=. Hva skulle de ha vist Side 40 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

Dataøving 2 SANNTID Bli kjent med LabVIEW Side 29 Skal programmet være enkelt å bruke bør de vise 255 i det første tilfellet og null i det andre tilfellet. Hvordan kan du få til det? Gjør om programmet så det viser rette verdier for DA1 og DA2 både når du trykker på Sett alle analoge-knappen og når du trykker på Nullstill alle analoge-knappen. 5 Rydding i frontpanel og blokkdiagram Når programmet er ferdig og alt virker er tida kommet for å rydde i frontpanelet. Flytting av objektene eller endring på størreslse, farge ol påvirker ikke virkemåten til programmet. For å få objekter til å stå plassert på linje kan det være et tips å se på knappene. Finjustering av et objekt kan også gjøres ved å markere objektet og så bruke piltastene. a) Har du tid kan du prøve å få frontpanelet ditt til å se litt bedre ut. Mange synes kanskje at koding i blokkdiagrammet er god nok dokumentasjon av virkemåten til programmet, men for andre enn den som har laga programmet er det sjelden godt nok. Ved å sette på kommentartekst direkte i blokkdiagrammet er det mulig å få til brukbar dokumentasjon. b) Har du tid så prøv å sette på tekster i blokkdiagrammet som forklarer hva som skjer i de forskjellige delene av programmet. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 41

Side 30 Dataøving 2 SANNTID Bli kjent medlabview Vedlegg: Funksjoner i K8055D.dll fila som alle har fått subvi er for bruk i LabVIEW: NB! Datatypen long i prototypene her tilsvarer datatypen signed 32 bit integer i LabWiew. Datatypen char tilsvarer unsigned 8 bit integer i LabVIEW Forfatteren (PHv) har laga subvi er i LabVIEW som bruker disse prototypene for oppkopling mot funksjonene som finnes i K8055D.dll fila. Disse subvi ene er samla i katalogen K8055 subvi. SubVI ene heter det samme som funksjonene, men med K8055 foran. SubVI et til funksjonen OpenDevice heter da K8055 OpenDevice.vi. Denne har en input-kopling og en output-kopling. SubVI et til funksjonen CloseDevice heter K8055 CloseDevice.vi og har ingen input-kopling og heller ingen output-kopling. SubVI et til funksjonen ReadAnalogChannel heter K8055 AnalogChannel osv. Prototyper for K8055D.dll henta fra K8055D.h: FUNCTION long stdcall OpenDevice(long CardAddress); Åpn opp forbindelsen til et K8055-kort med angitt adresse. Dersom forbindelsen er OK returneres adressa til kortet. Hvis ikke returneres verdien -1. FUNCTION void stdcall CloseDevice(void); Steng forbindelsen til kortet. FUNCTION long stdcall ReadAnalogChannel(long Channel); Les verdien fra AD-omformer på angitt kanal. FUNCTION void stdcall ReadAllAnalog(long *Data1, long *Data2); Les verdien på begge AD-kanaler samtidig. FUNCTION void stdcall OutputAnalogChannel(long Channel, long Data); Send verdien til angitt kanal på DA-omformeren. FUNCTION void stdcall OutputAllAnalog(long Data1, long Data2); Send verdier til begge DA-kanaler samtidig. FUNCTION void stdcall ClearAnalogChannel(long Channel); Nullstill angitt DA-kanal. FUNCTION void stdcall ClearAllAnalog(void); Nullstill begge DA-kanaler samtidig. FUNCTION void stdcall SetAnalogChannel(long Channel); Send 255 til angitt DA-kanal så den får maks spenning. FUNCTION void stdcall SetAllAnalog(void); Send 255 til begge DA-kanaler så de får maks spenning. FUNCTION void stdcall WriteAllDigital(long Data); Send en verdi til de digitale utgangene sånn at bitmønsteret bestemmer hvilke utganger som blir høge og lave. En gir høg utgang og null lav. Side 42 Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012

FUNCTION void stdcall ClearDigitalChannel(long Channel); Nulstill angitt digital utgang. FUNCTION void stdcall ClearAllDigital(void); Nulstill alle de digitale utgangene. FUNCTION void stdcall SetDigitalChannel(long Channel); Sett angitt digital utgang høg. FUNCTION void stdcall SetAllDigital(void); Sett alle digitale utganger høge. FUNCTION char stdcall ReadDigitalChannel(long Channel); Les digitale inngangene. En viser høg inngang og null lav. Dataøving 2 SANNTID Bli kjent med LabVIEW Side 31 FUNCTION long stdcall ReadAllDigital(void); Les en 8-bit verdi hvor bitmønsteret på de 5 minst signifikante bitene angir bitmønsteret på de digitale inngangene. En viser høg inngang og null lav. FUNCTION long stdcall ReadCounter(long CounterNr); De digitale inngangene kan koples opp mot en teller som teller antall ganger inngangen går høg. Avlesing av teller på angitt inngang. FUNCTION void stdcall ResetCounter(long CounterNr); Nullstilling av teller på angitt inngang. FUNCTION void stdcall SetCounterDebounceTime(long CounterNr, long DebounceTime); Setting av prelltid (i millisekunder?) på angitt inngang. FUNCTION void stdcall Version(void); Viser hvilken versjon av K8055D.dll som brukes. FUNCTION long stdcall SearchDevices(void); Returnerer adressa til gjeldende aktive K8055-kort. FUNCTION long stdcall SetCurrentDevice(long lngcardaddress); Skift aktivt kort til kortet med den angitte adressa. NB! Funksjonene SearchDevices og SetCurrentDevice er mest aktuelle når ett og samme program skal styre flere K8055-kort samtidig. Disse funksjonene må brukes i stedet for OpenDevice. Styring og regulering av prosesser med PC ved hjelp av K8055-kortet og LabVIEW 2012 Side 43