Hello there!
I want to make a program in which I use the Palletizing Function for FANUC ROBOTS but assigned to a specific User Frame. I know it is possible to use Position registers and then it'll be easy to change the pallet's placing with a user frame, but I want to know if it's possible to specifically use the Palletizing Function for doing so.
FANUC ROBOTS - Palletizing Function using User Frames?
-
Gabriel Cinti -
July 19, 2021 at 8:05 PM -
Thread is Unresolved
-
-
Yes, this is definitely possible and exactly how we are using this option. The palletizing points work pretty much the same as any point with all the usual motion options.
-
Could you elaborate on how to do it? It looks like it's always getting the reference from the User Frame 0 rather than an UF set by me. And even changing the UF in the exact same program I made using the palletizing function doesnt change anything. Example: I have two pallets that have the exact same format and size, one set to UF1 and another to UF2, if I use UF1 to set up my first pallet, then set the exact same program to use UF2, it'll still go to the touchups I did in the first pallet, not the second one as I'd want it to.
-
I'm sorry, I misunderstood your question. You are right that the palletizing command always stores the points in world coordinates. I don't believe there is any way to simply change the user frame to move the pallet points. You would need to use a PR to store the offset between the two pallets/user frames. Something like this:
Code
Display MoreJ P[1] 100% FINE ; IF (F[28:STACK ON C2]) THEN ; OFFSET CONDITION PR[31:OFFSET] ; ELSE ; OFFSET CONDITION PR[100:Zero] ; ENDIF ; PALLETIZING-B_1 ; J PAL_1[A_1] 30% CNT100 Offset ; L PAL_1[BTM] 500mm/sec FINE Offset ; L PAL_1[R_1] 900mm/sec CNT100 Offset ; PALLETIZING-END_1 ; J P[1] 100% FINE ;
-
Oh I see, thank you nonetheless! I ended up making up a program in which I can determine how many pieces there are in the 3 axys (X Y Z) for the pallet and that you can determine the distance between pieces on all 3 axys as well. In any case I'll be attaching its code here. In this case you'd need to save PR2 as the first point of your pallet, and if its a linear pallet, it should work just fine.
Code:1: UFRAME_NUM=3 ;
2: UTOOL_NUM=1 ;
3: ;
4: ;
5: PR[1]=LPOS ;
6: PR[1]=PR[1]-PR[1] ;
7: IF (R[1]=3),R[2]=(R[2]+1) ;
8: IF (R[2]=3),R[3]=(R[3]+1) ;
9: IF (R[1]=3),R[1]=(0) ;
10: IF (R[2]=3),R[2]=(0) ;
11: IF (R[3]=3),R[3]=(0) ;
12: R[4]=R[1]*R[7] ;
13: PR[1,1]=PR[1,1]+R[4] ;
14: R[5]=R[2]*R[8] ;
15: PR[1,2]=PR[1,2]+R[5] ;
16: R[6]=R[3]*R[9] ;
17: PR[1,3]=PR[1,3]+R[6] ;
18: PR[1,3]=PR[1,3]+55 ;
19: ;
20: ;
21:J PR[1] 100% FINE Offset,PR[2] ;
22: PR[1,3]=PR[1,3]-55 ;
23:J PR[1] 100% FINE Offset,PR[2] ;
24: CALL OPEN_GRIPPER ;
25: PR[1,3]=PR[1,3]+55 ;
26:J PR[1] 100% FINE Offset,PR[2] ;
27: R[1]=R[1]+1 ;