Preskoči na sadržaj
FORTRONIQ

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.

Moći ću:
  • 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žiPrimjer vrijednosti
cijeli brojbrojila, redni brojevi, broj ponavljanja1, 12, 240
realni brojmjere, odmaci, brzine, mase62.5, 137.0, 0.85
logička vrijednostistinu ili neistinu, stanje ulazaTRUE, FALSE
znakovni niznazive, oznake pozicija, poruke operateruPOZ_A12
položajkoordinate i orijentaciju točkex, y, z i kutovi
poljeviše vrijednosti istog tipa pod jednim imenomodmak[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 vrijednost

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

SkupinaOperatoriRezultatPrimjer
aritmetički+ − * / te ostatak dijeljenjabrojx := x0 + stupac * odmakX
usporedni= <> < <= > >=istina ili neistinabrojPozicija >= 12
logičkiAND, OR, NOTistina ili neistinaspreman 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
ENDIF

Grananje

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;
ENDIF

Kod 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;
ENDWHILE

Petlja 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
ENDFOR

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

tlocrt paletebokocrtishodište paleter (red)t (mjesto u redu)dxdydzs (sloj)Položaj mjesta = ishodište + (t−1)·dx + (r−1)·dy + (s−1)·dz
Slika 4.2 — Položaj svakog mjesta na paleti računa se iz ishodišta i triju odmaka, pa promjena rasporeda ne dira naredbe gibanja.
Ugniježđena petlja: broj prolaza i zadnja pozicijaRačunski prikaz

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.

Prolaza kroz tijelo petlje—
Zadnja pozicija (x, y, z)—mm
Visina složaja—mm

Č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

PojamZnačenje
VarijablaImenovano mjesto u memoriji koje čuva vrijednost zadanog tipa.
KonstantaVrijednost koja se tijekom izvođenja programa ne smije mijenjati.
Logički operatorOperator AND, OR ili NOT koji povezuje uvjete u jedan izraz.
GrananjeStruktura koja ovisno o uvjetu izvodi jednu od više grana programa.
Petlja s brojilomPetlja koja se izvodi unaprijed poznat broj puta.
Petlja s uvjetomPetlja koja se ponavlja dok je zadani uvjet istinit.
Pogreška za jedanOdstupanje 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.