RobotStudio event

Packing Seats with off sets

Hi

I am fairly new to robotics and need as much help as I can get image. Currently my company Custom Pak (a blow molding plastics company) has been incorporating robotics into some of the tasks that were either very difficult or impossible for people to do, such as cuts on certain plastic parts. How ever we are currently trying to put a robot on one of our blow molding machines, I have the robot reaching into the blow molding machine, grabbing the part, taking off any excess plastic, and then put into a fixture to create holes in the part. I am currently quite confused of how i should pack the parts into a box, I have never used an offset before and no extremely little about them, any help would be greatly appreciated!

Thanks in advance

Dustin

Comments

  • Hi Dh,

    I imagine you need to place parts into an ordinated scheme, say n rows by m lines. We usually refer to such a scheme as a "pallet", and the entire task as "pallettizing" parts.
    The problem is usually to maintain the number of position below a reasonable level, because pallettizing parts in a 10 by 10 pattern will require - in principle - 100 positions.
    Worse, you'll probably need at least two "fly-by" positions to reach the placing point ad to get back, so now we have 300 positions.

    Let's start from the 1 position pick-place cycle. You'll have something like that:

    MoveJ pHome, v100, fine, tool1;
    WHILE TRUE DO
      ! Pick
      MoveJ offs(pPick, 0,0,100), vmax, z10, tool1Wobj:=woPick;
      MoveL pPick, v100, fine, tool1Wobj:=woPick;
      Set doGrab;
      WaitTime 1;
      MoveL offs(pPick, 0,0,100), v100, z10, tool1Wobj:=woPick;
      ! Place
      MoveJ offs(pPlace, 0,0,100), vmax, z10, tool1Wobj:=woPlace;

      MoveL pPlace, v100, fine, tool1Wobj:=woPlace;

      Reset doGrab;
      WaitTime 1;

      MoveL offs(pPlace, 0,0,100), v100, z10, tool1Wobj:=woPlace;

    ENDWHILE

    In this example, I use the offs function to build "fly-by" positions directly in the program. This allows me to:
    - save some positions
    - fly-by positions follow pPick and pPlace if the user change them.

    Now, the easiest way to create a pallettizing pattern, is offseting pPlace with predefined X and Y deltas.

    CONST num dx:=50;
    CONST num dy:=50;
    VAR num i:=0;
    VAR num j:=0;

    MoveJ pHome, v100, fine, tool1;
    WHILE TRUE DO

      ! Pick

      MoveJ offs(pPick, 0,0,100), vmax, z10, tool1Wobj:=woPick;

      MoveL pPick, v100, fine, tool1Wobj:=woPick;

      Set doGrab;

      WaitTime 1;

      MoveL offs(pPick, 0,0,100), v100, z10, tool1Wobj:=woPick;

      ! Place

      MoveJ offs(pPlace, i*dx,j*dy,100), vmax, z10, tool1Wobj:=woPlace;


      MoveL offs(pPlace, i*dx,j*dy,0), v100, fine, tool1Wobj:=woPlace;


      Reset doGrab;

      WaitTime 1;


      MoveL offs(pPlace, i*dx,j*dy,100), v100, z10, tool1Wobj:=woPlace;
      i:=i+1;
      IF i>=10 THEN
        i:=0;
        j:=j+1;
      ENDIF
      IF j>=10 THEN
        ! Pallet complete
        STOP;
        i:=0;
        j:=0;
      ENDIF


    ENDWHILE


    First, this program has the drawback that pPlace cannot be easily modified.
    Second, if you need to "tune" positions (tipically to keep the pallet tight), you'll need a lot of extra-code.
    The solution is using a persistent matrix of positions, in the form pPlace{i,j}. Usually I put a procedure to calculate all the positions, using offsets in two nested FOR loops. Next, I (or the user) can modify the elements in the matrix even one by one. Fly-by position will automatically follow.

    I hope this will help you.
    Claudio


  • thank you so much, that makes things a little more clear and understandable, this will help me quite a bit I think I'll work on that tonight, hopefully things go well image.

    Thanks again.

     

    Dustin
  • Hello!
    I am doing a pick and place program for packing in a euro pallet, the problem is that the product must be 180 degrees rotated on axle 6 (pick place 0 degrees, pick place 180 deg. pick place 0 deg and so on). The program Claudio explained is perfect besides my 180 deg. problem.

     

    I know this is a verry old thread but i am getting desperate Cry

     

    P.S

    I am using a S4C+ system.

     

    Thansk in advance

     

    /Patrik
  • It's embarrissing seeing how little I knew back then now Tongue.

    I don't know if this instruction is available on the S4c+ system, however if I were to run into that problem I would use the RelTool Function.

    RelTool (Point Dx Dy Dz [Rx] [Ry] [Rz])

    Example:
    MoveL RelTool (p1, 0, 0, 0 Rz:= 25), v100, fine, tool1;
    The tool is rotated 25A? around its z-axis.

    Dustin
  • Hi!
    Ok, but can i use that in a offs instruction and how can i make it do it every other cycle?

    Im sorry for my (probably) basic questions Smile

  • you can use the reltool instruction in place of the offs function. You just need to make sure your TCP is set up properly.

    I'm sorry I dont have much time to help, but a short answer would be to remove the offset instructions and replace them with rel tool instructions. just keep in mind that the rel tool instruction is going to move relative to your tool center point.

    also to have it switch back and forth you could do something like
    MoveL RelTool (p1, 0, 0, 0 Rz:= Zrot_V), v100, fine, tool1;
    then change zrot_v each cycle to the needed rotation.




    dh_custompak2010-12-16 15:41:08
    Dustin
  • Thank you, i will try reltool.
  • thank you so much, that makes things a little more clear and understandable, this will help me quite a bit I think I'll work on that tonight, hopefully things go well .

    Thanks again.



    bellows in india | Expansion joints in chennai