What I know is that they have a "gohome" option on the HMI and when they select it, the robot goes to home position and hits a barrier (it calculates the shortest distance). I'm trying to figure out what part of the program is in charge of the home position so I can change the trajectory of the robot. I'm also trying to understand how the PLC program works to figure out the way it communicates with the robot. But I see the home point everywhere in the program and I don't understand half of it so I'm just trying to figure out how the main program works for now.
Posts by ekkobluee
-
-
The robot hits a barrier everytime an operator makes it go to home position
-
Hey guys,
I'm new to KRL. I'm working on a KR 60L45-3 (KRC4). The robot keeps hitting a barrier everytime the home position is solicited so I'm trying to figure out how to change the home trajectory in order for it to never happen again. I'm trying to decrypt the code, I'm using both the advanced programming manual and the system variables manual to understand the algorithme. However I'm still stuck when I see lines like these:
Code$BWDSTART = FALSE ;Have no clue what this one does PDAT_ACT=PDEFAULT ; or this one FDAT_ACT=FHOME ; BAS (#PTP_PARAMS,10 ) ; what does this line do? does it look for some parameters $H_POS=XHOME ; I don't understand why they put this line here PTP XHOME ; when this line already exists to tell the robot to go to this poin
The full program is in the attachement, in case you want to check it out.
(Disclaimer : once again, this code is not my property)
Thank you for your interest.
-
Hey guys,
I was wondering, what's the difference between a main program and a cell? I encountred some situations where the main program is written on the cell, and others where the main program is written apart. So I'm not really sure about it.
-
The problem has been solved. Thank you guys.
The solution was to do some modification in PLC and IHM.
-
Robot type: Kuka Kr 180 PA
After doing some researche I found out that the pallet pattern I'm asked to do already exists in the program (it's the pr_po_pp02 ( )) so I don't think I need the do any modification on the program. However, I need to somehow add other items (two items with different dimensions and layers). The thing is, I can't find the program file with all the data (items' data, pallet data etc...). I know that they didn't use any palletizing software and technology(Palletedit/Palletech). .....Still looking....
-
Hey again!
I added these lines in the "gestion_prog" file to get the user to choose the added palletization plans:
CodeCASE 26 ;trajectoire de prise convoyeur d'entrée et de pose ;sur l'un des cantons avec le plan de palettisation 26 PR_PO_PP26 () CASE 27 ;trajectoire de prise convoyeur d'entrée et de pose ;sur l'un des cantons avec le plan de palettisation 27 PR_PO_PP27 ()
The most similar pallet plan to the one I need to do is the plan 02. So I changed the code a bit which resulted to this:
Code
Display More:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% :%%%%%%%%%%%%%%%%%%%%%%%% Plan de palettisation programme du pr_po_pp26 ( ) source %%%%%%%%%%%%%%%%%%%%%%%%%% &ACCESS RVO1 ;???? &REL 53 ;??? DEF pr_po_pp26 ( ) ;affectation du repere actuel $BASE=$WORLD ;FOLD PTP PT_REBOUCLAGE CONT Vel= 100 % VIT_RAPIDE Tool[1]:PREHENSSEUR Base[0];%{PE}%R 4.1.12,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:PT_REBOUCLAGE, 3:C_PTP, 5:100, 7:VIT_RAPIDE $BWDSTART = FALSE PDAT_ACT=PVIT_RAPIDE BAS(#PTP_DAT) FDAT_ACT=FBASE BAS(#FRAMES) BAS(#VEL_PTP,100) PTP XPT_REBOUCLAGE C_PTP ;ENDFOLD ;fold CALCUL ;calcul du decalage du point de prise XPT_TABLE=XPT_REF_TABLE:{x 0,y 10,z 0,a 0,b 0,c 0} ;calcul du decalage du point d'approche XPT_APP_TABLE=XPT_TABLE:{x -200,y 0,z 0,a 0,b 0,c 0} SWITCH NUM_CANTON CASE 1 ;affectation du canton FTRAVAIL=FCANTON1 ;affectation des vitesses PVIT_RAPIDE_ACTU=PVIT_RAPIDE_C1 PVIT_LENTE_ACTU=PVIT_LENTE_C1 PVIT_A_VIDE_ACTU=PVIT_A_VIDE_C1 LVIT_RAPIDE_ACTU=LVIT_RAPIDE_C1 LVIT_LENTE_ACTU=LVIT_LENTE_C1 ;affectation du point selon le cotés de chargement XPT_POSE=PT_PLAN26_C1[NUM_POSE] CASE 2 ;affectation du canton FTRAVAIL=FCANTON2 ;affectation des vitesses PVIT_RAPIDE_ACTU=PVIT_RAPIDE_C2 PVIT_LENTE_ACTU=PVIT_LENTE_C2 PVIT_A_VIDE_ACTU=PVIT_A_VIDE_C2 LVIT_RAPIDE_ACTU=LVIT_RAPIDE_C2 LVIT_LENTE_ACTU=LVIT_LENTE_C2 ;affectation du point selon le cotés de chargement XPT_POSE=PT_PLAN26_C2[NUM_POSE] CASE 3 ;affectation du canton FTRAVAIL=FCANTON3 ;affectation des vitesses PVIT_RAPIDE_ACTU=PVIT_RAPIDE_C3 PVIT_LENTE_ACTU=PVIT_LENTE_C3 PVIT_A_VIDE_ACTU=PVIT_A_VIDE_C3 LVIT_RAPIDE_ACTU=LVIT_RAPIDE_C3 LVIT_LENTE_ACTU=LVIT_LENTE_C3 ;affectation du point selon le cotés de chargement XPT_POSE=PT_PLAN26_C3[NUM_POSE] ENDSWITCH SWITCH NUM_POSE CASE 1 ;calcul de la hauteur de pose XPT_POSE.z=XPT_POSE.z+(HAUTEUR_CARTON*(NUM_COUCHE-1))+HAUTEUR_PALETTE[REF_PALETTE] ;activation du décalage d'approche PT_APPROCHE_ACTIF=FALSE CASE 2 ;calcul de la hauteur de pose XPT_POSE.z=XPT_POSE.z+(HAUTEUR_CARTON*(NUM_COUCHE-1))+HAUTEUR_PALETTE[REF_PALETTE] ;activation du décalage d'approche PT_APPROCHE_ACTIF=TRUE CASE 3 ;calcul de la hauteur de pose XPT_POSE.z=XPT_POSE.z+(HAUTEUR_CARTON*NUM_COUCHE)+HAUTEUR_PALETTE[REF_PALETTE] ;activation du décalage d'approche PT_APPROCHE_ACTIF=FALSE CASE 4 ;calcul de la hauteur de pose XPT_POSE.z=XPT_POSE.z+(HAUTEUR_CARTON*NUM_COUCHE)+HAUTEUR_PALETTE[REF_PALETTE] ;activation du décalage d'approche PT_APPROCHE_ACTIF=TRUE ENDSWITCH XPT_SUPERIEUR=XPT_POSE XPT_SUPERIEUR.y=XPT_SUPERIEUR.y-100 XPT_SUPERIEUR.z=2000 XPT_SUPERIEUR=XPT_SUPERIEUR:{x -100,y 0,z 0,a 0,b 0,c 0} XPT_SUPERIEUR.s=XPT_POSE.s XPT_SUPERIEUR.t=XPT_POSE.t XPT_INFERIEUR=XPT_POSE XPT_INFERIEUR.y=XPT_INFERIEUR.y-100 XPT_INFERIEUR.z=XPT_INFERIEUR.z+HAUTEUR_CARTON XPT_INFERIEUR=XPT_INFERIEUR:{x -100,y 0,z 0,a 0,b 0,c 0} XPT_INFERIEUR.s=XPT_POSE.s XPT_INFERIEUR.t=XPT_POSE.t XPT_APPROCHE=XPT_POSE XPT_APPROCHE.y=XPT_APPROCHE.y-100 XPT_APPROCHE.z=XPT_APPROCHE.z+50 XPT_APPROCHE=XPT_APPROCHE:{x -100,y 0,z 0,a 0,b 0,c 0} XPT_APPROCHE.s=XPT_POSE.s XPT_APPROCHE.t=XPT_POSE.t XPT_DEGAGEMENT=XPT_POSE XPT_DEGAGEMENT.y=XPT_DEGAGEMENT.y-50 XPT_DEGAGEMENT.z=XPT_DEGAGEMENT.z+50 XPT_DEGAGEMENT=XPT_DEGAGEMENT:{x -50,y 0,z 0,a 0,b 0,c 0} XPT_DEGAGEMENT.s=XPT_POSE.s XPT_DEGAGEMENT.t=XPT_POSE.t ;endfold prise ( ) pose_bride_off ( ) END ; ;
Of course I didn't do much, I just redirected the code to the next one.
Code
Display More%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%% Plan de palettisation programme du pr_po_pp26 ( ) DEC %%%%%%%%%%%%%%%%%%%%%%%%%%% &ACCESS RVO1 ;???? &REL 53 ;????? DEFDAT PR_PO_PP26 ;************************************************************ ;Declaration de la matrice contenant les points de pose ;du plan 26 avec chargement par la droite DECL POS PT_PLAN26_C1[4] ;PT_PLAN26_C1[numero de pose] PT_PLAN26_C1[1]={x 585.0,y -10.0,z 10.0,a 180.0,b 0.0,c 180.0,s 2,t 2} PT_PLAN26_C1[2]={x 940.0,y -10.0,z 10.0,a 180.0,b 0.0,c 180.0,s 2,t 2} PT_PLAN26_C1[3]={x 585.0,y -10.0,z 10.0,a 180.0,b 0.0,c 180.0,s 2,t 2} PT_PLAN26_C1[4]={x 940.0,y -10.0,z 10.0,a 180.0,b 0.0,c 180.0,s 2,t 2} ; ;************************************************************ ;Declaration de la matrice contenant les points de pose ;du plan 26 avec chargement par la gauche DECL POS PT_PLAN26_C2[4] ;PT_PLAN26_C2[numero de pose] PT_PLAN26_C2[1]={x 205.0,y -30.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN26_C2[2]={x -135.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN26_C2[3]={x 205.0,y -30.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN326_C2[4]={x -135.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} ; ;************************************************************ ;Declaration de la matrice contenant les points de pose ;du plan 26 avec chargement par la gauche DECL POS PT_PLAN26_C3[4] ;PT_PLAN026_C3[numero de pose] PT_PLAN26_C3[1]={x 230.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN26_C3[2]={x -130.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN26_C3[3]={x 230.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} PT_PLAN26_C3[4]={x -130.0,y 0.0,z 10.0,a 0.0,b 0.0,c 180.0,s 2,t 34} ; ENDDAT
Now, I learnt that the PLC is the one that sets the dimensions of both the box and the pallet. However, I still don't understant whose are those coordinations. My pallet plan is supposed to be like this:
1 3 5 7 2 4 6 8 Two rows and 4 columns. I'll come back tomorrow if I find anything else.
Thank you guys for your comments I feel less alone on this.
-
This is the program (I don't even know if I have the right to put it here, but just in case, this program is not my property, it's the property of the FABRICOM company). I don't have any software so I literally can't run the program yet, they just gave me a bunch of files with sub programs everywhere "i read the program in .txt and I don't even know what was writtend by kuka and what was written by the former programmer". After, adding my program, they expect me to test it directly on the robot (I don't know how it works because the only course I had in KUKA involved the SMARTPAD so I guess I will inplant it into the smart pad using a USB card?). An automation technician is supposed to take the lead and connect the robot to the PLC.
What I think I understand as of now, is that in the palletization plans are written in the files named pr_po_ppi (i=1 to 25) And the positions are saved there. What I don't understand however is whether he saved the box points and the pallet points using the points method or he used some other way ?
I read the software user manual but it only detailed what I already saw in class. I don't know. I'm kinda lost.... should I request using the SMARTPAD? to see how the program runs there? I don't know...
-
Hey guys,
The thing is i'm stuck. I'm doing an internship for my last year of college. I was asked to create a new palletization plan. The robot has already 25 plans (or so it seems, i don't really understant much of the program but i can see that the previous programmer made 25 cases so he gave the operator 25 choices of plans). I really am a beginner, what i'm trying to do now is understand the previous program so i can add the requested plan. I have the pallet and box dimensions but i don't know where to put them. I don't understand how they calculated the positions. Do you guys have any documentation on the creating process?
Thank you in advence.