upravljanje maketom dizalice · korisničko sučelje i blok dijagram vi-a koji je korišten za...
TRANSCRIPT
TEHNIČKO VELEUČILIŠTE U ZAGREBU
STRUČNI STUDIJ ELEKTROTEHNIKE
Josip Kordek
UPRAVLJANJE MAKETOM DIZALICE
POMOĆU IR DALJINSKOG UPRAVLJAČA
ZAVRŠNI RAD br. 1935
Zagreb, rujna 2016.
Sažetak
Ovaj završni rad dodatak je već postojećem projektu upravljanja maketom dizalice
pomoću programske podrške razvijene u LabVIEW programskom jeziku. Osim
direktnog upravljanja pomoću računala omogućuje i upravljanje maketom pomoću IR
daljinskog upravljača. Predstavljeni su razni problemi koji su se pri tome pojavili te
njihova rješenja u obliku preinaka koda već postojećih VI-eva kao i dodatni kod
potreban za pravilan rad daljinskog upravljača. Opisan je i način pronalaska binarnih
kombinacija za pojedinu tipku unatoč nedostupnim informacijama o samom
daljinskom upravljaču. Objašnjen je i način na koji LabVIEW prepoznaje kratki i dugi
pritisak tipke daljinskog upravljača te način na koji se ta informacija iskorištava za
daljnje upravljanje DC i koračnim motorima.
Sadržaj
1. Ukratko o dizalici ................................................................................................................................. 1
1.1 Izgled korisničkog sučelja (Front Panel) ........................................................................................ 2
1.2 Izgled blok dijagrama (Block Diagram) .......................................................................................... 3
2. Daljinski upravljač i oprema ................................................................................................................ 6
2.1 Snimanje analognog signala .......................................................................................................... 6
2.2 Očitavanje binarnih kodova ......................................................................................................... 11
2.3 NEC IR protokol ........................................................................................................................... 13
3. Glavni VI i ostali PodVI-evi ................................................................................................................. 15
3.1 Dijagram toka .............................................................................................................................. 15
3.2 Proizvođač/Potrošač (Producer/Consumer) arhitektura (za obradu podataka)......................... 16
3.3 Korišteni PodVI-evi ...................................................................................................................... 17
3.3.1 Vrhovi-polje .......................................................................................................................... 17
3.3.2 Logička 0 ili 1 ........................................................................................................................ 18
3.3.3 Provjera ................................................................................................................................ 20
3.4 Korisničko sučelje glavnog VI-a ................................................................................................... 22
3.5 Blok dijagram glavnog VI-a .......................................................................................................... 23
3.6 Modularnost upravljačkog programa .......................................................................................... 29
4. Zaključak ............................................................................................................................................ 30
5. Literatura ........................................................................................................................................... 31
Popis tablica Tablica 1 Binarni kodovi ........................................................................................................................ 12
Popis slika Slika 1 Korisničko sučelje glavnog VI-a .................................................................................................... 2
Slika 2 Glavni VI - slučaj 0 ........................................................................................................................ 3
Slika 3 Glavni VI - slučaj 1 ........................................................................................................................ 3
Slika 4 Glavni VI - slučaj 2 ........................................................................................................................ 4
Slika 5 Glavni VI - slučaj 3 ........................................................................................................................ 4
Slika 6 Glavni VI - slučaj 4 ........................................................................................................................ 5
Slika 7 Glavni VI - slučaj 5 ........................................................................................................................ 5
Slika 8 Glavni VI - slučaj 6 ........................................................................................................................ 6
Slika 9 Prikaz AUDIO ulaza i izlaza ........................................................................................................... 7
Slika 10 Postavke funkcije DAQ pomoćnik ............................................................................................. 8
Slika 11 PodVI za usrednjavanje n uzastopnih vrijednosti ...................................................................... 8
Slika 12 Postavke funkcije Filter .............................................................................................................. 9
Slika 13 Primjer signala bez filtriranja ................................................................................................... 10
Slika 14 Izgled signala sa slike 13 nakon primjene funkcije Filter ......................................................... 10
Slika 15 Korisničko sučelje VI-a korištenog za očitavanje binarnih kodova .......................................... 11
Slika 16 Blok dijagram VI-a korištenog za očitavanje binarnih kodova ................................................. 11
Slika 17 Primjer NEC IR protokola - adresa 00h i naredba ADh ............................................................. 13
Slika 18 Primjer koda za ponavljanje ..................................................................................................... 14
Slika 19 Dijagram toka ........................................................................................................................... 15
Slika 20 Proizvođač/Potrošač arhitektura ............................................................................................. 16
Slika 21 Korisničko sučelje PodVI-a Vrhovi-polje ................................................................................... 17
Slika 22 Blok dijagram PodVI-a Vrhovi-polje ......................................................................................... 17
Slika 23 Slučaj Laž druge izborne strukture ........................................................................................... 18
Slika 24 Korisničko sučelje PodVI-a Logička 0 ili 1 ................................................................................. 18
Slika 25 Blok dijagram PodVI-a Logička 0 ili 1 ........................................................................................ 19
Slika 26 Korisničko sučelje PodVI-a Provjera ......................................................................................... 20
Slika 27 Blok dijagram PodVI-a Provjera ............................................................................................... 21
Slika 28 Korisničko sučelje glavnog VI-a ................................................................................................ 22
Slika 29 Blok dijagram glavnog VI-a ....................................................................................................... 23
Slika 30 Property Node-ovi kontrola ..................................................................................................... 24
Slika 31 Dio koda velike izborne strukture ............................................................................................ 25
Slika 32 Dio koda u kojem se pretražuju polja ...................................................................................... 26
Slika 33 Compound Arithmetic funkcija ................................................................................................ 26
Slika 34 Istinit slučaj prve izborne strukture ......................................................................................... 27
Slika 35 Potrošač petlja ......................................................................................................................... 28
1
1. Ukratko o dizalici
Dizalica je nastala kao projekt iz kolegija LabVIEW grafičko programiranje u
suradnji s kolegom Mariom Lučanom. U izvornoj izvedbi makete korištena su samo
dva DC motora pri čemu se prvim otvarala i zatvarala hvataljka dok je drugi služio za
rotacijsko pomicanje krana odnosno podizanje i spuštanje hvataljke ovisno o položaju
ručice mehanizma. Navedenu ručicu bilo je potrebno mehanički preklopiti kako bi se
odabrao način upravljanja. Kako bi se eliminirao spomenuti nedostatak, mehanizam je
preuređen te je ugrađen dodatni koračni motor koji služi za pomicanje krana bez
potrebe djelovanja na ručicu.
Dizalicom se u početku u LabVIEW-u upravljalo pomoću Arduino Uno
mikrokontrolera ali je zbog puno bolje podrške te lakšeg i intuitivnijeg programiranja
prijeđeno na NI myDAQ akvizicijski uređaj. Zbog promjene načina upravljanja
motorima bila je potrebna potpuna promjena koda što je u konačnici uzrokovalo
pronalaženje alternativnih načina slanja i primanja podataka. Usprkos tome, zbog puno
lakšeg korištenja myDAQ-a u LabVIEW okolini, novi način upravljanja izveden je u vrlo
kratkom roku.
Glavni VI izvornog projekta sadrži Event Structure funkciju čiji se slučajevi
izvršavaju ovisno o promjeni stanja Boolean tipkala na korisničkom sučelju. Ovakav
pristup omogućio je realizaciju vrlo učinkovitog koda koji je zahtijevao manje resursa
(radne memorije i opterećenosti procesora) od nekih drugih rješenja. Ovo je također
uzrokovalo neke probleme kod implementacije upravljanja pomoću daljinskog
upravljača zbog potrebe stalnog praćenja odnosno analiziranja analognog signala
AUDIO IN ulaza myDAQ akvizicijskog uređaja.
Za upravljanje motorima korištena su dva SN754410NE drivera pri čemu je
jedan kasnije zamijenjen s L298N zbog toga što koračni motor nije mogao razviti
dovoljan moment radi ograničenja struje koju je driver mogao podnijeti.
2
1.1 Izgled korisničkog sučelja (Front Panel)
Korisničko sučelje sadrži kontrole za upravljanje dizalicom pri čemu se
spuštanje i podizanje te otvaranje i zatvaranje hvataljke kontrolira vremenski nakon
zadane komande, dok se pomicanje krana izvodi samo dok je pritisnuto jedno od
tipkala.
Slika 1 Korisničko sučelje glavnog VI-a
3
1.2 Izgled blok dijagrama (Block Diagram)
Slika 2 Glavni VI - slučaj 0
Slika 3 Glavni VI - slučaj 1
4
Slika 4 Glavni VI - slučaj 2
Slika 5 Glavni VI - slučaj 3
5
Slika 6 Glavni VI - slučaj 4
Slika 7 Glavni VI - slučaj 5
6
Slika 8 Glavni VI - slučaj 6
Na slikama 2-8 prikazani su svi slučajevi Event Structure funkcije.
2. Daljinski upravljač i oprema
Korišteni daljinski upravljač nema istaknuto ime proizvođača zbog čega nije bilo
moguće doći do popisa binarnih kombinacija za pojedinu tipku. Problem je riješen na
način da su ručno snimljeni kodovi iz signala pomoću LabVIEW-a. Snimljeni signal
zatim je prebačen u polje numeričkih vrijednosti čime je olakšan postupak očitavanja
binarnih kombinacija. Dijelovi tih kodova su kasnije iskorišteni za analizu odnosno
prepoznavanje pritiska tipki.
2.1 Snimanje analognog signala
Daljinski upravljač je došao s uparen s IR detektorom koji na priključnom kraju
ima 3.5 mm priključak čime je olakšano spajanje senzora na myDAQ. Naime, myDAQ
posjeduje AUDIO IN i AUDIO OUT ulaze pri čemu je AUDIO IN (3.5 mm port) iskorišten
za očitavanje analognog signala.
7
Za snimanje analognog signala iskorišten je funkcija DAQ pomoćnik (DAQ
Assistant) koja olakšava akviziciju signala na način da korisniku daje grafičko sučelje
u kojem se jednostavno mijenjaju postavke bez potrebe za korištenjem mnogo low
level funkcija. Kao način akvizicije odabrana je opcija kontinuiranog uzorkovanja
(Continous Samples), broj uzoraka (Samples to Read) je postavljen na 9000 dok je za
uzorkovanje odabrana frekvencija 90 kHz. Ta je vrijednost odabrana zbog činjenice da
infracrvena LED šalje signal frekvencije 38.2 kHz a prema Nyquistovom teoremu,
frekvencija uzorkovanja mora biti najmanje dva puta veća od najveće frekvencije
sadržane u signalu koji se uzorkuje. S obzirom da je f = 38,2 × 2 = 76,4 kHz,
odabrana je vrijednost od 90 kHz kao dovoljno velika. Raspon ulaznog signala (Signal
Input Range) postavljen je od +2 V do −2 V dok je broj uzoraka postavljen kao desetina
vrijednosti frekvencije čime je postignuto da vremenska duljina signala iznosi 100 ms.
Slika 9 Prikaz AUDIO ulaza i izlaza
8
Ovako dobiveni signal sadržavao je veliku količinu šuma te je zbog toga bio
gotovo neiskoristiv. Prvi pokušaj filtriranja signala izvršen je uz pomoć dijela koda koji
je usrednjavao n uzastopnih vrijednosti. Takav pristup nije bio dovoljno dobar jer se
gubio i dio korisnih informacija te je stoga zamijenjen funkcijom Filter.
Slika 10 Postavke funkcije DAQ pomoćnik
Slika 11 PodVI za usrednjavanje n uzastopnih vrijednosti
9
Za tip filtera (Filtering Type) odabran je pojasni propust (Bandpass) čime je
postignuto propuštanje samo određenih frekvencija. Za donju graničnu frekvenciju
(Low cutoff frequency) odabrana je vrijednost 100 Hz dok je za gornju graničnu
frekvenciju (High cutoff frequency) odabrana vrijednost od 1200 Hz. Vrijednosti tih
frekvencija određene su empirijskim metodama odnosno pri njima je signal dovoljno
dobro filtriran za daljnje korištenje za ovu primjenu.
Slika 12 Postavke funkcije Filter
10
Slika 14 Izgled signala sa slike 13 nakon primjene funkcije Filter
Slika 13 Primjer signala bez filtriranja
11
2.2 Očitavanje binarnih kodova
Kao primjer očitavanja binarnih kodova odabrana je tipka 2. Postupak je
analogan svim ostalim tipkama stoga one nisu detaljno obrađene.
Korisničko sučelje i blok dijagram VI-a koji je korišten za očitavanje kodova (u
trenutku pritiskanja tipke 2):
Slika 15 Korisničko sučelje VI-a korištenog za očitavanje binarnih kodova
Slika 16 Blok dijagram VI-a korištenog za očitavanje binarnih kodova
12
U trenutku pritiska tipke 2 vidljiv je filtrirani signal te jednodimenzionalno polje
numeričkih vrijednosti koje predstavlja binarni kod (na slici 15 vidljivi su posljednji bitovi
binarne kombinacije). Detaljan način rada ovog VI-a u objašnjen je u sljedećim
poglavljima jer se svi PodVI-evi koji se ovdje pojavljuju koriste i u glavnom VI-u za
upravljanje dizalicom.
Binarni kodovi za tipke potrebne za upravljanje dizalicom:
Tipka Binarni kod
2 0110 0001 1101 0110 1101 0000 0010 1111
4 0110 0001 1101 0110 1010 0000 0101 1111
5 0110 0001 1101 0110 1001 0000 0110 1111
6 0110 0001 1101 0110 0101 1000 0101 0111
8 0110 0001 1101 0110 0101 0000 1010 1111
Tablica 1 Binarni kodovi
Za prepoznavanje pritiska pojedine tipke nisu iskorišteni svi bitovi binarnog koda
jer nisu niti potrebni. Dio koda se ponavlja (specifičan za proizvođača daljinskog
upravljača) te se stoga uzima samo dio koji je različit kod svake tipke što olakšava
postupak i brzinu prepoznavanja pritiska. Taj je dio binarnog koda u tablici 1 masno
istaknut.
13
2.3 NEC IR protokol
Kod NEC IR protokola koriste se (vremenske) udaljenosti između pulseva kako
bi se prenijele informacije. Širina pulsa iznosi 562.5 𝜇𝑠 dok je frekvencija prijenosa
38.2 𝑘𝐻𝑧. Logička 0 se smatra ako je puls širine 562.5 𝜇𝑠 popračen razmakom (praznim
intervalom) od 562.5 𝜇𝑠 dok se logička 1 smatra ako je puls širine 562.5 𝜇𝑠 popračen
razmakom od 1.6875 𝑚𝑠.
Prilikom pritiska tipke na daljinskom upravljaču prenosi se poruka koja sadrži:
Početni puls širine 9 𝑚𝑠
Razmak od 4.5 𝑚𝑠
Adresu od 8 bitova za uređaj koji prima poruku
Prethodnu adresu od 8 bitova koja je logički invertirana
Naredbu od 8 bitova
Prethodnu naredbu od 8 bitova koja je logički invertirana
Posljednji puls širine 562.5 𝜇𝑠 koji označava kraj prijenosa
Za prepoznavanje dugog pritisaka tipke daljinskog upravljača koristi se kod za
ponavljanje koji se uobičajeno počinje prenositi 40 𝑚𝑠 nakon posljednjeg pulsa
označenog na kraju prijenosa poruke. Taj kod se šalje u intervalima od 108 𝑚𝑠 sve dok
se tipka ne prestane držati.
Slika 17 Primjer NEC IR protokola - adresa 00h i naredba ADh
14
Kod za ponavljanje sadrži:
Početni puls širine 9 𝑚𝑠
Razmak od 2.25 𝑚𝑠
Puls širine 562.5 𝜇𝑠 koji označava kraj razmaka
Izgled tih pulseva prikazan je na slici 14 gdje je vidljivo da to zapravo nije
pravokutni signal. Svaki puls ima jednu lokalnu maksimalnu vrijednost pri čemu
razmak odnosno broj uzoraka između tih lokalnih maksimalnih vrijednosti uvelike
olakšava posao prepoznavanja binarnog koda što je detaljnije objašnjeno u
poglavljima 3.3.1 i 3.3.2.
Slika 18 Primjer koda za ponavljanje
15
Slika 19 Dijagram toka
3. Glavni VI i ostali PodVI-evi
3.1 Dijagram toka
16
3.2 Proizvođač/Potrošač (Producer/Consumer) arhitektura (za obradu podataka)
Glavni VI bazira se na Proizvođač/Potrošač arhitekturi za obradu podataka.
Njene paralelne petlje su podijeljene u dvije kategorije; petlja koja proizvodi podatke i
petlja koja obrađuje te podatke. Direktan prijenos podataka između dvije paralelne
petlje u LabVIEW-u nije izvediv (osim s lokalnim odnosno globalnim varijablama što
nije dobra praksa zbog problema regulacije istovremenog pristupa) te se stoga u ovoj
arhitekturi za komunikaciju između petlji problem izbjegava korištenjem redova ili
stogova (Queues). Time je spriječen i gubitak podataka jer se svi podaci koji se
nalaze u stogu uvijek obrađuju. Važno je napomenuti da se u glavnom VI-u za
upravljanje dizalicom kao tip podatka koristi jednodimenzionalno polje s 10 Boolean
vrijednosti koje predstavljaju jednu tipku. Ako se želi koristiti još tipki dovoljno je
dodati još konstanti unutar polja.
Slika 20 Proizvođač/Potrošač arhitektura
17
3.3 Korišteni PodVI-evi
3.3.1 Vrhovi-polje
Korisničko sučelje ovog PodVI-a sastoji se od numeričke kontrole koja služi za
određivanje visine vrhova koji se pohranjuju u polje, valnog oblika te dva polja
numeričkih vrijednosti.
Pomoću funkcije Get Waveform Components dohvaćaju se naponske Y
vrijednosti valnog oblika u obliku 1D polja numeričkih vrijednosti. FOR petlja izvodi se
upravo onoliko puta koliko to polje ima elemenata zbog opcije indeksacije ulaznog
podatka. U petlji se nalazi pet posmačnih (Shift) registara od kojih je prvi inicijaliziran
kao polje numeričkih vrijednosti bez elemenata dok su ostala četiri inicijalizirana na
numeričku vrijednost 0. Ovaj VI služi za detektiranje maksimalnih vrijednosti valnog
oblika i količinu uzoraka odnosno numeričkih vrijednosti između dva uzastopna vrha.
Istinit (True) slučaj prve izborne (Case) strukture služi za detekciju maksimalne
vrijednosti polja i izvršava se kada je zadovoljen uvjet i > 1.
Slika 21 Korisničko sučelje PodVI-a Vrhovi-polje
Slika 22 Blok dijagram PodVI-a Vrhovi-polje
18
Slika 23 Slučaj Laž druge izborne strukture
Slika 24 Korisničko sučelje PodVI-a Logička 0 ili 1
Ukoliko on nije zadovoljen, izvršava se slučaj Laž (False) izborne strukture u
kojem se samo prosljeđuje vrijednost 0. U posmačne registre se šalju tri vrijednosti
različitih iteracija petlje. Zatim se ispituje da li je vrijednost srednjeg posmačnog
registra maksimalna vrijednost na način da se uspoređuje s trenutnom i prethodnom
vrijednošću. Ukoliko je vrijednost maksimalna (vrh) odnosno veća od prethodne i
trenutne vrijednosti ona se prosljeđuje dalje. Ako provjerena vrijednost ipak nije vrh,
prosljeđuje se vrijednost 0.
Druga izborna struktura služi za stvaranje polja. Ako je numerička vrijednost
dovedena iz prve izborne strukture različita od nule, stvara se polje pomoću funkcije
stvaranja polja (Build Arrary) s time da se u polje naizmjence upisuju vrijednosti Y
(napon) i količine uzoraka između njih. Ukoliko je dovedena vrijednost 0, polje se ne
mijenja već se prosljeđuje u sljedeću iteraciju pomoću posmačnih registra ali se
povećava vrijednost posmačnog registra koji služi za brojanje uzoraka:
3.3.2 Logička 0 ili 1
Korisničko sučelje ovog VI-a sadrži dva polja numeričkih vrijednosti. Polje 3 je
kontrola dok je Polje 4 indikator.
19
PodVI Logička 0 ili 1 sadrži dvije FOR petlje. Prva petlja se izvršava onoliko puta
koliko polje Polje 3 ima elemenata. Posmačni registar inicijaliziran je kao polje
numeričkih vrijednosti s 0 elemenata. 200 uzoraka predstavlja logičku 1 dok 100
uzoraka predstavlja logičku 0 (ovo je zaključeno na osnovi dobivenih podataka iz
polja). Stoga, ukoliko je vrijednost elementa polja u granicama od 180 do 220 ili od 80
do 120, izvršava se istinit slučaj izborne strukture u kojem se pomoću funkcije stvaranja
polja dobiva polje tih vrijednosti koje zadovoljavaju navedene uvjete. Ukoliko se
element polja ne nalazi unutar tih granica, izvršava se lažan slučaj izborne strukture u
kojem se polje samo prosljeđuje u sljedeću iteraciju.
Druga petlja također se izvršava onoliko puta koliko ulazno polje sadrži
elemenata. U posmačnom registru je kao početna vrijednost postavljena konstanta
polja numeričke vrijednosti bez elemenata. U svakoj iteraciji petlje ispituje se da li je
element polja veći od 121. Ukoliko jest, radi se o logičkoj 1 dok se u protivnom radi o
logičkoj 0. U oba slučaja se dobivena vrijednost prosljeđuje dalje do funkcije stvaranja
polja gdje se zatim dobiva polje koje sadrži samo numeričke vrijednosti 0 ili 1.
Granice između kojih se vrijednost smatra da je logička 0 ili 1 su određene na
način da se tolerira pogreška od 10% što povećava mogućnost prepoznavanja pritiska
tipke daljinskog upravljača u slučaju smetnji.
Slika 25 Blok dijagram PodVI-a Logička 0 ili 1
20
3.3.3 Provjera
Korisničko sučelje PodVI-a Provjera sadrži klaster Boolean indikatora i polje
numeričkih vrijednosti Polje 5 koje je kontrola.
Na slici 27 prikazan je blok dijagram PodVI-a Provjera koji služi za provjeru da
li polje numeričkih vrijednosti odgovara jednom od polja konstanti koja predstavljaju
dio binarnog zapisa određene tipke. Navedeno je 10 dijelova binarnih kodova (za tipke
0, 1, 2, 3, 4, 5, 6, 7, 8 i 9) ali kao što je već prije navedeno, za upravljanje maketom
dizalice koriste se samo tipke 2, 4, 5, 6 i 8. U FOR petlji nalaze se dva posmačna
registra pri čemu je prvi inicijaliziran na vrijednost dovedenog numeričkog polja dok je
u drugom sadržan klaster Boolean konstanti. Broj iteracija petlje m određen je kao:
m = n − 8 + 1
pri čemu je n broj elemenata polja Polje 5 koji se određuje pomoću funkcije veličine
polja (Array Size) dok vrijednost 8 predstavlja broj bitova binarnog koda koji se
provjerava. Kada je brojač iteracija petlje i = 0, Polje 5 se prosljeđuje u iduću iteraciju.
Za sve ostale iteracije izvodi se lažan slučaj izborne strukture u kojoj se nalazi funkcija
brisanja elemenata polja (Delete From Array). Navedena funkcija u ovom slučaju briše
posljednji element u polju te se zatim u sljedeću iteraciju prosljeđuje dio polja kojem je
taj element obrisan.
Slika 26 Korisničko sučelje PodVI-a Provjera
21
Druga funkcija za brisanje elemenata polja (koja se nalazi izvan izborne
strukture služi za brisanje određenog broja početnih elemenata 1D polja numeričkih
vrijednosti ovisno o broju elemenata polja Polje 5. Dobiveno polje bez obrisanih
vrijednosti stoga uvijek ima 8 elemenata koji se „pomiču“ kroz polje i uspoređuju to
polje s jednim od konstanti (10 polja Boolean konstanti koja predstavljaju posljednjih 8
bitova binarnih kombinacija za svaku pojedinu tipku). Ukoliko su oni jednaki, u klaster
se pomoću funkcije Bundle pohranjuje vrijednost T za određenu tipku.
Slika 27 Blok dijagram PodVI-a Provjera
22
3.4 Korisničko sučelje glavnog VI-a
Konstante odnosno numeričke vrijednosti koje se nalaze na desnoj strani
korisničkog sučelja dio su projekta dizalice. Boolean prekidač Način upravljanja služi
za prebacivanje između upravljanja dizalicom pomoću računala i upravljanja pomoću
daljinskog upravljača. Kada se upravlja daljinskim upravljačem onemogućena su sva
Boolean tipkala osim Stop-a kojim se zaustavlja izvođenje programa. U izvornom se
projektu podizanje i spuštanje hvataljke te njeno zatvaranje i otvaranje vršilo na osnovu
vremenske konstante dok se pomicanje krana izvršavalo na osnovu držanja tipkala.
Isti načini upravljanja očuvani su i u ovom glavnom VI-u ali uz neka alternativna
rješenja za pomicanje krana. Naime, zbog problema s buffer-om myDAQ-a, očitavanje
pritiska tipke daljinskog upravljača i istovremeno upravljanje koračnim motorom
izvedeno je na način da se prilikom svake iteracije Proizvođač petlje provjerava da li
je pritisnuta tipka za određeni smjer pomicanja krana. Ako jest, koračnim motor
izvršava broj koraka određen numeričkom kontrolom Broj koraka.
Slika 28 Korisničko sučelje glavnog VI-a
23
3.5 Blok dijagram glavnog VI-a
Slika 29 Blok dijagram glavnog VI-a
24
Na slici 29 prikazan je blok dijagram glavnog VI-a. Kao što je već ranije
navedeno, kod funkcije Obtain Queue je kao element tipa podatka spojeno polje
Boolean konstanti. Na samom vrhu Proizvođač petlje nalazi se 5 Property Node-ova
koji pripadaju kontrolama Gore, Dolje, Lijevo, Desno i Otvori/zatvori. Ovisno o Boolean
kontroli Način upravljanja te se navedene kontrole za upravljanje dizalicom omogućuju
odnosno onemogućuju. Ukoliko se na Disabled Property funkciji dovede numerička
vrijednost 0, ta kontrola radi normalno, međutim, ako se dovede vrijednost 2, ta
kontrola postaje siva i na nju korisnik ne može utjecati. Djelovanjem na svih 5 kontrola
preko navedenog Property Node-a postignuto je prebacivanje između upravljanja
dizalicom preko računala i upravljanjem daljinskim upravljačem.
U slučaju Laž prve izborne strukture Proizvođač petlje izvršava se dio koda za
akviziciju signala analognog ulaza AUDIO IN i prepoznavanje pritiska određene tipke
daljinskog upravljača. DAQ Pomoćnik funkcija snima taj signal i u šalje ga dalje u Filter
u obliku dinamičkog tipa podatka (Dynamic dana). Signal se nakon filtriranja šalje do
funkcije za prebacivanje iz dinamičkog tipa podatka (Convert from Dynamic data) gdje
se pretvara u valni oblik. Nakon toga se takav valni oblik šalje u PodVI Vrhovi-polje
gdje se detektiraju maksimalne vrijednosti valnog oblika i količina uzoraka odnosno
numeričkih vrijednosti između dva uzastopna vrha. Rezultat te funkcije je 1D polje
numeričkih vrijednosti koje se zatim dovodi na ulaz PodVI-a Logička 0 ili 1 gdje se iz
navedenog polja na osnovu vrijednosti elemenata stvara 1D polje logičkih 0 i 1. To
polje se zatim dovodi do PodVI-a Provjera gdje se odvija zadnji korak prepoznavanja
pritiska tipke daljinskog upravljača.
Dio koda koji slijedi nakon toga služi za prepoznavanje dugog pritiska (koji se
koristi za pomicanje krana). S obzirom da je rezultat PodVI-a Provjera klaster Boolean
vrijednosti, on je prvo pretvoren u 1D polje pomoću funkcije za pretvorbu klastera u
polje (Cluster to Array). Ovo je potrebno kako bi bilo moguće vršiti daljnje operacije s
Slika 30 Property Node-ovi kontrola
25
podacima iz klastera istog tipa podatka jer za manipulaciju polja u LabVIEW-u je
dostupno puno više funkcija nego je slučaj s klasterima.
Unutar prve izborne strukture se nalazi još jedna manja izborna struktura čije
izvršavanje ovisi o tome da li je numerička vrijednost iz posmačnog registra veća od 0
i o tome da li je broj elemenata izlaznog polja PodVI-a Vrhovi-polje veći od 1. Ukoliko
su oba uvjeta zadovoljena, izvršava se istinit slučaj izborne strukture u kojem se
prethodno umanjena vrijednost posmačnog registra funkcijom Decrement, ponovno
uvećava za 1 funkcijom Increment i prosljeđuje u sljedeću iteraciju Proizvođač petlje.
Navedena vrijednost je prethodno umanjena zbog toga što redni brojevi elemenata u
poljima i klasterima počinju od nule a potrebno je iskoristit funkciju Replace Array
Subset. Ona zamjenjuje određeni element ulaznog polja i takvo promijenjeno polje
šalje na izlaz. U ovom slučaju, ta određena vrijednosti zamjenjuje se Boolean
vrijednošću T. U lažnom slučaju se samo prosljeđuju postojeće vrijednosti.
Dio koda prikazan na slici 31 služi kao uvjet za drugu izbornu strukturu. U dva
polja (prethodno pretvorena iz klastera) pretražuju se vrijednost T te ukoliko se ona
nalazi na jednom od indeksa 1, 3, 4, 5 ili 7, funkcije za ispitivanje jednakosti (Equal?)
na izlazu daju vrijednost T. Razlog tome što se pretražuju dva različita polja je taj što
se prvom funkcijom za pretraživanje polja (Search 1D Array) pretražuje polje u kojem
nema mogućnosti detekcije dugog pritiska jer on nije niti potreban. Kod druge funkcije
Slika 31 Dio koda velike izborne strukture
26
za pretraživanje polja isti jest potreban te se stoga pretražuje polje koje služi za
detektiranje dugog pritiska (ovaj dio je potreban za rotacijsko pomicanje krana).
Boolean vrijednosti dobivene na izlazu funkcija za ispitivanje jednakosti se zatim
dovode do funkcije Compound Arithmetic u kojoj je odabrana operacija logičko ILI.
Naime, kada je bilo koja od Boolean vrijednosti T, izvršava se izborna struktura u kojoj
se nalazi funkcija Enqueue Element koja dodaje doveden tip podatka (u ovom slučaju
Boolean polje) u red. Ukoliko Compound Arithmetic na izlazu daje F, izborna struktura
izvršava svoj lažan slučaj u kojem se samo prosljeđuju vrijednosti.
Slika 32 Dio koda u kojem se pretražuju polja
Slika 33 Compound Arithmetic funkcija
27
Istinit slučaj prve izborne strukture Proizvođač petlje sadrži kod preuzet iz
izvornog projekta. On služi za upravljanje dizalicom pomoću računala.
Potrošač petlja sadrži funkciju Dequeue Element (koja uzima polje iz reda i
prosljeđuje ga dalje) i jednu veliku Error Case strukturu. Ukoliko nema greške, izvršava
se No Error slučaj. Tada funkcija Dequeue Element šalje sljedeće polje u redu koje se
zatim pretražuje funkcijom za pretraživanje polja. Traži se T vrijednost te ovisno o
indeksu elementa polja na kojem je ona pronađena, upravlja se određenim motorom
dizalice. Tim motorima se upravlja pomoću PodVI-eva preuzetih iz izvornog koda
projekta dizalice.
Slika 34 Istinit slučaj prve izborne strukture
28
Slika 35 Potrošač petlja
29
3.6 Modularnost upravljačkog programa
Modularnost upravljačkog programa postignuta je korištenjem polja i klastera.
Kao što je već navedeno, tip podatka koji se koristi u Proizvođač/Potrošač arhitekturi
je jednodimenzionalno polje s 10 Boolean vrijednosti pri čemu svaka vrijednost
predstavlja jednu tipku daljinskog upravljača. Ukoliko je potrebno koristiti više od 10
tipki potrebno je povećati broj Boolean vrijednosti tog polja i klastera koji se nalazi u
PodVI-u Provjera. U tom istom PodVI-u je zatim potrebno dodati binarnu kombinaciju
za željenu tipku kako bi se moglo vršiti njeno prepoznavanje i spojiti je na funkciju
Bundle. Klaster koji je dobiven na izlazu PodVI-a Provjera tada sadrži nove elemente
(Boolean konstante) s rednim brojevima koje se zatim lako mogu povezati s željenom
radnjom unutar LabVIEW-a.
30
4. Zaključak
Upravljanje dizalicom pomoću daljinskog upravljača kao dodatak na već
postojeći projekt odnosno LabVIEW grafički kod zahtijevalo je određene preinake
glavnog VI-a. Iako je on promijenjen, PodVI-evi su iskorišteni bez ikakvih poteškoća
što je rezultat modularnog načina programiranja.
Prepoznavanje kratkog pritiska tipke daljinskog upravljača izveden je na način
da se filtriranom analognom signalu s AUDIO IN ulaza razine napona vrhova i broj
uzoraka između dva susjedna vrha pohrane u polje. Ti podaci se zatim pretvaraju u
polje numeričkih vrijednosti s logičkim 0 i 1 pri čemu logička 0 odgovara rasponu
uzoraka od 80 do 120 dok logička 1 rasponu od 180 do 220. Za tipke od 1, 2, 3, 4, 5,
6, 7, 8, 9, i 0 na isti način snimljeni su binarni kodovi. Za usporedbu odnosno
prepoznavanje pritiska tipki koristi se samo krajnjih 8 bitova radi lakše analize.
Prepoznavanje dugog pritiska (koji je potreban za pomicanje krana) izvedeno je
tako da dio koda prepozna kratak pritisak ali i vrijednost napona odnosno vrha koji
prima AUDIO IN ulaz i nakon kratkog pritiska. Međutim, povećanjem udaljenosti
između daljinskog upravljača i senzora LabVIEW ga teže prepoznaje što je riješeno na
način da se odabirom broja koraka koračnog motora može pomicati kran i kratkim
pritiskom.
Informacija o pritisnutoj tipki daljinskog upravljača stavljena je u Boolean klaster
koja se dalje može vrlo lako koristiti za razne primjene zbog dostupnih funkcija koje
omogućavaju očitavanje vrijednosti klastera na određenom indeksu.
31
5. Literatura
1. Prikaz AUDIO IN analognog ulaza myDAQ-a, s Interneta,
http://www.ni.com/tutorial/11433/en/, 21.08.2016.
2. Dostupni materijali za predavanja i auditorne vježbe iz kolegija LabVIEW
grafičko programiranje, s Interneta, http://moodle1.tvz.hr/, 21.08.2016
3. LabVIEW Help
4. Jeffrey Travis, Jim Kring: LabVIEW for everyone, Third edition
5. Detalji NEC IR protokola, s Interneta,
http://www.hestore.hu/files/ir-rcnec-protocol.pdf , 21.08.2016.