IAI GmbH
IAI Service-Hotline

Pick & Place II

This example uses the same application as the standard pick and place, but utilizes "pointers" or "indirect addressing" to minimize lines of code.
The standard pick and place example is fine for only 8 possible place points, but what if this pallet was expanded to 100 points? This code would grow to be very large and cumbersome.


The following I/O has been chosen by the user:

Output 302 : "On" = Gripper close, "Off" = Gripper open
Output 303 : "On" = z-axis down, "Off" = z-axis up
Input 10 : "On" = Bad part sensed
Input 11 : "On" = Good part sensed
Input 12 : "On" = z-extended
Input 13 : "On" = z-retracted
Input 14 : "On" = cycle start input


The following point data has been "taught" by the user (mm units):

1: (pick) x-axis ( 25.255), y-axis ( 68.111)
2: (place1) x-axis (101.935), y-axis (194.932)
3: (place 2) x-axis (126.942), y-axis (194.932)
4: (place 3) x-axis (151.942), y-axis (194.932)
5: (place 4) x-axis (176.942), y-axis (194.932)
6: (place 5) x-axis (101.935), y-axis (194.932)
7: (place 6) x-axis (126.942), y-axis (194.932)
8: (place 7) x-axis (151.942), y-axis (194.932)
9: (place 9) x-axis (176.942), y-axis (194.932)
10: (bad part) x-axis (176.942), y-axis (194.932)

We still use subroutines to handle the z-axis and gripper, but this time, we use a variable both to keep track of our position and to control the "loop" determined by TAG.
If you would like to see an example of crash recovery, check out the "Palletizing with Recovery" example.