MODUL 4 · UPOZNAVANJE I OSNOVE RADA U ROBOTSKOM SIMULACIJSKOM OKRUŽENJU
Nastavna jedinica 4.2
Osnovna logika, operatori i petlje u simulacijskom okruženju
Program koji samo niže naredbe gibanja radi jedan jedini posao. Čim se u njega uvedu varijabla, usporedba i petlja, isti kod počinje pokrivati cijelu obitelj zadataka: paletu s bilo kojim brojem redaka, slaganje u proizvoljan broj slojeva i ponašanje koje ovisi o stanju ulaza. Ova jedinica uvodi upravo te gradivne elemente.
- razlikovati osnovne tipove podataka u robotskim programskim jezicima
- primijeniti aritmetičke, usporedne i logičke operatore u izrazu
- napisati grananje s jednim i s više uvjeta
- napisati petlju s brojilom i petlju s uvjetom te obrazložiti izbor
- izraditi ugniježđenu petlju za slaganje mreže pozicija
- prepoznati beskonačnu petlju, pogrešnu granicu i nesigurnu usporedbu realnih brojeva
Varijable i tipovi podataka
Varijabla je imenovano mjesto u memoriji kontrolera koje čuva vrijednost. Pri deklaraciji se zadaju tip, ime i najčešće početna vrijednost. Tip određuje što se u varijablu smije spremiti i koje su operacije nad njom dopuštene: brojač se ne može pomnožiti s položajem, a položaj se ne može usporediti s logičkom vrijednošću.
| Tip | Što sadrži | Primjer vrijednosti |
|---|---|---|
| cijeli broj | brojila, redni brojevi, broj ponavljanja | 1, 12, 240 |
| realni broj | mjere, odmaci, brzine, mase | 62.5, 137.0, 0.85 |
| logička vrijednost | istinu ili neistinu, stanje ulaza | TRUE, FALSE |
| znakovni niz | nazive, oznake pozicija, poruke operateru | POZ_A12 |
| položaj | koordinate i orijentaciju točke | x, y, z i kutovi |
| polje | više vrijednosti istog tipa pod jednim imenom | odmak[1] do odmak[8] |
VAR num brojPozicija := 0; ! cijeli broj, brojilo
VAR num odmakX := 62.5; ! realni broj, mm
VAR bool paletaPuna := FALSE; ! logička vrijednost
VAR string oznakaSerije := "S-14"; ! znakovni niz
CONST num brojRedaka := 4; ! nepromjenjiva vrijednostVrijednost koja se tijekom rada ne mijenja deklarira se kao konstanta. To nije kozmetika: konstantom se sprječava da je neki dio programa slučajno prepiše, a čitatelju je odmah jasno da je riječ o podatku zadatka, a ne o promjenjivom stanju.
Operatori
Operatori su znakovi kojima se iz vrijednosti tvore izrazi. Dijele se u tri skupine. Aritmetički računaju nove brojčane vrijednosti. Usporedni od dviju vrijednosti daju istinu ili neistinu. Logički povezuju više usporedbi u jedan uvjet.
| Skupina | Operatori | Rezultat | Primjer |
|---|---|---|---|
| aritmetički | + − * / te ostatak dijeljenja | broj | x := x0 + stupac * odmakX |
| usporedni | = <> < <= > >= | istina ili neistina | brojPozicija >= 12 |
| logički | AND, OR, NOT | istina ili neistina | spreman AND NOT greska |
Redoslijed izvođenja jednak je onom iz matematike: najprije množenje i dijeljenje, zatim zbrajanje i oduzimanje, pa usporedbe i tek na kraju logički operatori. Zagrade taj redoslijed mijenjaju i, kada izraz postane duži od jednog retka, uvijek se isplati staviti ih čak i kad nisu nužne.
! ostatak dijeljenja razdvaja redak i stupac
stupac := (n - 1) MOD brojStupaca + 1;
redak := (n - 1) DIV brojStupaca + 1;
! složeni logički uvjet
IF (ulazSpreman = TRUE) AND (brojPozicija < kapacitet) AND NOT greska THEN
! smije se nastaviti
ENDIFGrananje
Grananje programu daje mogućnost da se ponaša različito ovisno o podacima. Najjednostavniji oblik ispituje jedan uvjet i izvodi jednu granu. Oblik s inače pokriva i suprotan slučaj, a višestruko grananje nabraja niz mogućnosti.
IF masa > nosivost THEN
TPWrite "Obradak je pretezak za ovaj alat";
Stop;
ELSEIF masa > 0.8 * nosivost THEN
brzina := 300; ! oprezno, blizu granice
ELSE
brzina := 800;
ENDIFKod robota se grananje najčešće veže uz stanje ulaza i uz podatke o obratku: je li naprava zatvorena, ima li obratka u spremniku, koja je izvedba proizvoda na redu. Važno je da svaka grana ostavi program u definiranom stanju. Grana koja ništa ne poduzme, a od koje se očekuje da postavi izlaz ili varijablu, izvor je pogrešaka koje se pojavljuju tek u rijetkim situacijama.
Zapamtite
Svaki IF mora imati predviđeno ponašanje i za slučaj koji se ne očekuje. Ako se očekuju izvedbe A i B, u programu mora postojati i grana za sve ostalo, makar samo zaustavila ciklus i ispisala poruku.
Petlje
Petlja ponavlja isti niz naredbi. Dvije su osnovne izvedbe. Petlja s brojilom unaprijed zna koliko će se puta izvesti: brojilo kreće od početne vrijednosti, raste za zadani korak i staje kada prijeđe granicu. Petlja s uvjetom ponavlja se dok je uvjet istinit, pa broj prolaza ovisi o onome što se u tijelu petlje događa.
! petlja s brojilom: pet jednakih odlaganja
FOR i FROM 1 TO 5 DO
MoveJ prilaz, v800, z20, alat;
MoveL Offs(odlaganje, 0, (i - 1) * 60, 0), v200, fine, alat;
SetDO hvataljka, 0;
WaitTime 0.3;
ENDFOR
! petlja s uvjetom: dok ima obradaka u spremniku
WHILE DInput(senzorSpremnik) = 1 DO
uzmiObradak;
odloziObradak;
brojPozicija := brojPozicija + 1;
ENDWHILEPetlja s brojilom bira se kad je broj ponavljanja poznat iz podataka zadatka: broj mjesta na paleti, broj slojeva, broj provrta. Petlja s uvjetom bira se kad broj ponavljanja ovisi o okolini: dok ima materijala, dok stroj nije javio kraj obrade, dok kamera pronalazi novi predmet.
Ugniježđene petlje i mreža pozicija
Slaganje na paletu prirodno se opisuje dvjema ili trima petljama jednom unutar druge. Vanjska petlja broji slojeve, srednja redove, a unutarnja mjesta u redu. Položaj svakog mjesta računa se iz početne točke i odmaka, pa se program ne mijenja kada se promijeni broj redaka ili razmak između kutija.
CONST num redaka := 3;
CONST num stupaca := 4;
CONST num slojeva := 5;
CONST num dx := 220; ! razmak u redu, mm
CONST num dy := 160; ! razmak između redova, mm
CONST num dz := 145; ! visina sloja, mm
FOR s FROM 1 TO slojeva DO
FOR r FROM 1 TO redaka DO
FOR t FROM 1 TO stupaca DO
cilj := Offs(ishodistePalete,
(t - 1) * dx,
(r - 1) * dy,
(s - 1) * dz);
odloziNa cilj;
ENDFOR
ENDFOR
ENDFORBroj prolaza kroz najdublju petlju umnožak je triju granica, a to je ujedno i broj odloženih komada. Koordinate zadnjeg mjesta dobivaju se uvrštavanjem najvećih vrijednosti brojila. Upravo to provjerava računski prikaz, jer je pogrešna procjena krajnje točke čest uzrok nedostižne pozicije na rubu palete.
Prikaz računa koliko puta se izvodi najdublje tijelo triju ugniježđenih petlji i gdje se nalazi posljednje mjesto u odnosu na ishodište palete. Ishodište je u točki (0, 0, 0), a brojila kreću od jedinice.
Česte pogreške
Tri se pogreške pojavljuju gotovo u svakom prvom programu. Prva je beskonačna petlja: uvjet petlje s uvjetom nikada ne postane neistinit jer se u tijelu ne mijenja ništa što na njega utječe. U simulaciji se to vidi kao ciklus koji ne završava, a na stroju kao robot koji ponavlja isti pokret.
Druga je pogrešna granica, poznata i kao pogreška za jedan. Nastaje kada se pomiješa brojanje od nule i od jedinice, pa program odloži jedan komad manje ili pokuša odložiti na mjesto koje ne postoji. Lijek je uvijek isti: dosljedno brojati od jedinice i odmak računati kao umnožak s izrazom u obliku brojilo umanjeno za jedan.
Treća je usporedba realnih brojeva znakom jednakosti. Realni se brojevi u kontroleru zapisuju s ograničenom točnošću, pa zbroj koji bi u papirnatom računu dao točno 180.0 u memoriji može biti 179.9999998. Uvjet jednakosti tada nikada nije ispunjen.
Pažnja
Realne brojeve ne uspoređujte znakom jednakosti. Umjesto uvjeta da je vrijednost jednaka zadanoj, ispitujte je li razlika manja od dopuštenog odstupanja, primjerice manja od 0.01 mm. Isto vrijedi za kutove.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Varijabla | Imenovano mjesto u memoriji koje čuva vrijednost zadanog tipa. |
| Konstanta | Vrijednost koja se tijekom izvođenja programa ne smije mijenjati. |
| Logički operator | Operator AND, OR ili NOT koji povezuje uvjete u jedan izraz. |
| Grananje | Struktura koja ovisno o uvjetu izvodi jednu od više grana programa. |
| Petlja s brojilom | Petlja koja se izvodi unaprijed poznat broj puta. |
| Petlja s uvjetom | Petlja koja se ponavlja dok je zadani uvjet istinit. |
| Pogreška za jedan | Odstupanje u granici petlje zbog miješanja brojanja od nule i od jedinice. |
Provjeri se
Kratka provjera prije prelaska na sljedeću jedinicu. Odgovor se potvrđuje klikom, a obrazloženje se prikazuje odmah.
Pitanje 1 od 3
Koja se petlja bira kada broj ponavljanja ovisi o stanju senzora u spremniku?
Broj ponavljanja nije unaprijed poznat, pa se koristi petlja koja se izvodi dok je uvjet istinit.
Pitanje 2 od 3
Zašto se realni brojevi ne uspoređuju znakom jednakosti?
Zaokruživanje pri zapisu znači da izračunata vrijednost gotovo nikada nije točno jednaka zadanoj.
Pitanje 3 od 3
Tri ugniježđene petlje s granicama 4, 3 i 5 izvode najdublje tijelo:
Broj prolaza jednak je umnošku granica, dakle 4 puta 3 puta 5, što je 60.
Odgovoreno 0 od 3.