Ipari Robotok Programozása Vezérlő, StartUp, Szoftverszintek, programozási nyelvek Előadó: Nagy István n (A65) Gyakorlatvezető: : Tolnai András Ajánlott irodalom: B. Leatham-Jones: Elements of Industrial Robotics, Pitman Publishing,, 1987. Ch. Blume,, W. Jakob: : Ipari Robotok Programozási Nyelvei, MK, Bp., 1987.
A vezérlő beépítet lehetőségei: Gyakran találunk az ipari robotok vezérlőiben beépített funkciókat is. Ezek többnyire a vezérlő működési módozataira vonatkoznak, amelyek az operátor segítségével be-/ kikapcsolhatóak. Továbbá a vezérlők gyakran el vannak látva kisebb kijelzőkkel, ahol hibaüzeneteket, illetve a működési módokhoz tartozó üzeneteket olvashatjuk le. A működési módozatok vezérlőként eltérhetnek (általában el is térnek), de néhány jellegzetes mód mindegyikben (ilyen vagy olyan formában) megtalálható. Homing Nullpontra állítás: Ebben a működési rezsimben a tengelyeket a fizikai vagy az elektronikus nullpontra (homing position) állítjuk. Vigyázni kell, hogy mikor a nullpontra állítjuk a tengelyeket ne ütközzenek akadályba, ezért mielőtt elindítjuk a folyamatot, érdemes a tengelyeket a nullpont közelébe állítani kézi működtetéssel (jog mode). Ha van kijelzőnk, akkor a következő adatokat olvashatjuk le: csuklók pozíciója / koordináták pozíciója / dátum és idő / beépített számlálók, időzítők értékei / I/O bitek értékei. Betanítási (Teach) mód (rezsim): Lehetőséget ad a betanítási szekvenciák elvégzése után, a betanított adatok (szekvenciák) memóriában való rögzítésére. A betanítás lehet közvetlen, közvetett, vagy a koordináták beadásával is. A kijelző a következő adatokat mutathatja: az aktuálisan tárolt szekvencia program / aktuális csukló és koordináta pozíciókat / beépített számlálók, időzítők értékei / I/O állapotbitek. Léptető mód (rezsim): lehetővé teszi a memóriában lévő program lépésenkénti futtatását. Ezt a rezsimet általában a vezérlőn egy gomb segítségével beállíthatjuk. A kijelzőn megjelenő adatok: lépések száma / aktuális lépés száma / aktuális koordináta, csukló pozíciók, Automatikus üzemmód: A memóriában tárolt program automatikus futtatása. A kijelző csak jelzi, hogy automatikus üzemben működik a vezérlő. Paraméteres üzem: ebben az üzemmódban állíthatjuk be a vezérlő belső paramétereit. Ezek a paraméterek általában a gyártó által be vannak állítva, de amennyiben változtatni kell rajtuk, akkor azt ebben az üzemben tehetjük meg. Tipikus paraméter-beállítások a következőket tartalmazzák: tengelyenkénti végállások megadása vészjelzés leadása a végálláshoz közeledve / maximális sebességek, nyomatékok megadása külön a léptető, majd az automata üzemmódokra / tengelyenkénti nullpozíciók esetleg a hozzájuk tartozó megfogó offset-ek / kommunikációs (RS 232) beállítások
A vezérlő beépített üzemmódjai:
StartUp - a robot indítási folyamata 1: Robotonként eltérhet a beindítás folyamata, de egy általános leírás amit az indítási folyamatot megelőzően mindenképpen figyelembe kell venni: - Eltávolítani a munkatérből a nem feltérképezett akadályokat - Felszabadítani a megfogót - Figyelmet szentelni, hogy a feltérképezett munkatérben az akadályok a térkép szerinti helyükön legyen. - A betanító-panel és egyéb dolgok amit az operátor használ, a munkatéren kívül legyenek. - Bebiztosítani, hogy az operátoron kívül más személy ne tartózkodjon a robot körüli zónában. - Bebiztosítani a kábelezések csövezések fixálását (ne legyen szabadon lengő rész). - Bebiztosítani, hogy a robot karbantartása biztonságos legyen. - Ellenőrizni a hidraulikus / pneumatikus nyomásokat, összetételeket (ne szivárogjanak). - Folyadékszintek ellenőrzése (ha szükséges). - Ellenőrizni az operátor munkaruháját ( ne lebegjen biztonságos legyen). Miután a fentieket figyelembe véve elindítottuk a robotot, a léptető rezsim segítségével a nullpont-pozíció közelébe léptethetjük a robotkart. (Ez azért fontos, hogy minél rövidebb utat tegyen meg a robotkar, mikor megkapja a HOMING parancsot.) FIGYELEM! : Minden programot ajánlatos a HOMING paranccsal kezdeni! Ez ugyanis egy közös referenciapont a manipulátor és az operátor számára is, amihez képest az összes többi koordináta kiszámolásra kerül.
StartUp - a robot indítási folyamata 2: A programírásnál a következő tipikus eseménysorozatot kell figyelembe venni: 1. A vezérlő memóriájában lévő adatok törlése 2. Paraméterek beállítása: 1. Maximális sebességek / pozíciók / fordulatszámok 2. Megfogó méreteinek beállítása 3. A betanító-panel segítségével mozgasd oda a robotkart a null-pozícióba. 4. Program megírása (az érzékelők válaszjeleinek figyelembevételével). 5. A megfogót működtető program megírása. 6. A 3 5 pontok ismétlése, amíg az egész program el nem készül. 7. Program befejezés: vissza a null-pozícióra, és átállás manuális (kézi) vezérlésre. 8. A memóriában lévő adatok (pozíciók, szekvenciák, I/O adatok ) ellenőrzése. 9. Paraméter-adatok újraellenőrzése (valamelyik program-szekvencia véletlenül nem írta-e át). 10. Program futtatása léptető üzemben. 11. (Amennyiben minden rendben), program futtatása (végtelen ciklusban amíg kézileg nincs leállítva) automata üzemmódban.
Szoftverszintek: Hasonlóan, mint a klasszikus programozási eljárásoknál, itt is megvannak a különböző szoftverszintek. A felhasználó (programozó) által megírt programot utasítások sorrendjének (szekvencia) is nevezik. Ezek az utasítások lehetnek: - fizikai szinten megadva (csak számok bináris, oktális, hexadecimális; ahol az utasítás is egy számkód és a pozíciók is számkódokból állnak. Nincs fordító, csak egy ún. értelmező, amely a számkódokat végrehajtja). Ezt gépi kódú programozásnak is nevezik. -Assembler szintű programozás: Az utasítás assembler szintű (move, jump, cmp ), az operandusoknál pedig általában regisztereket címzünk és az értékeket regiszterekbe helyezzük el. -Robot-programozó nyelveken való programozás: általában adva vannak bizonyos parancsszavak (megfog, elenged, ) amelyekkel dolgozhatunk, és a programnyelv leírásában pedig megtaláljuk, hogy a pozíciókat milyen formában lehet megadni (pl.: nem pozíciókat, hanem érzékelő értékeket adunk meg, amit persze át kell konvertálnunk skálázás-, hogy tudjuk, hogy: 1 érték hány [mm], vagy hány fordulat). Itt sincs fordító, a vezérlőben az említett parancsszavaknak megvan a kódszámú értelmezése. (Ezt általában a vezérlő operációs rendszerének hívják = a parancs-szavak értelmezése gépi kódra) -Magas szintű nyelveken való robotprogramozás: Klasszikus programnyelvek, melyek közül a robotprogramozásban a legelterjedtebbek: Basic, Pascal, C++,
Robot-programozási nyelvek: Egyenlőre, csak a robot-programozási nyelvek (amennyiben még ezek nem holt nyelvek) általános felépítéséről teszünk említést. Ezek a nyelvek valahol az assembler (mnemonic kód) típusú és a magas-szintű nyelvek között foglalnak helyet. Mivel kimondottan robotműveletekre vannak kitalálva, így a nyelv szókincse is ehhez van igazítva. Több nyelv különböző robotvezérlő berendezés (firmware). MEGJEGYZÉS: Az igazság, hogy a modern robot-programozási nyelvek úgy mint a robot programozás isegyre inkább tendál a mai magas-szintű programnyelvekhez, vagy ha a vezérlő PLC, akkor a PLC programnyelvéhez, vagy ha csak mikrokontrollerrel vezérlünk, akkor a mikrokontroller programnyelvéhez (nagyon sok kontroller magas-szintű, C++, nyelven is programozható). A robot-programozó nyelvek általános struktúrája valójában csak 3 alapstruktúra létezik ezekben a nyelvekben (sorrend, -szekvencia-; ismétlések, ciklus-; elágazások, ugrások-): - Szekvencia : Olyan instrukciók halmaza, melyeket sorrendben egymás után kell végrehajtani. Itt a sorok (lépések) számozva vannak, hogy tudjuk melyik lépést hajtjuk végre. Ezek a számok (indexek) nagyon fontosak tudjuk az instrukció relatív helyzetét is a memóriában; ismerjük a végrehajtási sorrendet. - Ismétlések : Ismételten végrehajtandó instrukciók halmaza = ciklus. Általában kisebb lépés-szám többszöri ismétléséről van szó. A folyamat nagyjából a következő: 1. Olvasd be a sor indexét 2. Hajtsd végre az instrukciót 3. Ez az utolsó ciklus =? 1. IGEN vissza a főprogramba 2. NEM vissza a 2. pontra - Elágazások : Ezzel valójában a programok intelligencia-fokát is meghatározhatjuk. Valójában ez nem más, mint a feltételes / feltétel nélküli ugrás. - Feltételes: a feltétel kiértékelése után ugrás, pl.: kiugrás a ciklusból. - Feltétel nélküli: azonnali ugrás a megadott helyre. Az ugrások lehetnek, a végrehajtási sorrendet figyelembe véve: előre ugrás, illetve hátra ugrás. Az ugrásoknál, ciklusoknál kihasználjuk a belső számlálók, időzítők értékeit.
Programfejlesztés: A különböző programstruktúrák mellett a robotprogramozó nyelvek is tartalmaznak különböző adatstruktúrákat is: INTEGER, REAL, CHARACTER, LOGICAL A programfejlesztésben nagy segítséget nyújt számunkra, ha előzőleg megszerkesztjük a megírni kívánt program folyamatábráját. Ez a következő előnyökkel járhat: -Jobban tudunk koncentrálni a végrehajtandó feladatra (nem veszünk el a részletekben) -Erősíti a logikai tervezésünket, kiemeli az esetleges ismétléseket, redundanciákat. -A későbbiekben mint dokumentáció is használható a későbbi fejlesztésekhez fejlesztőmérnökök -A későbbiekben mint dokumentáció is használható a robot működésének megmagyarázása a felhasználóknak. -Ciklusok pontosabb definiálása. A folyamatábráknak megvannak a maga szimbólumai (lásd ábra), az összekötések pedig irányítottak, a folyamat végrehajtási sorrendjét mutatják. Nagyban meggyorsíthatja a programfejlesztést, ha moduláris programokban gondolkozunk. -Itt az egyes modulokat is fel tudjuk tüntetni a folyamatábrában effektívebb programozás -A modulokból könyvtárakat tudunk létrehozni, így utána más programokban is felhasználhatóak lesznek.
Egy tipikus folyamatábra: Egy kettős ciklust tartalmazó folyamatábra látható a képen.