Is it possible to depalletize an object then palletize it back into its original position before moving on to the next?

In this scenario, I am trying to program it to depalletize a bottle, move it to a position, then palletize it back into its original position before continuing to depallet the bottles.

Is this possible to program? If so, could anyone give me a little guidance?

Thanks in advance.

It’s not a “built-in” feature like other stuff, so you will have to do some extra programming. :slight_smile:
I can see two ways to achieve this:

  1. By editing the palletizing counter (pallet_cnt as far as I remember) to a lower number with an Assignment command and then executing the palletize function again (either by loop or skipping the rest of the code with an If).
    Then you will need an If or Switch command in the ToolActions to switch between picking and delivering by looking at another variable.
  2. Use two Pallet functions. One to pick up and one to put back. And then synchronize the pallet counters (Pallet_1_Cnt := Pallet_Cnt).

Does this make sense? :slight_smile:

For option 1, I will have to test and experiment with it.

Option 2, If i were to synchronize the pallet counters, can we program it to do a task in between the two pallet functions?

Is there a benefit in using one or the other option you mentioned?

You can just put programming in between the two pallet functions, yeah. It sounds to me like you should experiment some with using If-commands and variables to control sequences.
Like set a variable to True, if some conditions are met and then letting that variable control whether some commands within an If-command are executed or not. :slight_smile:

You could create two Position variables Above_Pick & Pick_Pos.
then when in the depalletizing function use a get_actual_tcp_pose and store the positions in these Position variables.

then you simply need to go to these positions to place them back into the pallet where they came from.

saves on having depalletizing and palletizing functions and simplifes you program.

How do you save a position as a variable?

Under the installation tab it wants a value, what should that be?

Also, Using this method, would I have to save each individual position as a variable? Since we are working around the pallet/depallet function?

Just teach two points in the Installation features (it doesn’t matter where they’re going to be overwitten ) Above_Pick & Pick_Pos.

Use the same two position variables each time you pick then use the recorded positions to go back to when you’ve finished the process.

image

hope this helps

That’s a pretty good idea. :slight_smile: I would definitely go with this.

Yes, it is possible!
I Use it a lot!

You create your pallet and pick the bottle. Than you place it to where ever you need it to be and then move to the TAP and Aproach points in the same reference systeme and link the points.

This above example worked great for me in a dual spindle lathe loading program, I actually kept track of 2 previous positions with a second position variable above the suggested line since 2 parts would be in the lathe. This made my part return to table code ridiculously easy compared to the massive amount of code I needed to find all the positions on the initial depalletize.

Code in the palletize routine looked like:
MoveJ
Approach
PrevApr_Pose := CurrentApr_Pose
CurrentApr_Pose := get_actual_tcp_pose()
MoveL
ToolActionPoint
PrevTAP_Pose := CurrentTAP_Pos
CurrentTAP_Pos := get_actual_tcp_pose()