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 view

    a 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 view

    a 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 view

    a 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 view

    a Parts
    b Platform
  • Slots:

       Surface


       Cross-sectional view

    a Parts
    b Platform
  • Pockets:

       Surface


       Perspective view

    a 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