1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Creating a new Palletization plan

  • ekkobluee
  • July 8, 2021 at 12:02 PM
  • Thread is Resolved
  • ekkobluee
    Trophies
    2
    Posts
    9
    • July 8, 2021 at 12:02 PM
    • #1

    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.

  • Fubini
    Reactions Received
    272
    Trophies
    9
    Posts
    1,871
    • July 8, 2021 at 1:57 PM
    • #2

    Just use forum search. More than once we discussed on how to implement a palletization program. If you are looking for documentation register for Kuka XPert Portal with all available documentation. If you do not know where to start Forum Read First is always a good start.

    READ FIRST... - KUKA Robot Forum - Robotforum - Support and discussion community for industrial robots and cobots (robot-forum.com)

    Fubini

  • Online
    SkyeFire
    Reactions Received
    1,039
    Trophies
    12
    Posts
    9,380
    • July 8, 2021 at 2:52 PM
    • #3

    Definitely READ FIRST.

    More specifically, we would need to know how the existing "Palletizing Plans" were made. They could have been programmed entirely "by hand" in raw KRL, or the original programmer could have used a version of PalletTech that requires a licensed piece of offline software to generate patterns.

  • ekkobluee
    Trophies
    2
    Posts
    9
    • July 9, 2021 at 10:07 AM
    • #4

    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...

    Files

    Program.zip 78.54 kB – 55 Downloads
  • panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,033
    • July 9, 2021 at 2:24 PM
    • #5

    first you would need to expand "gestion_prog.src" to add new case (or cases).

    then duplicate one of pattern modules and adapt it...

    this means you would need to modify calculation (in SRC) and pattern data (in DAT).

    this will require advanced KRL skills.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Online
    SkyeFire
    Reactions Received
    1,039
    Trophies
    12
    Posts
    9,380
    • July 9, 2021 at 3:26 PM
    • #6

    There's a lot being driven by variables that aren't in that package, like NUM_PROG, NUM_CANTON, NUM_POSE, etc.

    It looks like GESTION_CANT is the "main" program, and the PRISE and POSE_BRIDE_xx program is the one that actually executes the motions. The PR_PO_xxx programs appear to modify the points that PRISE executes based on varaibles like NUM_CANTON, NUM_POSE, etc.

    Reverse-engineering this would need an entire backup of the robot, and an understanding of who's controlling those variables, and what values they can take on. It's impossible to say if they are controlled by a counter in some other program in the robot, or remotely by a cell PLC, or something else.

    The calling stack seems to go:

    GESTION_CANT calls PR_PO_xxx, PR_PO_xxx modifies points, then calls PRISE and then POSE_BRIDE_xx in that order.

    If you can determine what all these variables are doing and where they're controlled from, you might be able to find the PR_PO program for the product most similar to the one they want you to add, copy that, then modify it. But there's a lot of missing data here.

    Just looking at PR_PO_PP01, NUM_CANTON and NUM_POINT control what recorded point is copied into XPT_POSE, and the various PLAN_01 points are visible in the .DAT file, but why they have the different dimensions they do is unknown. The rotations all seem to be the same, they mostly vary from each other in X, but what that means is dependent on many factors that aren't visible in these programs.

    At minimum, you're going to need a complete robot backup, and a tool like BareGrep, and do a lot of tracing. This will be a non-trivial reverse-engineering task.

  • ekkobluee
    Trophies
    2
    Posts
    9
    • July 12, 2021 at 5:01 PM
    • #7

    Hey again!

    I added these lines in the "gestion_prog" file to get the user to choose the added palletization plans:

    Code
    CASE 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
    :%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    :%%%%%%%%%%%%%%%%%%%%%%%% 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
    ; 
    ;
    Display More

    Of course I didn't do much, I just redirected the code to the next one.

    Code
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%% 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
    Display More

    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 57
    2468

    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.

    Edited 2 times, last by ekkobluee (July 15, 2021 at 8:21 AM).

  • ekkobluee
    Trophies
    2
    Posts
    9
    • July 15, 2021 at 11:28 AM
    • #8

    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....

  • Online
    SkyeFire
    Reactions Received
    1,039
    Trophies
    12
    Posts
    9,380
    • July 15, 2021 at 3:06 PM
    • #9

    As I said before, you need to get a full backup of the robot, not just this handful of files, and then chase variables through the file tree. Building a full flowchart of how one style operates would also be handy in unravelling exactly how the existing code works.

  • ekkobluee
    Trophies
    2
    Posts
    9
    • July 27, 2021 at 8:56 AM
    • #10

    The problem has been solved. Thank you guys.

    The solution was to do some modification in PLC and IHM.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • KUKA
  • palletizing
  • Beginner
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download