Preskoči na sadržaj
FORTRONIQ

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.

Moći ću:
  • 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čJezikKratka oznakaObilježje zapisa
ABBRAPIDMoveL, MoveJ, MoveCtekstualni jezik s modulima i procedurama; podaci i gibanja odvojeni
KUKAKRLLIN, PTP, CIRCsličan strukturiranom Pascalu; datoteka programa i datoteka podataka odvojene
FANUCTP i KARELL, J, CTP program u numeriranim redcima, unosi se s privjeska; KAREL za složeniju logiku
YASKAWAINFORMMOVL, MOVJ, MOVCredak po redak, s naredbom i parametrima iza nje
KAWASAKIASLMOVE, JMOVE, C1MOVEkratke naredbe, odvojen popis točaka i popis programa
StäubliVAL3movel, movej, moveczapis 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.

Što sadrži svaka naredba gibanjaodredišna točkavrsta gibanjabrzinazona zaobljenjaRAPID (ABB)MoveJ p10,v1000,z50KRL (KUKA)PTP P10 Vel=100 %TP (FANUC)J P[10] 100% CNT50
Slika 3.1 — Isti zadatak u trima jezicima: nazivi naredbi se razlikuju, a dijelovi naredbe gibanja isti su u svima.

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
ENDMODULE

Isti 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
END

Zapamtite

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žiPrimjer zapisaKada se koristi
Položaj alatakoordinate i orijentacija vrha alatarobtarget, POS, XYZWPRradne točke koje se zadaju u prostoru
Zglobni položajkut svake osijointtarget, AXIS, J1..J6početni i sigurnosni položaj, izbjegavanje singularnosti
Brojcijeli ili decimalni brojnum, INT, REAL, R[1]brojila, razmaci, izračunati odmaci
Logička vrijednostistina ili lažbool, BOOL, F[1]zastavice stanja, rezultati provjera
Alat i radni predmetgeometrija alata i položaj radne ravninetooldata, wobjdata, UTOOL, UFRAMEsvaka naredba gibanja, kalibracija
Znakovni niztekststring, CHARporuke 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.

Ista naredba gibanja u četirima jezicimaRačunski prikaz

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.

RAPID (ABB)—
KRL (KUKA)—
TP (FANUC)—
INFORM (YASKAWA)—

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.

RadnjaRAPIDKRLTP (FANUC)INFORM
Gibanje od točke do točkeMoveJ p10, v1000, z50, tAlat;PTP P10 Vel=100 % PDAT1J P[10] 100% CNT50MOVJ VJ=100.00
Pravocrtno gibanjeMoveL p10, v500, fine, tAlat;LIN P10 Vel=0.5 m/s CPDAT1L P[10] 500mm/sec FINEMOVL V=500.0 PL=0
Postavljanje izlazaSetDO doStegni, 1;$OUT[12] = TRUEDO[12]=ONDOUT OT#(12) ON
Čekanje ulazaWaitDI diStegnuto, 1;WAIT FOR $IN[5]WAIT DI[5]=ONWAIT IN#(5)=ON
Čekanje vremenaWaitTime 0.3;WAIT SEC 0.3WAIT 0.30(sec)TIMER T=0.30
Poziv potprogramaUzmiKomad;uzmi_komad ( )CALL UZMICALL 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.

Programsko okruženje – ćelija_01Stablo projektaćelijarobotalatprogramitočkePROC ciklus() MoveJ p40,v800,z20; MoveL p10,v200,fine;ENDPROCp103D prikaz ćelijePopis točakap10 uzmip20 iznadp30 odložip40 sigurno
Slika 3.2 — Programsko okruženje: stablo projekta, program, prikaz ćelije i popis točaka u zasebnome prozoru.

Ključni pojmovi

PojamZnačenje
DeklaracijaUvođenje podatka u program: naziv, tip i početna vrijednost.
PotprogramZaokružen dio programa s vlastitim nazivom, pozvan iz glavnog programa.
Položaj alataZapis točke koordinatama i orijentacijom vrha alata u prostoru.
Zglobni položajZapis točke kutovima pojedinih osi robota.
Zona zaobljenjaPolumjer područja oko točke unutar kojega robot smije skrenuti prema sljedećoj točki.
Točan dolazakZahtjev da se robot u točki zaustavi prije nastavka gibanja.
KonfiguracijaPodatak 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.