upravljanje maketom dizalice · korisničko sučelje i blok dijagram vi-a koji je korišten za...

36
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.

Upload: others

Post on 27-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 2: UPRAVLJANJE MAKETOM DIZALICE · 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
Page 3: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 4: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 5: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 6: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 7: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 8: UPRAVLJANJE MAKETOM DIZALICE · 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

3

1.2 Izgled blok dijagrama (Block Diagram)

Slika 2 Glavni VI - slučaj 0

Slika 3 Glavni VI - slučaj 1

Page 9: UPRAVLJANJE MAKETOM DIZALICE · 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

4

Slika 4 Glavni VI - slučaj 2

Slika 5 Glavni VI - slučaj 3

Page 10: UPRAVLJANJE MAKETOM DIZALICE · 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

5

Slika 6 Glavni VI - slučaj 4

Slika 7 Glavni VI - slučaj 5

Page 11: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 12: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 13: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 14: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 15: UPRAVLJANJE MAKETOM DIZALICE · 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

10

Slika 14 Izgled signala sa slike 13 nakon primjene funkcije Filter

Slika 13 Primjer signala bez filtriranja

Page 16: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 17: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 18: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 19: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 20: UPRAVLJANJE MAKETOM DIZALICE · 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

15

Slika 19 Dijagram toka

3. Glavni VI i ostali PodVI-evi

3.1 Dijagram toka

Page 21: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 22: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 23: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 24: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 25: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 26: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 27: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 28: UPRAVLJANJE MAKETOM DIZALICE · 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

23

3.5 Blok dijagram glavnog VI-a

Slika 29 Blok dijagram glavnog VI-a

Page 29: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 30: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 31: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 32: UPRAVLJANJE MAKETOM DIZALICE · 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

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

Page 33: UPRAVLJANJE MAKETOM DIZALICE · 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

28

Slika 35 Potrošač petlja

Page 34: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 35: UPRAVLJANJE MAKETOM DIZALICE · 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

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.

Page 36: UPRAVLJANJE MAKETOM DIZALICE · 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

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.