Platform Type
The following section decides how and when to use each of the platform types.
Standard Platform Types
There are 3 standard platform types - Flat, Anti-stick and Anti-roll. All standard platforms are available in either white or black.
Platform Color
For most applications the best imaging is achieved using the feeder’s built-in LED backlight. When using the built-in backlight, a white translucent tray is used. Backlighting provides a silhouette of the part’s outline.
Surface features of the part will not be visible to the vision system. In some cases, the maximum image contrast can be achieved with a black platform and using custom front lighting. In general, however, the system is meant to be used with the backlight option. Turn on the backlight and detect parts. (Upper-right|Up, down, angular orientation, etc.)
Sometimes transparent and semi-transparent objects have poor contrast when backlit. Different colored backlights can be beneficial for transparent parts.
Platform Material
Depending upon the feeder model, different material may be available for Antistatic ESD or Medical Grade applications (refer to the specific feeder hardware manual for details). For details, refer to the hardware manual of each feeder.
Standard Platforms Usage
Flat:
Parts that have a stable orientation when seated on a tabletop can use a flat platform. The parts should have a stable equilibrium and fast stabilization time after vibration. For high-mix low-volume production, most applications use a Flat Platform.
Appearance
Cross-sectional viewa Parts b Platform In order to retain the Picking accuracy shown in the table below, platforms provided by Epson fulfill the specifications for flatness and parallelism.
IF-80 IF-240 IF-380 / IF-530 Surface Flatness (in millimeters) 0.1 0.2 0.6 Parallelism Between the Surface and a Standard Plane (in millimeters) 0.1 0.5 0.6 Anti-stick:
Anti-stick platforms have narrow grooves to reduce the surface's contact resistance. This reduces friction forces and improves the component movement on the platform surface. Parts that do not spread well because of kinetic friction (sliding friction or dynamic friction) are a good candidate for Anti-Stick platforms.
Surface
Cross-sectional viewa Parts b Platform A B C D IF-80 0.4 0.4 0.2 90 Structure of a standard anti-stick platform for use with small parts
A B C IF-240 0.7 1.3 0.5 Structure of a standard anti-stick platform for use with large parts
Anti-Roll:
Anti-Roll platforms have a machined, structured surface that can stabilize parts that tend to roll on the platform. The Anti-Roll platform is particularly useful when cylindrical components are being fed. The Anti-Roll platform reduces the stabilization time by preventing the parts from rolling.
Surface
Cross-sectional viewa Parts b Platform A B C D Suitable Part Size IF-80 1.25 1 0.5 90 ø 0.7mm - ø 1.5mm IF-80 2.75 2.5 1.25 90 ø 1.5mm - ø 3.5mm IF-240 1.25 1 0.5 90 ø 1.7mm - ø 3.5mm IF-240 3 2.5 1.25 90 ø 3.5mm - ø 7mm IF-240 5.5 5 2.5 90 ø 7mm - ø 14mm IF-380 3 2.5 0.722 120 ø 3mm - ø 5mm IF-380 5.5 5 1.443 120 ø 5mm - ø 10mm IF-530 6.5 6 1.732 120 ø 6mm - ø 12mm Structure of a standard anti-roll platform for use with small parts
A B C D E Suitable Part Size IF-380 10.5 12 5.31 120 2 ø 10mm - ø 24mm IF-530 12.5 14 4.9 120 4 ø 12mm - ø 28mm Structure of a standard anti-roll platform for use with large parts
Custom Platforms
KEY POINTS
Custom platforms need to be designed and manufactured by the customer.
Basic Designs for Custom Platforms
There are 3 basic designs for custom platforms - Holes, Slots, and Pockets. Custom platforms must be designed and manufactured by the user. In the case of a custom platform, the goal is to sufficiently pre-orientate parts in Holes, Slots and Pockets such that the desired cycle time is obtained.
The following summarizes what parts are typically used with each platform types:
Holes:
Surface
Cross-sectional viewa Parts b Platform Slots:
Surface
Cross-sectional viewa Parts b Platform Pockets:
Surface
Perspective viewa Parts b Platform
Guidelines for Custom Platform Design
Holes:
Holes are useful when cylindrical parts are supplied and stood on end.
The basic design for a platform with holes should consider the following items:- In general, a simpler design is better.
- The diameter of the hole (d’) is the most important measurement of the plate.
The diameter of a hole must be wide enough for a part to stand inside it vertically. In the case of parts with diameters up to 3.5 mm, add an additional 0.05 mm to the largest part’s diameter (d). However, wider diameters will be necessary if you have large parts whose diameters exceed 3.5 mm or parts with shapes other than cylindrical (cones, for example). - A hole must have sufficient depth (l’) to serve as a guide for aligning parts against its wall when necessary.
If your workpiece is placed on the bottom, a long guide is unnecessary. - To keep the parts as straight as possible, we recommended guiding them for one third of the part’s height (L) (One half or more if possible).
- Also, be careful of the leftover height of parts on the plate (L’).
- The chamfer (A) is indispensable for putting parts into holes.
In almost all cases, the angle of the chamfer is 60 degrees. - The weight of the custom platform should be the same as the weight of the standard flat platform. If the weight changes significantly, the resonant frequency may change and affect the operation of the feeder. In this case, it may be possible to adjust the frequency of each feeder operation.
D’ d’ l’ A IF-80 >0.5*L d+0.05mm 0.5*L 60 IF-240 >0.5*L d+0.1mm 0.5*L 60 IF-380 >0.5*L d+0.5mm 0.5*L 60 IF-530 >0.5*L d+1.0mm 0.5*L 60 Slots:
A platform designed with slots is used when supplying vertically-attaching screw-shaped parts.
The basic design for a platform with slots should consider the following items:In general, a simpler design is better.
If the platform you use does not have through-slots, 60 millimeters is the maximum length of the parts that can be supplied. In the case of longer parts, design slots that take the plate’s thickness into account.
Decide the slots’ width (d’) based on the diameter (d) of the components. In general, add 0.05 mm ~ 0.1 mm to the largest diameter (Take the allowable amount of error into account). Also consider the tolerance of the slots’ width. This varies depending on the machining; it is not the same for all sizes of feeder. A tolerance of 0/+ is recommended.
Because the workpiece is not placed on the bottom, the depth (L’) of the slot is not important for most situations. Therefore, sufficient size is needed so that parts do not tilt and touch the bottom. For the tolerance, 0/+ is usually applied.
In the case of large parts up to 60 mm in length, through-slots are not required.
For parts longer than 60 millimeters, design through-slots that take the plate’s thickness into account.
d’ L’ IF-80 d+0.05mm L’>L IF-240 d+0.1mm L’>L IF-380 d+0.5mm - IF-530 d+1.0mm - - If the slot goes through the bottom of the platform, an "internal diffuser" is required to prevent the operator from seeing the LED backlight directly and to prevent the backlight light from entering the camera directly. The "internal diffuser" is placed above the backlight.
- The weight of the custom platform should be the same as the weight of the standard flat platform. If the weight changes significantly, the resonant frequency may change and affect the operation of the feeder. In this case, it may be possible to adjust the frequency of each feeder operation.
Pockets:
The basic design for a platform with pockets should consider the following items:- The pockets should be designed such that the parts can be easily grasp by the robot. Ideally the parts will be pre-oriented such that a flat, parallel surface on the part can be picked up by a vacuum cup gripper.
- The part does not need to be perfectly aligned in the pocket. The purpose of the vision system is to provide the position and rotation of the part with in a 2D plane. Once again, the simpler the design, the cheaper the platform. Moreover, a simple platform design typically functions better.
These are only general guidelines. The specific design should be adapted on a case by case basis.
The Platform’s Allowable Weight
Maximum weight of the platform **1 | Maximum weight of component **2 | |
---|---|---|
IF-80 | 150 g | 50 g |
IF-240 | 800 g | 400 g |
IF-380 | 4 kg | 1.5 kg |
IF-530 | 5 kg | 2 kg |
**1
For the IF-80/IF-240, it represents the maximum platform weight (without components).
For the IF-380/IF-530, it represents the maximum weight of the frame + platform assembly (without components).
**2
For the IF-80/IF-240, it represents the maximum weight of components (without platform).
For the IF-380/IF-530, it represents the maximum weight of components (without frame + platform assembly)
Platform Selection
Platform Type selection is made from the Part Feeding dialog Epson RC+ 8.0 Menu - [Tools] - [Part Feeding] - [Vibration Page].
Refer to the following section for further details.
Vibration
When a standard platform type (Flat, Anti-stick and Anti-roll) is selected, the user has the option of letting the system process the feeder vibration or the user can handle the vibration via the PF_Feeder callback. Typically, it is best for the system to process the feeder vibration.
When "User processes vibration for part via PF_Feeder callback" is selected on the Vibration page, the user decides how to feed the parts. The system will make a recommendation of how to vibrate the feeder. This recommendation is provided to the PF_Feeder callback as the "state" parameter. This will be explained in more detail in the next section.
When a custom plate type (Slots, Holes and Pockets) is selected, the user must handle the vibration for the part via the PF_Feeder callback. In the case of custom platforms, the system has no knowledge of how the plate is machined and consequently, the system cannot properly determine how to best feed the parts (Because the optimum vibration type changes depending on the processing of the platform.)
Program Example for Handling a Custom Platform
For this example, a custom platform with holes has been designed to vertically pre-orient pins.
Surface
Cross-sectional view
a | Parts |
b | Platform |
When the user wants to run the vision and load the part queue themselves, select Menu - [Tool] - [PartFeeding] - [Parts] - [Vision] - "User Processes Vision via PF_Vision callback". For this example, however, the system will process the vision.
The robot pick & place will be performed inside the PF_Robot callback. The Platform Type has been selected as "Holes".
Because this is a custom platform, the "User processes vibration for part via the PF_Feeder callback" is the only allowable selection. The top of the pins is found by the Part Sequence and the coordinates are automatically loaded into the part queue.
For this example, no vision object is being used to find the back of the part.
After vision acquires an image and Front parts are loaded into the part queue, the PF_Feeder callback is called. The user’s code judges how to vibrate the feeder inside the PF_Feeder callback.
The quantity of "Front" parts is provided to the PF_Feeder callback as the parameter called "NumFrontParts". For this example, if the "NumFrontParts" is greater than 0 then no vibration is required since parts are available to be picked up by the robot. In this case, the PF_Feeder return value will need to be set to " PF_CALLBACK_SUCCESS".
This return value tells the system to go ahead and call the PF_Robot callback. If the "NumFrontParts" equals 0 then the sample code VRun’s the Part Blob sequence to determine if there is a clump of parts or whether there are no parts at all. If the Part Blob sequence does not find any parts, then the hopper is turned on to supply parts. If the Part Blob sequence finds something then the feeder Flips, Shifts Forward and then Shifts Backward so that the pins can fall into the holes.
Whenever parts have been vibrated on the feeder, the system will need to re-acquire new vision images.
This is accomplished by setting the return value to "PF_CALLBACK_RESTART". The system will re-acquire new images, reload the parts queue and then call PF_Feeder once again. The User Code determines whether or not further feeder operations are necessary.
TIP
A Flip, a long duration Shift Forward and a short duration Shift Backward is the typical feeding strategy for Custom Platforms.
Refer to the following section for further details.
Program Example 5.2
KEY POINTS
The constant PF_FEEDER_UNKNOWN is passed as the "state" argument in the PF_Feeder callback function when the Platform Type is Holes, Slots or Pockets. In the case of Custom Platforms, the system has no knowledge of how the surface is machined and consequently, the system cannot properly determine how to best feed the parts.
Refer to the following section for further details.
Program Example 5.2
Function PF_Feeder(PartID As Integer, NumFrontParts As Integer, NumBackParts As Integer, state As Integer) As Integer
'Example for Structured Platform with holes state = PF_FEEDER_UNKNOWN
Integer PFControlReturnVal
Integer numFound
Select True
'OK to Pick
Case NumFrontParts > 0
'Call PF_Robot because there are parts ready to pick
PF_Feeder = PF_CALLBACK_SUCCESS
'No Front parts were found but there are Back parts
Case NumFrontParts = 0 And NumBackParts <> 0
'Flip, long Shift Forward and short Shift Backward
PF_Flip PartID, 500
PF_Shift PartID, PF_SHIFT_FORWARD, 1000
PF_Shift PartID, PF_SHIFT_BACKWARD, 300
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
'There are no Front or Back parts found
'Either there is a clump of parts or there are no parts on the tray
'Acquire an image from the Part Blob sequence to make a determination
Case NumFrontParts = 0 And NumBackParts = 0
PF_Backlight 1, On ' Backlight on
VRun PartBlob ' Acquire Image
PF_Backlight 1, Off 'Backlight off
VGet PartBlob.Blob01.NumberFound, numFound ' Were any Blobs found?
If numFound > 0 Then ' Clump of parts found
'Flip, long Shift Forward and short Shift Backward
PF_Flip PartID, 500
PF_Shift PartID, PF_SHIFT_FORWARD, 1000
PF_Shift PartID, PF_SHIFT_BACKWARD, 300
Else ' No parts found
'Call the Control callback to supply more parts
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
EndIf
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
Send
Fend
Example of a Standard Flat Platform Using the PF_Feeder Callback Function
For this example, a standard flat platform is being used. Normally the system would determine how to best handle the vibration for a Flat plate.
For this example, the user has determined that the vibration requires special handling, which they will manage themselves. When the Platform Type is Flat, Anti-Stick or Anti-Roll, the system can make the judgement of how to best vibrate the parts. The system’s judgement is provided to the PF_Feeder callback using a parameter called "state". The different states are defined with constants in the "PartFeeding.inc" file.
For example, the constant "PF_FEEDER_PICKOK" means that parts are available to be picked up by the robot. As another example, the constant "PF_FEEDER_FLIP" is passed to the PF_Feeder callback when the system has determined that the best action is to Flip the parts. Conceptually, the user could recreate the system processing by using the PF_Feeder "state" and the corresponding vibration statements.
The following sample demonstrates the basic concept of how to use the "state" parameter to perform the recommended action. This example is not meant to be all inclusive.
Refer to the following section for more complete example.
Program Example 5.1
Function PF_Feeder(PartID As Integer, NumFrontParts As Integer, NumBackParts As Integer, state As Integer) As Integer
Integer PFControlReturnVal, PFStatusReturnVal
Boolean PFPurgeStatus
Select state
Case PF_FEEDER_PICKOK
PF_Feeder = PF_CALLBACK_SUCCESS ' Call PF_Robot because there are
' parts ready to be picked
Case PF_FEEDER_SUPPLY
' Hopper Supply
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
PF_CenterByShift PartID ' Center parts after hopper supply
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
Case PF_FEEDER_FLIP
PF_Flip PartID
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
Case PF_FEEDER_CENTER_FLIP
PF_Center PartID, PF_CENTER_LONG_AXIS, 900
PF_Center PartID, PF_CENTER_SHORT_AXIS
PF_Flip PartID
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
Case PF_FEEDER_HOPPER_EMPTY
' Notify user that the hopper is empty
PFStatusReturnVal = PF_Status(PartID, PF_STATUS_NOPART)
' Supply parts from hopper
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
PF_Center PartID, PF_CENTER_LONG_AXIS
'Center, Flip and Separate parts
PF_Center PartID, PF_CENTER_SHORT_AXIS
PF_Flip PartID
PF_Feeder = PF_CALLBACK_RESTART ' Re-acquire images
Case PF_FEEDER_WRONGPART
If PF_Info(PartID, PF_INFO_ID_OBJECT_PURGE_ENABLED) Then
' If Purge is enabled then Purge using vision feedback
' Each purge attempt will last for 1500 msec.
' 0 parts can remain on the platform.
' 5 retries will be attempted.
PFPurgeStatus = PF_Purge(1, 2, 1500, 3, 5)
If PFPurgeStatus = False Then
Print "Purge was not successful"
Quit All
EndIf
Else ' Notify user that the wrong part may be on the feeder
Print "Wrong part may be on the feeder"
Quit All
EndIf
Send
Fend