MODUL 3 · PROGRAMIRANJE INDUSTRIJSKOG ROBOTA
Nastavna jedinica 3.1
Programski jezici i alati za programiranje industrijskih robota
Svaki veliki proizvođač robota razvio je vlastiti programski jezik, pa se na prvi pogled čini da svaki robot traži novo učenje. U stvarnosti su razlike najvećim dijelom u zapisu, a ne u zamisli: sve jezike drži isti kostur od deklaracija, glavnog programa, potprograma i naredbi gibanja s istim skupom parametara.
- navesti programske jezike vodećih proizvođača industrijskih robota i pridružiti ih upravljačkim sustavima
- prepoznati zajedničku građu robotskog programa: deklaracije, glavni program, potprograme i komentare
- razlikovati osnovne tipove podataka i objasniti zapis položaja alata i zglobnog položaja
- pročitati naredbu gibanja i protumačiti njezine parametre
- prepisati jednostavnu naredbu gibanja iz jednog jezika u drugi
- obrazložiti zašto poznavanje jednog jezika znatno olakšava prijelaz na drugi
Zašto svaki proizvođač ima svoj jezik
Programski jezici robota nisu nastali dogovorom nego usporedno, u poduzećima koja su svoja upravljačka računala razvijala samostalno i u razmaku od nekoliko godina. Svako je rješenje odgovaralo na iste zahtjeve: treba zadati gibanje, treba upravljati alatom, treba čekati signal i treba ponoviti niz koraka. Odgovori su bili slični, ali su nazivi naredbi i pravila zapisa ostali različiti, a s vremenom su se učvrstili jer je iza svakog jezika stajala velika količina već napisanih programa.
Pokušaji ujednačavanja postojali su i postoje. Posljedica je da se u pogonu s robotima triju proizvođača i dalje radi u trima okruženjima, ali da je prelazak s jednoga na drugi mnogo lakši nego što izgleda. Naredba koja u jednom jeziku glasi MoveL, u drugom LIN, u trećem L, a u četvrtom MOVL, u svima znači isto: idi pravocrtno do zadane točke.
Zato je pametno jezike učiti kao obitelj, a ne svaki iz početka. Najprije se usvoji građa programa i značenje parametara, a zatim se za pojedini sustav nauči rječnik. Upravo je to redoslijed kojim ide ova jedinica.
Jezici vodećih proizvođača
Šest jezika pokriva veliku većinu industrijskih robota koji se u Europi susreću u proizvodnji. Uz svaki ide i vlastito programsko okruženje na računalu, kojim se programi pišu, provjeravaju i prenose na upravljački sustav.
| Proizvođač | Jezik | Kratka oznaka | Obilježje zapisa |
|---|---|---|---|
| ABB | RAPID | MoveL, MoveJ, MoveC | tekstualni jezik s modulima i procedurama; podaci i gibanja odvojeni |
| KUKA | KRL | LIN, PTP, CIRC | sličan strukturiranom Pascalu; datoteka programa i datoteka podataka odvojene |
| FANUC | TP i KAREL | L, J, C | TP program u numeriranim redcima, unosi se s privjeska; KAREL za složeniju logiku |
| YASKAWA | INFORM | MOVL, MOVJ, MOVC | redak po redak, s naredbom i parametrima iza nje |
| KAWASAKI | AS | LMOVE, JMOVE, C1MOVE | kratke naredbe, odvojen popis točaka i popis programa |
| Stäubli | VAL3 | movel, movej, movec | zapis nalik jezicima opće namjene, s programima i knjižnicama |
Popis nije potpun. Uz njega postoje jezici manjih proizvođača, jezici kolaborativnih robota u kojima se program slaže grafički iz blokova te sučelja kojima se robot vodi iz nadređenog programa. Ono što je zajedničko svima jest da se na kraju izvodi niz naredbi gibanja s parametrima brzine i točnosti dolaska.
Zajednička građa programa
Bez obzira na jezik, program ima četiri dijela. Deklaracije uvode podatke: točke, brojila, zastavice, alat i radni predmet. Glavni program određuje redoslijed i obično je kratak, jer samo poziva ono što se stvarno radi. Potprogrami sadrže pojedine radnje, svaku za sebe. Komentari objašnjavaju namjeru onome tko program čita poslije, a to je najčešće netko drugi.
Evo iste zamisli u jeziku RAPID. Uočite da su podaci na početku, da glavni program samo poziva potprograme i da je stvaran posao u potprogramu.
MODULE GlavniModul
! --- deklaracije podataka ---
CONST robtarget pSigurna := [[600,0,900],[0,0,1,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
CONST robtarget pUzimanje := [[750,-320,410],[0,0,1,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
VAR num nBrojac := 0;
VAR bool bStegnuto := FALSE;
! --- glavni program ---
PROC main()
Pripremi;
WHILE TRUE DO
UzmiKomad;
OdloziKomad;
nBrojac := nBrojac + 1;
ENDWHILE
ENDPROC
! --- potprogram ---
PROC UzmiKomad()
MoveJ pSigurna, v1000, z50, tPrihvatnica;
MoveL Offs(pUzimanje,0,0,100), v500, z20, tPrihvatnica;
MoveL pUzimanje, v100, fine, tPrihvatnica;
SetDO doStegni, 1;
WaitDI diStegnuto, 1;
MoveL Offs(pUzimanje,0,0,100), v250, z20, tPrihvatnica;
ENDPROC
ENDMODULEIsti postupak u jeziku KRL izgleda drukčije, a radi isto. Točke se u KUKA sustavu drže u zasebnoj datoteci podataka, pa se u programu pojavljuju samo njihova imena.
DEF uzmi_komad ( )
DECL INT brojac
DECL BOOL stegnuto
brojac = 0
stegnuto = FALSE
PTP XP_sigurna Vel=100 % PDAT1 ; brzi prilaz
PTP XP_iznad Vel=50 % PDAT2
LIN XP_uzimanje Vel=0.1 m/s CPDAT1 ; sporo prema obratku
$OUT[12] = TRUE ; stegni prihvatnicu
WAIT FOR $IN[5] ; potvrda stezanja
WAIT SEC 0.3
LIN XP_iznad Vel=0.25 m/s CPDAT2
ENDZapamtite
Komentar nije ukras. U programu koji se mjesecima ne otvara, jedna rečenica uz naredbu — primjerice zašto je brzina prilaza baš 100 mm/s — štedi sat traženja i sprječava da netko vrijednost promijeni bez razloga.
Tipovi podataka
Podaci u robotskom programu dijele se u nekoliko skupina. Najvažnija je razlika između položaja alata i zglobnog položaja. Položaj alata zapisuje se koordinatama x, y, z i orijentacijom, pa ga robot mora preračunati u kutove zglobova. Zglobni položaj izravno zadaje kut svake osi, pa je uvijek jednoznačan i uvijek dostižan.
| Skupina | Što sadrži | Primjer zapisa | Kada se koristi |
|---|---|---|---|
| Položaj alata | koordinate i orijentacija vrha alata | robtarget, POS, XYZWPR | radne točke koje se zadaju u prostoru |
| Zglobni položaj | kut svake osi | jointtarget, AXIS, J1..J6 | početni i sigurnosni položaj, izbjegavanje singularnosti |
| Broj | cijeli ili decimalni broj | num, INT, REAL, R[1] | brojila, razmaci, izračunati odmaci |
| Logička vrijednost | istina ili laž | bool, BOOL, F[1] | zastavice stanja, rezultati provjera |
| Alat i radni predmet | geometrija alata i položaj radne ravnine | tooldata, wobjdata, UTOOL, UFRAME | svaka naredba gibanja, kalibracija |
| Znakovni niz | tekst | string, CHAR | poruke operateru, nazivi programa |
Zapis položaja alata gotovo uvijek nosi i podatak o konfiguraciji, dakle o tome s kojom je kombinacijom položaja zglobova točka naučena. Bez tog podatka robot bi istu koordinatu mogao dosegnuti s laktom gore ili dolje, pa bi pri sljedećem prelasku napravio neočekivan zamah. U jeziku RAPID to je treći dio zapisa, u KRL-u se vodi kao status i turn.
Brojevni i logički podaci nose drugi dio posla: brojila komada, položaj u sloju palete, zastavice koje pamte je li prihvatnica stegnuta. Kod nekih sustava oni nemaju ime nego broj registra, pa je posebno važno voditi popis: registar 12 ne govori ništa, a komentar broj komada u redu govori sve.
Pažnja
Točka naučena kao položaj alata vrijedi samo uz onaj alat i onaj radni predmet uz koje je naučena. Promijeni li se geometrija prihvatnice, a točke ostanu iste, robot će promašiti za iznos promjene. Zato se pri izmjeni alata uvijek prvo provjerava koordinatni sustav alata, a tek onda program.
Naredbe gibanja i njihovi parametri
Naredba gibanja u svim jezicima ima isti skup podataka: vrstu gibanja, odredišnu točku, brzinu, točnost dolaska i alat na koji se sve odnosi. Vrsta gibanja bira se između gibanja od točke do točke, pravocrtnog i kružnog. Brzina se zadaje u milimetrima u sekundi za vrh alata ili u postotku najveće brzine za zglobno gibanje.
Najviše zabune izaziva točnost dolaska. Ako se zada točan dolazak, robot će se u točki zaustaviti i tek zatim krenuti dalje; putanja je vjerna, ali ciklus dulji. Ako se zada zona zaobljenja, robot će u blizini točke skrenuti prema sljedećoj i točku neće dodirnuti; ciklus je kraći, a putanja zaobljena. Zona se zadaje u milimetrima, kao polumjer područja unutar kojeg je skretanje dopušteno.
U praksi vrijedi jednostavno pravilo: točan dolazak samo ondje gdje se nešto uzima, odlaže ili obrađuje, zaobljenje svugdje drugdje. Program u kojem je svaka točka zadana kao točan dolazak radi ispravno, ali nepotrebno dugo i s trzajima.
Odaberite vrstu gibanja, brzinu i zonu zaobljenja. Prikaz ispisuje odgovarajuću naredbu u četirima jezicima. Zapisi su pojednostavljeni i služe za usporedbu, ne za izravno prepisivanje u program.
Uz ova tri parametra svaki jezik nudi i dodatke: ograničenje ubrzanja, praćenje vanjske osi, istodobno postavljanje izlaza u trenutku prolaska kroz točku i slično. Oni se uče kasnije, kada osnovna četiri postanu očita.
Prijelaz s jednog jezika na drugi
Kada se jednom razumije građa programa, prijelaz na novi sustav svodi se na tri koraka. Prvo se nauči kako se u novom okruženju otvara program i gdje su podaci. Drugo, izradi se mala tablica prijevoda za najčešće naredbe. Treće, napiše se isti jednostavan program koji je već napisan u poznatom jeziku, i usporedi ponašanje.
| Radnja | RAPID | KRL | TP (FANUC) | INFORM |
|---|---|---|---|---|
| Gibanje od točke do točke | MoveJ p10, v1000, z50, tAlat; | PTP P10 Vel=100 % PDAT1 | J P[10] 100% CNT50 | MOVJ VJ=100.00 |
| Pravocrtno gibanje | MoveL p10, v500, fine, tAlat; | LIN P10 Vel=0.5 m/s CPDAT1 | L P[10] 500mm/sec FINE | MOVL V=500.0 PL=0 |
| Postavljanje izlaza | SetDO doStegni, 1; | $OUT[12] = TRUE | DO[12]=ON | DOUT OT#(12) ON |
| Čekanje ulaza | WaitDI diStegnuto, 1; | WAIT FOR $IN[5] | WAIT DI[5]=ON | WAIT IN#(5)=ON |
| Čekanje vremena | WaitTime 0.3; | WAIT SEC 0.3 | WAIT 0.30(sec) | TIMER T=0.30 |
| Poziv potprograma | UzmiKomad; | uzmi_komad ( ) | CALL UZMI | CALL JOB:UZMI |
Tablica je korisna, ali nije dovoljna. Razlike ostaju u onome što se ne vidi iz jednog retka: kako se vode koordinatni sustavi, kako se program pokreće iz sredine, što se događa pri zaustavljanju u nuždi i kako se obrađuju pogreške. Zato se novi sustav nikada ne uvodi izravno u proizvodnju nego najprije na probnom zadatku.
Primjer
Tehničar koji je tri godine radio na sustavu jednog proizvođača dobiva robot drugog proizvođača. Prvi dan izgubi na traženje izbornika i na to gdje se spremaju točke. Drugi dan napiše program uzimanja i odlaganja. Treći dan ga ispituje i dorađuje. Nije naučio novi način razmišljanja nego novi rječnik.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Deklaracija | Uvođenje podatka u program: naziv, tip i početna vrijednost. |
| Potprogram | Zaokružen dio programa s vlastitim nazivom, pozvan iz glavnog programa. |
| Položaj alata | Zapis točke koordinatama i orijentacijom vrha alata u prostoru. |
| Zglobni položaj | Zapis točke kutovima pojedinih osi robota. |
| Zona zaobljenja | Polumjer područja oko točke unutar kojega robot smije skrenuti prema sljedećoj točki. |
| Točan dolazak | Zahtjev da se robot u točki zaustavi prije nastavka gibanja. |
| Konfiguracija | Podatak o tome kojim je položajem zglobova točka naučena. |
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
Koji je zajednički dio građe programa u svim navedenim jezicima?
Nazivi naredbi se razlikuju, ali građa od deklaracija, glavnog programa i potprograma je zajednička.
Pitanje 2 od 3
Što znači parametar fine, odnosno FINE, u naredbi gibanja?
Točan dolazak znači da se robot u točki zaustavi prije nastavka, za razliku od zone zaobljenja.
Pitanje 3 od 3
Zašto se sigurnosni i početni položaj najčešće zapisuju kao zglobni položaj?
Zglobni položaj izravno zadaje kutove osi, pa nema dvojbe o konfiguraciji ni o dostižnosti.
Odgovoreno 0 od 3.