Discussion

Left ArrowBack to discussions page
rstuartrstuart Posts: 3 Apprentice

I am working on programming my cell. It consists of 4 load nests that allow me to stack 100 pieces in each stack. There is a prox switch at the bottom of each stack used for part present. I am trying to use the Seek/Destacking function to pick parts one by one. I load up all stations and press start. Robot unloads first station, no problem and starts unloading second. In the meantime, I place more parts in the first nest. The robot now returns to unloading the first nest before completely unloading the nest it was working on. I am using an If statement related to the part present sensors and calling a subprogram that has the destacking info in it. How can I get it to complete the stack it is working on without moving to another stack?

Comments

  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    edited April 15
    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the first stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the firs stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    https://dof.robotiq.com/discussion/1567/multiple-destacking-operations#latest

    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the firs stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the firs stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the firs stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
  • David_GouffeDavid_Gouffe Posts: 56Vacuum Beta tester Handy
    https://dof.robotiq.com/discussion/1567/multiple-destacking-operations#latest

    Hi, 

    Your challenge is probably that at the beginning of the program you check the 4 stacks. This is checked, whenever you emptied a stack or not. 

    This way, your program always start by checking : Is there a part on the firs stack, process all of them, then check for stack 2, then stack 3 and then stack 4. 

    The IO check should be done just at the beginning of the program when selecting the stack or after a single part is picked to see if the stack is emptied.

    Here is the suggested approach for it: 

    Create a variable assigned to 0 at beginning in the "before start" section.
    "StackNb_Var:=0 "
    To select the stack, use the actual "If" statement checking the IO of each stack.
    This step is inside an "IF" statement only executing if the variable "StackNb_Var:=0 "

    Inside each stack selected, assign the current stack corresponding to the IO signal.
    "StackNb_Var:=3" 
    (Here is the example of the stack 3, do the same for 1, 2 and 4)

    The movements are associated with the current stack. You can select the stack with either a "IF" statement or a "Switch Case" structure. 

    After each pick is done and the robot cleared the part up, then you can check if the Stack IO is OFF. A Stack IO off is stating the stack is done. 
    The "IF" statement check the Stack_IO is equal to False and inside the IF statement, you set the variable "StackNb_Var:=0 " . This way the system will select the next stack to unload. 

    N.B.:  "StackNb_Var"  is the variable name, whichever the name you choose.  

    Hope this helps.

    Regards, 

    David Gouffé

    Integration Coach

    Coach en intégration


    Robotiq is now into packaging, palletizing and sanding applications. Learn more about our new Vacuum Grippers and the Robotiq Sanding Kit.


    1-888-ROBOTIQ #275 (762-6847)

    1-418-380-2788 #275 (Outside US and Canada)

    1-418-655-9221 (Cell)

    Follow us on

    facbook-iconepng linkedin-iconepng twitter-iconepng google-iconepng Youtube-iconepng

    Visit us:  
     
Sign In or Register to comment.
Left ArrowBack to discussions page