Tema de proiect [303194]
[anonimizat] – [anonimizat], [anonimizat].
Mașinile se clasifică în :
Mașini de forță (energetice);
Mașini de lucru.
[anonimizat].
[anonimizat].
Mașina unealtă este o mașină de lucru având rolul de a [anonimizat], [anonimizat] o [anonimizat]. [anonimizat] o parte a procesului de producție rezultând liniile tehnologice.
[anonimizat], destinatefectuării unor funcții motoare sau intelectuale ale omului. Printre diferitele clase de roboțiuna dintre cele mai importante o [anonimizat].
Un robot industrial este un echipament care nu funcționeazã [anonimizat]ãîmpreunã cu alți roboți și/[anonimizat], ajungându-se astfel lanoțiunea de celulã flexibilã de fabricație.
. Prin“deservire” se înțelege operația de introducere a obiectului de lucru în mașina / utilajul / instalația /dispozitivul în care se produce operația de prelucrare și extragerea lui după terminarea prelucrării.
Lucrarea de are următoarele obiective:
Analiza integrarii unui robot industrial antropomorf intr-o aplicatie de deservire masini unelte
Analiza layoutului optim
Determinarea realizarii productiei cerute si la ce viteza a robotului
Realizarea programarii robotului in modul ofline si testarea lui in K-roset
Definirea fluxului de productie actual
Echipamentele disponibile :
3 [anonimizat] 138s/ [anonimizat], în așa fel încât să se poată interschimba intrarea tavitei in masina cu iesirea acesteia. Acest lucru poate ajuta la definirea layoutului optim si la reducerea timpului de deplasare cu tavitele pline.
Fig.1.1 Componentele mașinii ORBIT
Fig. 1.2 Cote de gabarit ale mașinii ORBIT
5 [anonimizat] 198s / [anonimizat], să se poată interschimba intrarea tavitei in masina cu iesirea acesteia. Acest lucru poate ajuta la definirea layoutului optim si la reducerea timpului de deplasare cu tavitele pline.
Fig. [anonimizat]. [anonimizat]. 1.2 Cote de gabarit ale mașinii ORBIT
Masina de gravat cu laser avand timpul de prelucrare de 45s/ tavita
Fluxul productiei :
Lentilele sunt pregatite de catre operatori. Acestea sunt lipite de un suport metalic cu rolul de a sustine lentila in timpul prelucrarilor ulterioare. Doua cate doua lentile sunt asezate apoi in niste tavite speciale pentru a putea fi introduse in masinile de prelucrat direct.
Lentilele astfel pregatite sunt introduse in masinile de prelucrat ORBIT, aceastea prelucreaza lentilele pentru a ajunge la forma dorita si apoi tavita cu amandoua lentilele este evacuata pe partea opusa intrarii.
Lentilele prelucrate sunt mutate apoi in urmatoarea masina DUO-FLEX in vederea slefuirii si indepartarii oricaror urme posibile lasate de la sculele de prelucrat anterioare. Dupa slefuire acestea sunt evacuate pe partea opusa intrarii la fel ca la ORBIT.
Acum lentilele mai au nevoie doar de gravarea cu laser pentru a avea o identificare a lor, a lotului de productie si datei realizarii lor.
Date de intrare
Pentru realizarea acestei teme am preluat de la client urmatoarele date care sunt necesare:
Productivitatea ceruta este de 1800tavite / 24 ore
marimea suportului pentru lentile si cateva suporturi preluate ca model;
Fig Tavita / suport lentile
timpul de prelucrare cel mai scurt pentru fiecare masina in parte: Orbit: 2,3 minute, duo flex 3,3 minute , masina laser 45 s;
ambele masinii, ORBIT si DUO-FLEX, pot fi programate pentru a interschimba intrarea pieselor cu iesirea;
Fig. Exemplificare intrare/iesire masina ORBIT
spatiul de lucru in care se doreste a fi asamblata celula flexibila de fabricatie
Fig. Layout fabrica actual
Pentru acest proiect se modifica hala, eliminand ziduri interioare, pentru a crea spatiul de lucru pentru celula robotizata conform marcajului galben din fig de mai sus. Rezulta un spatiu cu o lungime de 18m si o latime de 4,7m intr-un capat si 8,3m in celalat capat.
CAD pentru masinile de prelucrat lentile DUO-FLEX si ORBIT
Proiectarea celulei si stabilirea layoutului
Pentru realizarea obiectivului avem nevoie de un layout care sa ne ajute in scurtarea miscarilor robotului si a avea un traseu cat mai scurt in timpul unui ciclu complet.
Etape parcurse :
Stabilirea tipului de robot si a celulei initiale: robot brat articulat cu translatie la baza, a saptea axă;
Stabilirea layoutului initial in 2D;
Fig. Layout initial
Prima idee pentru layout a fost aceea de a pune o sina comuna pentru doi roboti care sa lucreze sincronizat pentru realizarea productivitatii.
De la aceasta idee s-a putut continua si imbunatatii layoutul pana la o forma acceptabila pentru inceperea simularii.
Imbunatatirea layoutului pana la o forma utila unei simulari
Fig. Layout initial modificat
La o analiza mai amanuntita s-a constatat ca nu se putea determina daca doi roboti pe aceeasi sina cresc productivitatea sau se incura pe aceeasi banda. Pentru ca din punct de vedere financiar un singur robot este mai ieftin ca doi, s-a decis ca este nevoie de o simulare pentru a determina daca doar un singur robot poate face fata productivitatii masinilor de prelucrat si anume 1800 de tavite/ 24ore .
Fig. Imbunatatire layout 2d
Fig. Imbunatatire layout 2d, micsorare axa de translatie robot
Layoutul a fost imbunatatit prin adaugarea laserului de gravat si mutatea uneia dintre masinile DUO-FLEX.Prin aceste modificare s-a putut reduce lungimea axei de translatie necesara pentru robot la 14500mm, avand ca rezultat un cost mai scazut pentru realizarea aplicatiei.
Inceputul simulării offline a aplicatiei si continuarea imbunatatirii layoutului in mediu 3D, direct in programul de simulare K-roset
Dupa stabilirea unui layout cat de cat acceptabil s-a trecut la mediu de lucru 3D in K-roset si inceputul simularii offline. Pe masura ce programul robotului a avansat, s-a putut determina si traseul si layoutul robotului optim pentru a se putea atinge productivitatea ceruta.
Versiunea 1 :
Fig. Varianta 1 in K-roset
Descriere poza :
3 masini ORBIT, masrcate cu rosu
5 masini DUO-FLEX marcate cu alb
4 conveioare gravitationale Robital ( 3 de intrare, 1 iesire catre masina de gravat)
Fig. Conveior gravitational cu role
Conveiorul gravitational Robital este construit din profile Maytec de aluminiu profilate, capace din plastic pentru profilele maytec, role rollven tip 28a, baza de plastic pentru preluarea denivelarilor de la nivelul solului, piese de legatura proiectate special pentru preluarea inclinatiei conveiorului.
Lungime conveior = 1500mm, h intrare= 1200, h iesire = 1100
Fig. Vedere laterala conveior gravitational
Fig. Vedere cale de rulare conveior gravitational
Robot RS005L
Fig. Specificatii robot RS005 L
Axa de translatie robot ( cu negru dimensiunea sinei de translatie, cu alb dimensiunea de gabarit)
S-a inceput prin a introduce cel mai mic robot care ar putea ridica tavita cu cele două lentile in greutate de 1kg cât si a efectorului. Din acest motiv s-a inceput testarea cu robotul RS 005L cu masa portanta de 5kg, montat pe un stativ, care, la rândul său a fost montat pe axa de translatie la baza. Acest lucru permite ridicarea robotului la 1m deasupra axei de translatie si atingerea punctelor de preluare necesare. S-a continuat în același timp și optimizarea layoutului.
Fig. Axa de translatie robot F972000
Axa de translatie la baza este modulara si este produsa de Tiesse Robot. Masa portanta maxima este de 600 kg, acceleratia maxima este de 2m/s2.
Versiunea 2 :
Fig. Versiunea 2 K-roset
S-a putut constata ca pentru aceasta aplicatie desi RS005L poate face fata din punct de vedere al masei portante, el nu poate atinge cu usurinta pozitiile de preluare de pe masini, chiar si cu ridicarea robotului pe un suport de 1m, necesitand inlocuirea acestuia cu robotul RS006L, avand masa portanta de . In acelasi timp s-a modificat pozitia conveioarelor de intrare pentru a facilita traseul robotului in aplicatie.
Fig. Specificatii robot RS006L
Versiunea 3 :
Fig. Versiunea 3 K-roset
S-a continuat cu optimizarea layoutului prin mutarea celor trei conveioare de intrare cat mai aproape de masinile ORBIT pentru scurtarea drumului robotului. In acelasi timp a fost calculată si pozitia sinei in partea stanga, astfel încat sa permita robotului sa atinga toate punctele nesesare de pe masini.
Versiunea 4 :
Fig. Versiunea 4 K-roset
Studiul a fost continuat prin a muta din nou conveioarele in raport cu masinile Orbit din acelasi principiu. Conveioarele fiind acum pozitionate intre 2 masini Orbit, robotul poate prelua tavita de pe conveior si sa o depuna pe oricare din cele doua masini fara a se deplasa pe axa 7.
Versiunea 5 :
Fig. Versiunea 5 K-roset
Au fost apoi adaugate mici conveioare gravitationale pentru asigurarea unui buffer de 1 tavita pe intrarile si iesirile din masini.
Versiunea 6 :
Fig. Versiunea 6 K-roset
A fost testată atingerea tuturor punctelor de pe masini cu ajutorul afisarii spatiului de lucru in k-roset . In acelasi timp s-a continuat si optimizarea layoutului prin suprapunerea celor treiconveioare de intrare pentru a avea mai mult spatiu si micsorarea traseului robotului pe axa 7.
Versiunea 7 :
Fig. Versiunea 7 K-roset
A fost stabilită lungimea minima a sinei, 11268mm, prin verificarea atingerii punctelor de pe capetele acesteia. Deoarece axa de transaltie este modulara din module cu lungimea de 800mm plus capetele incative ale acesteia ne rezulta marimea minima a echipamentului de 11900mm .
In acelasi timp pentru optimizare au fost stabilite intrarile si iesirile din masini pentru a micsora si mai mult traseul de parcurs al robotului pe axa 7. Intrarile in masini au fost marcate cu verde, reprezentand conveiorul pentru buffer de 1 tavita. Iesirile au fost marcate cu maro, de asemenea avand conveior de buffer de 1 tavita. In acest fel robotul din pozitia afisata in poza poate ajunge sa preia tavite de pe cele 3 conveioare si sa le depuna pe cele doua masini orbit apropiate fara a efectua miscare de translatie la baza. Acest lucru mareste viteza de manipulare a pieselor pentru incarcarea pieselor in cele doua masini si scade uzura axei de translatie.
Versiunea 8 :
Fig. Versiunea 8 K-roset
De la aceasta versiune a sistemului s-a inceput dezvoltarea si testarea programului pentru simulare .
Versiunea 9 :
Fig. Versiunea 9 K-roset
Au fost introduse tavite pentru a simula miscarea lor in program.
Versiunea 10 :
Fig. Versiunea 10 K-roset
S-a inceput optimizarea traseului robotului pentru ca in timpul miscarii sa nu loveasca masinile.
Versiunea 11 :
Fig. Versiunea 11 K-roset
S-au salvat punctele pentru preluare si depunere tavite.
Versiunea 12 :
Fig. Versiunea 12 K-roset
Au fost adaugate notatii pentru masini, pentru a putea identifica si in program fiecare masina in parte
Versiunea 13 :
Fig. Versiunea 13 K-roset
A fost efectuata o prima simulare in care s-a putut observa ca traiectoriile nu sunt optime si se pierde mult timp in timpul miscarii pe axa 7.
Versiunea 14 :
Fig. Versiunea 14 K-roset
In versiunea finala punctele de preluare si de depunere au fost salvate in asa fel incat robotul sa efectueze cat mai putine deplasari pe axa 7. Pentru acest lucru au fost alese 5 puncte pe axa 7 de unde robotul poate ajunge la mai multe masini odata. De exemplu din punctul 1 pe axa 7, robotul poate ajunge si la masina A si la masina 3, din punctul 3 robotul poate ajunge la cele 3 conveioare si cele 4 masini 1,2,B,C.
Pentru a verifica daca pe traiectoria robotului loveste vreo masina, a fost folosit plug-in-ul colision check cu distanta coliziune setata la 10mm. In acest fel s-a putut observa foarte usor daca robotul, pe parcursul celor 23 de manipulari ale tavitelor sau a miscarilor fara tavita, se apropie la mai putin de 10mm de alte obiecte.
A fost observat in timpul testarilor ca robotul pierde timp daca intr-o miscare are puncte intermediare pentru a putea, de exemplu, sa efectueze o miscare de la iesirea masinii 1 la intrarea masinii D, care este pe partea opusa. Intr-un astfel de punct robotul incetineste pentru a atinge punctul si apoi accelereaza pentru a ajunge la urmatorul punct. Pentru a optimiza aceste miscari a fost folosita comanda de setare a acuratetii prin care robotul confirma ca atinge punctul respectiv chiar daca se afla la o anumita distanta de acesta. Am folosit comanda „ACCURACY 100 ALWAYS” prin care robotul confirma ca atinge toate punctele din timpul miscarii la o distanta de 100mm. S-a mai folosit si activarea functiei „continous path „ cu ajutorul careia robotul se misca fluid atunci cand are de atins mai multe puncte, fara opriri. Atunci cand robotul trebuie sa preia sau sa depuna tavita, a fost folosita comanda „ACCURACY 1 FINE” care seteaza acuratetea robotului doar pentru urmatoarea miscare, cea de preluare, la 1mm.
Tot pentru optimizarea traseului a fost realizata o prioritizare a miscarilor intre masini. Astfel robotul verifica prima data daca masina 1, 2,3 (in aceasta ordine) poate primi tavita. Daca masinile respective pot fi alimentate acestea sunt alimentate tot in ordinea 1,2,3. Apoi sunt verificate iesirile din masinile 1,2,3. Daca exista piese prelucrate, acestea sunt luate din masinile respective si duse catre cea mai apropiata masina libera care efectueaza a cea de-a doua prelucrare. Pentru acest lucru a fost efectuata urmatoarea prioritizare:
Cand exista piesa prelucrata in masina 1, se virifica in urmatoarea ordine masinile : E,D,C,B,A
Cand exista piesa prelucrata in masina 2, se verifica in urmatoarea ordine masinile : B,A,C,D,E
Cand exista piesa prelucrata in masina 3, se verifica in urmatoarea ordine masinile: A,B,C,D,E
In acest fel sunt evitate traseele mai lungi precum 1-A sau 2-E si rezulta o economie de timp prin reducerea distantei de deplasare a robotului.
Concluzie asupra simularii
Au fost in total 21 de versiuni, in unele dintre ele nu se pot observa diferente in modelul 3D pentru ca diferentele constau in modificarile aduse programului de simulare.
Astfel s-a ajuns la varianta finala in care am putut face simularea completa si am avut un rezultat pozitiv in ceea ce priveste productivitatea :
Fig. Layout final
In versiunea finala au fost adaugate pentru fiecare masina conveioare suplimentare pentru a fi folosite pe post de buffer, masinile au fost pozitionate optim si intrarile lor exemplificate pentru a fi executat un traseu cat mai scurt. In poza conveioarele verzi reprezinta partea de intrare in masina, iar celelalte partea de iesire.
De asemenea in aceasta versiune dupa cum se poate vedea s-a determinat marimea minima necesara pentru cursa translatiei la baza ( banda neagra) si partea transparenta reprezinta dimensiunea de gabarit a echipamentului care arata asa :
Fig. Dimensiuni axa de translatie la baza
Fig. Prinderea robotului pe axa de translatie
Fig. Vedere laterala axa de translatie
Fig. Vedere frontala axa de translatie
Acest echipament este produs de catre Tiesse Robot, special conceput pentru a fi compatibil cu robotii kawasaki.
De asemenea in simulare am numerotat masinile, s-a constatat din calcule ca productivitatea ce mai mica o au cele 3 masini orbit fata de cele 5 duoflex, asa ca in program a fost prioritizata alimentarea celor trei masini pentru a nu ajunge in situatia ca acele masini sa ramana in repaus din cauza robotului.
Fig. Vedere k-roset, teach pendant virtual
Pentru verificarea programului de simulare a fost realizata o interfata pe teach pendantul virtual din K-roset. Aceasta interfata cuprinde :
Cu rosu intrarile si iesirile din masinile ORBIT 1,2,3 asa cum sunt ele marcate in program, m11i (intrare masina 1 ), m11o (iesire/output masina 1), etc
Intrarile si iesirile din cele 5 masini DUO-FLEX , m21i/m21o (intrare/iesire masina A), etc.
Numarul de piese evacuate catre laser de la fiecare masina DUO-FLEX in parte, e1,e2,e3,e4,e5
Numarul total de piese intrate in sistem „i”
Buffer pentru masinile ORBIT (a fost folosit pentru test)
Timpul de lucru al masinilor ORBIT SI DUO-FLEX t1,t2
Ecran pe care am afisat timpul de simulare si un ceas cu timpul real
Simularea in K-roset nu ruleaza la viteza de 1 la 1 fata de timpul real, ci ruleaza in functie de puterea procesorului si de resursele disponibile pe calculatorul unde ruleaza simularea. Acest lucru inseamna ca pe un calculator performant o simulare de 2 ore poate dura cateva minute, sau pe un calculator slab mai mult de 2 ore. Chiar si aplicatiile deschise pe langa k-roset poate influenta viteza de simulare. De aceea am adaugat acest ecran galben cu timpul de simulare si cu timpul real. K-roset la sfarsitul simularii calculeaza timpul real de simulare si poate afisa timpul real exact pentru fiecare miscare efectuata in parte.
Fig. Teach pendant virtual
Crearea programului pentru simulare
Pentru realizarea simularii este nevoie a fi creat programul pentru robot. Dar in acest caz a fost nevoie ca in interiorul programului robotului sa se introduca si functionarea masinilor pentru a putea simula corect. Asadar s-a inceput prin a fi creata o schita a programului dupa care sa ma ghidez si care sa o transform ulterior in program AS.
Am continuat prin verificarea programului scris si rezolvarea problemelor pentru a fi sigur ca simularea este 100% reala. Pentru aceasta am introdus pe teachpendantul virtual o serie de variabile prin care am putut sa verific productivitatea si mai ales functionarea corecta a programului. Am adaugat un cronometru prin care sa pot vedea timpul de simulare ( timpul de simulare nu corespunde cu timpul real, el depinzand de puterea de procesare a calculatorului si de resursele disponibile, iar la finalul simularii este calculat timpul de simulare real pe baza timpului de procesare, dar pentru a putea vedea in timp real cronometru a fost nevoie de aceasta solutie cu afisarea lui pe teachpendant printr-un program suplimentar).
Pozitiile de preluare ale robotului au fost si ele optimizate si realizat un program corezpunzator pentru a micsora timpul de deplasare intre masini. Au fost folosite doar 5 pozitii pe axa 7, cea care ar putea incetinii robotul. De exemplu pentru preluarea de pe conveioarele de intrare, si punerea pe piesei pe primele 2 masini s-a folosit o singura pozitie pe axa 7. Asa ca cand este executata o preluare de pe conveior si depunere pe masina robotul nu se misca si pe axa 7 ci doar pe cele 6 axe principale ale lui, ceea ce mareste timpul de deplasare considerabil.
Principiul de functionare al programului
Programul functioneaza porneste prin resetarea tuturor celor 34 de variabile folosite si a celor 30 de semnale interne. Apoi programul intra intr-o bucla continua in care verifica mereu semnale (virtuale) atribuite fiecarei masini. Cand un semnal este activ robotul porneste programul de miscare si realizeaza miscarea corespunzatoare semnalelor primite. De exemplu daca semnalul de la intrare masina orbit 1 este activ, robotul pleaca si preia piesa de pe conveiorul de intrare si se duce sa depuna pe masina ORBIT 1.
Pentru intelegerea usoara a principiului de functionarea a programului am realizat schema bloc a acestuia :
Fig. Schema logică a programului de simulare
Dupa pornirea programului pe robot, acesta ramane intr-o bucla continua unde verifica mereu semnale de la masinile deservite (bucla este verificata odata la cateva fractiuni de secunda) . Cand una din masini este libera, robotul primeste un semnal si executa programul de miscare necesar. Daca nici o masina nu este libera sau are piesa terminata de prelucrat robotul ramane in bucla si verifica la fiecare 4us cate o linie de program.
Programul final pentru simulare :
Programul utilizat pentru simulare este realizat din 3 programe care sunt aratate mai jos.
Programul principal este programul in care robotul ramane in bucla si verifica semnalele de la masini.
Programul autostart este un program care se executa automat si functioneaza in paralel cu programul principal. Acesta functioneaza pe acelasi principiiu de bucla, doar ca acum acesta simuleaza timpii de prelucrare pentru fiecare masina in parte . Acest tip de program “autostart” nu poate realiza miscari pentru robot ci doar calcule si temoporizari pentru a ajuta programul principal.
Urmatorul program este programul de miscare care realizeaza toate miscarile robotului in functie de cum este acesta chemat din programul principal “move(#iesire12,#intrare24)” .
Programul principal :
.PROGRAM principal() #17
PCABORT 1:
PCABORT 2:
TWAIT 0.1
PCEXECUTE 1: autostart.pc
TWAIT 0.1
PCEXECUTE 2: testare3
; SPEED 70 ALWAYS
ACCEL 50 ALWAYS
DECEL 50 ALWAYS
ACCURACY 100 ALWAYS
SIGNAL -2001,-2002,-2003,-2004,-2005,-2006,-2007,-2008,-2009,-2010,-2011,-2012
SIGNAL -2013,-2014,-2015,-2016,2030,2031,2032,-2090,-2091,-2092,-2093,-2094,-2095,-2096,-2097
SIGNAL -9,10
i = 0
m11i = 0
m12i = 0
m13i = 0
m21i = 0
m22i = 0
m23i = 0
m24i = 0
m25i = 0
m11o = 0
m12o = 0
m13o = 0
m21o = 0
m22o = 0
m23o = 0
m24o = 0
m25o = 0
e1 = 0
e2 = 0
e3 = 0
e4 = 0
e5 = 0
UTIMER @piesa11 = 0
UTIMER @piesa12 = 0
UTIMER @piesa13 = 0
UTIMER @piesa21 = 0
UTIMER @piesa22 = 0
UTIMER @piesa23 = 0
UTIMER @piesa24 = 0
UTIMER @piesa25 = 0
flag1 = 0
flag2 = 0
flag3 = 0
flag4 = 0
flag5 = 0
10;HOME
CALL intrare11
i = i+1
UTIMER @piesa11 = 0
; DLYSIG 2004,t1
m11i = m11i+1
TYPE "Prima piesa M11 in lucru."
CALL intrare12
i = i+1
; DLYSIG -2002,t1
; DLYSIG 2005,t1
; DLYSIG 2031,t1
m12i = m12i+1
UTIMER @piesa12 = 0
TYPE "Prima piesa M12 in lucru."
CALL intrare13
i = i+1
; DLYSIG -2003,t1
; DLYSIG 2005,t1
; DLYSIG 2032,t1
m13i = m13i+1
UTIMER @piesa13 = 0
TYPE "Prima piesa M13 in lucru."
; END
load:
; IF SIG(-2001) THEN
; CALL intrare11
; m11i= m11i+1
; END
; IF SIG(-2002) THEN
; CALL intrare12
; m12i=m12i+1
; END
; IF SIG(-2003) THEN
; CALL intrare13
; m13i=m13i+1
; END
begin:
SIGNAL 1
IF (m11i<b1) THEN
CALL intrare11
i = i+1
SIGNAL 2001
m11i = m11i+1
END
BREAK
IF (m12i<b1) THEN
CALL intrare12
i = i+1
SIGNAL 2002
m12i = m12i+1
GOTO begin
END
IF (m13i<b1) THEN
CALL intrare13
i = i+1
SIGNAL 2003
m13i = m13i+1
GOTO begin
END
BREAK
IF (m11o>0 AND (m21i==0 OR m22i==0 OR m23i==0 OR m24i==0 OR m25i==0)) THEN
IF m25i==0 THEN
IF flag5==0 THEN
UTIMER @piesa25 = 0
flag5 = 1
END
CALL move1125
BREAK
SIGNAL -2004
SIGNAL 2015
m25i = m25i+1
m11o = m11o-1
TYPE UTIMER(@piesa11)
GOTO begin
END
IF m24i==0 THEN
IF flag4==0 THEN
UTIMER @piesa24 = 0
flag4 = 1
END
CALL move(#iesire11,#intrare24)
SIGNAL -2004
SIGNAL 2013
m24i = m24i+1
m11o = m11o-1
GOTO begin
END
IF m23i==0 THEN
IF flag3==0 THEN
UTIMER @piesa23 = 0
flag3 = 1
END
CALL move(#iesire11,#intrare23)
SIGNAL -2004
SIGNAL 2011
m23i = m23i+1
m11o = m11o-1
GOTO begin
END
IF m22i==0 THEN
IF flag2==0 THEN
UTIMER @piesa22 = 0
flag2 = 1
END
CALL move(#iesire11,#intrare22)
SIGNAL -2004
SIGNAL 2009
m22i = m22i+1
m11o = m11o-1
GOTO begin
END
IF m21i==0 THEN
IF flag1==0 THEN
UTIMER @piesa21 = 0
flag1 = 1
END
CALL move(#iesire11,#intrare21)
SIGNAL -2004
SIGNAL 2007
m21i = m21i+1
m11o = m11o-1
GOTO begin
END
END
IF (m12o>0 AND (m21i==0 OR m22i==0 OR m23i==0 OR m24i==0 OR m25i==0)) THEN
IF m22i==0 THEN
IF flag2==0 THEN
UTIMER @piesa22 = 0
flag2 = 1
END
CALL move(#iesire12,#intrare22)
SIGNAL -2005
SIGNAL 2009
m22i = m22i+1
m12o = m12o-1
GOTO begin
END
IF m21i==0 THEN
IF flag1==0 THEN
UTIMER @piesa21 = 0
flag1 = 1
END
CALL move1221
SIGNAL -2005
SIGNAL 2007
m21i = m21i+1
m12o = m12o-1
GOTO begin
END
IF m23i==0 THEN
IF flag3==0 THEN
UTIMER @piesa23 = 0
flag3 = 1
END
CALL move(#iesire12,#intrare23)
SIGNAL -2005
SIGNAL 2011
m23i = m23i+1
m12o = m12o-1
GOTO begin
END
IF m24i==0 THEN
IF flag4==0 THEN
UTIMER @piesa24 = 0
flag4 = 1
END
CALL move(#iesire12,#intrare24)
SIGNAL -2005
SIGNAL 2013
m24i = m24i+1
m12o = m12o-1
GOTO begin
END
IF m25i==0 THEN
IF flag5==0 THEN
UTIMER @piesa25 = 0
flag5 = 1
END
CALL move(#iesire12,#intrare25)
SIGNAL -2005
SIGNAL 2015
m25i = m25i+1
m12o = m12o-1
GOTO begin
END
END
IF (m13o>0 AND (m21i==0 OR m22i==0 OR m23i==0 OR m24i==0 OR m25i==0)) THEN
IF m21i==0 THEN
IF flag1==0 THEN
UTIMER @piesa21 = 0
flag1 = 1
END
CALL move(#iesire13,#intrare21)
SIGNAL -2006
SIGNAL 2007
m21i = m21i+1
m13o = m13o-1
GOTO begin
END
IF m22i==0 THEN
IF flag2==0 THEN
UTIMER @piesa22 = 0
flag2 = 1
END
CALL move(#iesire13,#intrare22)
SIGNAL -2006
SIGNAL 2009
m22i = m22i+1
m13o = m13o-1
GOTO begin
END
IF m23i==0 THEN
IF flag3==0 THEN
UTIMER @piesa23 = 0
flag3 = 1
END
CALL move(#iesire13,#intrare23)
SIGNAL -2006
SIGNAL 2011
m23i = m23i+1
m13o = m13o-1
GOTO begin
END
IF m24i==0 THEN
IF flag4==0 THEN
UTIMER @piesa24 = 0
flag4 = 1
END
CALL move(#iesire13,#intrare24)
SIGNAL -2006
SIGNAL 2013
m24i = m24i+1
m13o = m13o-1
GOTO begin
END
IF m25i==0 THEN
IF flag5==0 THEN
UTIMER @piesa25 = 0
flag5 = 1
END
CALL move(#iesire13,#intrare25)
SIGNAL -2006
SIGNAL 2015
m25i = m25i+1
m13o = m13o-1
GOTO begin
END
END
IF (m21o>0 OR m22o>0 OR m23o>0 OR m24o>0 OR m25o>0) THEN
IF m21o>0 THEN
CALL move(#iesire21,#evacuare)
SIGNAL (-2008)
m21o = m21o-1
e1 = e1+1
TYPE "Piesa M21 evacuata"
END
IF m22o>0 THEN
CALL move22e
SIGNAL (-2010)
m22o = m22o-1
e2 = e2+1
TYPE "Piesa M22 evacuata"
END
IF m23o>0 THEN
CALL move23e
SIGNAL (-2012)
m23o = m23o-1
e3 = e3+1
TYPE "Piesa M23 evacuata"
END
IF m24o>0 THEN
CALL move(#iesire24,#evacuare)
SIGNAL (-2014)
m24o = m24o-1
e4 = e4+1
TYPE "Piesa M24 evacuata"
END
IF m25o>0 THEN
CALL move(#iesire25,#evacuare)
SIGNAL (-2016)
m25o = m25o-1
e5 = e5+1
TYPE UTIMER(@piesa25)
TYPE "Piesa M25 evacuata"
END
END
GOTO begin
30
.END
Programul de miscare parametrizat:
.
PROGRAM move(.#prel,.#dep) #1109
DECOMPOSE a[1] = #HERE
DECOMPOSE b[1] = .#prel
DECOMPOSE d[1] = .#dep
DECOMPOSE h[1] = #h ;home
ACCURACY 100 ALWAYS
; point #
xtrail = b[7]-a[7]
drive1 = b[1]-a[1]
; DRIVE 7,xtrail
IF (ABS(a[1])>=140 OR ABS(b[1])>=140) THEN
CP ON
JMOVE #PPOINT(a[1],h[2],h[3],h[4],h[5],h[6],a[7])
JMOVE #PPOINT(h[1],h[2],h[3],h[4],h[5],h[6],b[7])
; JMOVE #PPOINT(b[1],h[2],h[3],h[4],h[5],h[6],b[7])
JAPPRO .#prel,500
CP OFF
ELSE
JAPPRO .#prel,500
END
SPEED 20
ACCURACY 1 FINE
JMOVE .#prel
BREAK
SIGNAL 9,-10
TWAIT 0.6
JDEPART 500
;JMOVE #PPOINT(h[1],h[2],h[3],h[4],h[5],h[6],b[7])
DECOMPOSE a[1] = #HERE
; DECOMPOSE b[1] = .#dep
xtrail = d[7]-a[7]
; DRIVE 7,xtrail
drive1 = d[1]-a[1]
IF (ABS(a[1])>=140 OR ABS(d[1])>=140) THEN
CP ON
JMOVE #PPOINT(a[1],h[2],h[3],h[4],h[5],h[6],a[7])
JMOVE #PPOINT(h[1],h[2],h[3],h[4],h[5],h[6],d[7])
JMOVE #PPOINT(d[1],h[2],h[3],h[4],h[5],h[6],d[7])
JAPPRO .#dep,500
TYPE ABS(d[1]),ABS(b[1])
CP OFF
ELSE
JAPPRO .#dep,500
END
; JAPPRO .#dep,100
SPEED 20
ACCURACY 1 FINE
JMOVE .#dep
BREAK
SIGNAL -9,10
TWAIT 0.6
; SIGNAL 2001
JDEPART 500
;JMOVE #PPOINT(h[1],h[2],h[3],h[4],h[5],h[6],b[7])
RETURN
.END
Programul autostart care simuleaza functionarea masinilor
.PROGRAM autostart.pc() #0
UTIMER @piesa11 = 0
10 IF (UTIMER(@piesa11)>t1 AND (m11i>0)) THEN
DLYSIG (2004),t1
SIGNAL -2001
m11i = m11i-1
TWAIT 0.01
m11o = m11o+1
TYPE "Piesa M11 gata"
TYPE UTIMER(@piesa11)
UTIMER @piesa11 = 0
END
IF (UTIMER(@piesa12)>t1 AND (m12i>0)) THEN
DLYSIG (2005),t1
SIGNAL -2002
m12i = m12i-1
TWAIT 0.01
m12o = m12o+1
TYPE "Piesa M12 gata"
TYPE UTIMER(@piesa12)
UTIMER @piesa12 = 0
END
IF (UTIMER(@piesa13)>t1 AND (m13i>0)) THEN
DLYSIG 2006,t1
SIGNAL -2003
m13i = m13i-1
TWAIT 0.01
m13o = m13o+1
TYPE "Piesa M13 gata"
TYPE UTIMER(@piesa13)
UTIMER @piesa13 = 0
END
IF (UTIMER(@piesa21)>t2 AND (m21i>0)) THEN
; DLYSIG 2008,t2
SIGNAL -2007
;PULSE 2093,t2
m21i = m21i-1
TWAIT 0.01
m21o = m21o+1
TYPE "Piesa M21 gata"
TYPE UTIMER(@piesa21)
UTIMER @piesa21 = 0
END
IF (UTIMER(@piesa22)>t2 AND (m22i>0)) THEN
SIGNAL -2009
m22i = m22i-1
TWAIT 0.01
m22o = m22o+1
TYPE "Piesa M22 gata"
TYPE UTIMER(@piesa22)
UTIMER @piesa22 = 0
END
IF (UTIMER(@piesa23)>t2 AND (m23i>0)) THEN
SIGNAL -2011
m23i = m23i-1
TWAIT 0.01
m23o = m23o+1
TYPE "Piesa M23 gata"
TYPE UTIMER(@piesa23)
UTIMER @piesa23 = 0
END
IF (UTIMER(@piesa24)>t2 AND (m24i>0)) THEN
SIGNAL -2013
m24i = m24i-1
TWAIT 0.01
m24o = m24o+1
TYPE "Piesa M24 gata"
TYPE UTIMER(@piesa24)
UTIMER @piesa24 = 0
END
IF (UTIMER(@piesa25)>t2 AND (m25i>0)) THEN
SIGNAL -2015
m25i = m25i-1
TYPE UTIMER(@piesa25)
TWAIT 0.01
m25o = m25o+1
TYPE "Piesa M25 gata"
TYPE UTIMER(@piesa25)
UTIMER @piesa25 = 0
END
GOTO 10
.END
Rezultate Simulare :
Prima data s-a simulat robotul la viteza de 50% si am avut urmatoarele rezultate :
Fig. Viteza 50%, timp scurs 1803 secunde
Fig. Viteza 50%, timp scurs 3603 secunde
Fig. Viteza 50%, timp scurs 5401 secunde
Fig. Viteza 50%, timp scurs 7200 secunde
Se observa ca dupa 2 ore de simulare au fost evacuate 122 de piese, dar au ramas acumulate pe traseu alte 32 de piese.
Pentru ca nu s-a atins obiectivul la aceasta viteza, a mai fost facuta o simulare la viteza de 60%:
Fig. Viteza 60%, timp scurs 1802 secunde
Fig. Viteza 60%, timp scurs 3697 secunde
Fig. Viteza 60%, timp scurs 7208 secunde
Se poate observa ca au fost evacuate dupa 2 ore spre laser 151 de piese si nu s-a mai produs acumulare de piese pe traseu. Pentru asigurarea productivitatii era nevoie de o medie de 75 de piese/ora asa ca se poate spune ca productivitatea ceruta a sistemului este atinsa la o viteza de 60%.
Programul folosit in simularea ofline poate fi folosit si la aplicatia reala prin modificarea semnalelor virtuale cu semnale reale de la senzorii amplasati in punctele de preluare si depunere a tavitelor.
Bibliografie
https://robotics.kawasaki.com/
http://www.rollven.com
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tema de proiect [303194] (ID: 303194)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
