プラットフォームの種類
この章では、プラットフォームの種類について説明します。
標準プラットフォームの種類
平面(Flat), 吸着防止(Anti-stick), 転がり防止(Anti-roll)の3種類の標準プラットフォームがあります。いずれのプラットフォームも、白色および黒色が利用できます。
プラットフォームの色
ほとんどのアプリケーションでは、フィーダーのビルトインバックライトを使用することで最適な画像処理が実現できます。バックライトを使用する場合は、白い半透明のプラットフォームを使用します。バックライトは、パーツの外周を投影します。
パーツ表面の特徴は、ビジョンシステムからは見えません。なお、コントラストを最大化したい場合は、黒いプラットフォームとカスタムフロントライトを使用して達成することもできます。ただし一般に、システムはバックライトオプションと一緒に使用することを意図しています。バックライトを点灯させて、パーツを検出します。(右上|上下, 角方向など。)
透明なオブジェクトや半透明のオブジェクトは、バックライト時にコントラストが悪い場合があります。白色以外のバックライトは、透明なパーツでコントラストを得るのに効果的な場合があります。
プラットフォームの材質
フィーダーモデルによっては、帯電防止(ESD)、または医療用のアプリケーションで特殊な材料を利用できます。詳細は、各フィーダーのハードウェアマニュアルを参照してください。
標準プラットフォームの使用法
平面:
安定した姿勢を持つパーツは、平面プラットフォームを使用できます。 パーツは、フィーダー振動後に短時間で静止することが必要です。 多品種少量生産のために、ほとんどのアプリケーションでは、平面プラットフォームを使用します。
外観
断面図a パーツ b プラットフォーム Epsonが提供するプラットフォームは、以下の表のピッキング精度を保つために、平坦度と平行度の仕様を満たしています。
IF-80 IF-240 IF-380 / IF-530 表面の平坦度 [mm] 0.1 0.2 0.6 表面と基準間の平行度 [mm] 0.1 0.5 0.6 吸着防止:
吸着防止プラットフォームは、表面の接触抵抗を減少させるための狭い溝があります。これにより、摩擦力が低減され、フィーダー表面のパーツの動きが改善されます。 運動摩擦(滑り摩擦や動摩擦)のために分散しにくいパーツは、吸着防止プラットフォームの有力候補です。
表面
断面図a パーツ b プラットフォーム A B C D IF-80 0.4 0.4 0.2 90 小型部品用標準吸着防止プラットフォームの構造
A B C IF-240 0.7 1.3 0.5 大型部品用標準吸着防止プラットフォームの構造
転がり防止:
転がり防止プラットフォームは、転がりやすいパーツを静止させることができる機械加工された構造面があります。 転がり防止プラットフォームは、円筒形成分を供給する場合に特に有効です。転がり防止プラットフォームは、パーツの転がり防止により安定化時間を短縮します。
表面
断面図a パーツ b プラットフォーム A B C D 適している部品 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 小型部品用標準転がり防止プラットフォームの構造
A B C D E 適している部品 IF-380 10.5 12 5.31 120 2 ø 10mm - ø 24mm IF-530 12.5 14 4.9 120 4 ø 12mm - ø 28mm 大型部品用標準転がり防止プラットフォームの構造
カスタムプラットフォーム
キーポイント
カスタムプラットフォームは、お客様が設計、および製作してください。
カスタムプラットフォームの基本デザイン
カスタムプラットフォームには、穴, 溝, ポケットの3つの基本設計があります。カスタムプラットフォームの目的は、所望のサイクルタイムが得られるように穴, 溝, ポケットを利用して、パーツを整列することです。部品の自然な静止位置がピッキング方向と一致しない場合、部品を正しく配置するには、カスタムプラットフォームが必要です。
次は、カスタムフォームの一般的な概要を示しています。
穴:
表面
断面図a パーツ b プラットフォーム 溝:
表面
断面図a パーツ b プラットフォーム ポケット:
表面
斜視図a パーツ b プラットフォーム
カスタムプラットフォーム設計のガイドライン
穴:
穴加工は、円筒形の部品を供給して、直立状態にする場合に便利です。
穴を備えたプラットフォームの基本的な設計では、次の事項を考慮してください。- 一般的には、単純な構造にします。
- 穴の直径 (d’)は、プレートにおいて最も重要な寸法です。
穴の内側に部品をまっすぐ立てられるような、十分な大きさの直径が必要です。直径3.5mmまでの部品の場合、最大部品直径 (d)に0.05mmプラスします。ただし、直径が3.5mmを超える大きな部品や、円錐形の部品などの円筒形以外の部品の場合は、より直径を大きくする必要があります。 - 穴は、必要なときには、部品を壁に沿わせてガイドができるよう、十分な深さ (l’) になっている必要があります。
ワークが底に置かれている場合は、長いガイドは必要ありません。 - 部品ができるだけまっすぐになるように、パーツの高さ (L) の3分の1 (可能であれば2分の1) 以上のところで部品をガイドすることが望ましいです。
- また、プレート (L’) 上の部品の残余高さにも注意してください。
- 面取り (A) は、部品を穴に入れるために不可欠です。
ほとんどの場合、面取り角度は60°です。 - プラットフォームの質量は、標準の平面プラットフォームの質量と同じにします。質量が大きく変わると、共振周波数が変化し、フィーダーの動作に影響することがあります。この場合、フィーダー動作の周波数を調整することで対応できることがあります。
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 溝
溝設計済プラットフォームは、垂直に取りつける、ねじタイプの部品を供給するときに使用します。
溝を備えたプラットフォームの基本的な設計では、次の項目を考慮してください。一般的には、単純な構造にします。
貫通溝のないプラットフォームを使用すると、最長60mmの部品を供給できます。より長さのある部品の場合、溝はプレートの厚さを考慮して設計してください。
スロットの幅 (d’) は、コンポーネントの直径 (d) をもとに決めます。一般に、最大直径に0.05mm ~ 0.1mmプラスします (許容誤差を考慮する)。溝の幅の公差も考慮してください。これは、加工によって異なり、すべてのサイズのフィーダーで同じではありません。0/+の公差を推奨します。
ワークは底に置かれないため、溝の深さ (L’) は、ほとんどの場合あまり重要ではありません。したがって、パーツが傾いて底に触れないように、十分な大きさが必要です。公差には、通常、0/+の公差が適用されます。
長さ60mmまでの大型部品の場合、貫通溝は必要ありません。
60mmを超える部品の場合、貫通溝はプレートの厚さを考慮して設計してください。
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 - - 溝がプラットフォームの底部を貫通する場合、オペレータから直接LEDバックライトが見えないようにするためと、カメラにバックライトの光が直接入らないようにするため、“内部ディフューザー”が必要です。“内部ディフューザー”は、バックライトの上に配置します。
- プラットフォームの重量は、標準の平面プラットフォームの重量と同じにします。重量が大きく変わると、共振周波数が変化し、フィーダーの動作に影響することがあります。この場合は、フィーダー動作の周波数を調整することで対応できることがあります。
ポケット
ポケットを備えたプラットフォームの基本的な設計では、次の項目を考慮します。- パーツがロボットで簡単につかむことができるように、ポケットを設計します。理想的には、真空グリッパーによって拾うことができるように、パーツの平らな面が上になるようにします。
- パーツは、ポケットによって完全に整列 (位置決め)される必要はありません。ビジョン システムの目的は、2D 平面でパーツの座標と回転角を検出することです。プラットフォームの構造が単純であれば、プラットフォームを安価に製作できます。また、一般的には、単純なプラットフォーム設計のほうが良い結果となります。
これらは一般的なガイドラインにすぎません。 ケースバイケースで対応する必要があります。
プラットフォームの許容重量
プラットフォームの最大質量 **1 | 部品の最大質量 **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
IF-80/IF-240については、プラットフォームの最大質量 (部品を含まない) を示しています。
IF-380/IF-530については、フレームとプラットフォームの最大質量 (部品を含まない) を示しています。
**2
IF-80/IF-240については、部品の最大質量 (プラットフォームの最大質量に加える分) を示しています。
IF-380/IF-530については、部品の最大質量 (フレームとプラットフォームの最大質量に加える分) を示しています。
プラットフォームの選択
プラットフォームタイプの選択は、Epson RC+ 8.0メニュー - [ツール] - [パーツフィーディング] - [振動]で行います。
詳細は以下を参照してください。
振動
標準プラットフォーム(平面, 吸着防止, 転がり防止)を選択すると、システムにフィーダー振動を処理させるか、PF_Feederコールバック関数でフィーダー振動を処理するか選択できます。通常、システムでフィーダー振動を処理するのが最適です。
振動ページで “PF_Feeder callbackで振動制御” を選択すると、ユーザーはフィーダーの振動制御を独自に記述できます。システムは、推奨されるフィーダーの振動種類を、PF_Feederコールバックに “state”パラメーターとして提供します。 これについては、次の章で詳しく説明します。
カスタムプラットフォーム (溝, 穴, ポケット)を選択すると、ユーザーはPF_Feederコールバック関数を介してパーツの振動を処理する必要があります。 カスタムプラットフォームの場合、システムは推奨されるフィーダーの振動種類を判断しません。(プラットフォームの加工により、最適な振動種類が変わるため。)
カスタムプラットフォーム処理のプログラム例
穴付きカスタムプラットフォームで、ピンを縦方向に配置します。
表面
断面図
a | パーツ |
b | プラットフォーム |
ユーザーがビジョンを実行し、パーツ座標キューを再ロードする場合は、メニュー - [ツール] - [パーツフィーディング] - [パーツ] - [ビジョン]の[PF_Vision callbackでビジョン処理を行う]を選択します。この例では、システムはビジョンを処理します。
ロボットによるピック&プレースは、PF_Robotコールバック内で実行されます。プラットフォーム種類は、“穴”が選択されています。
これはカスタムプラットフォームであるため、“PF_Feeder callbackで振動制御”のみ選択可能です。 ピンの上部は、パーツ検出ビジョンシーケンスによって検出され、座標は自動的にパーツ 座標キューにロードされます。
この例では、裏パーツを見つけるビジョンオブジェクトはありません。
ビジョンがイメージを取得し、表パーツがパーツ 座標キューにロードされると、PF_Feederコールバック関数が呼び出されます。 ユーザーコードは、PF_Feederコールバック関数内でフィーダーを振動させる方法を判断し実行します。
表パーツの数は、引数 “NumFrontParts”としてPF_Feederコールバック関数に渡されます。この例では、引数 “NumFrontParts” が “0” より大きい場合、ロボットはパーツをピックプレース可能なため、フィーダー振動は必要ありません。この場合、PF_Feederコールバック関数の戻り値は “PF_CALLBACK_SUCCESS”にする必要があります。
この戻り値は、システムにPF_Robotコールバック関数を呼び出すように指示します。“NumFrontParts” が “0”と等しい場合、サンプル コードではパーツブローブシーケンスに対しVRunを実行し、パーツの固まりがあるかどうか、またはパーツがまったく存在しないかどうかを判断します。パーツブローブシーケンスでパーツが見つからない場合は、ホッパーがオンになってパーツがフィーダーに供給されます。 パーツブローブシーケンスによりパーツが見つかると、フィーダーは反転動作を行い、前方にシフトしてから、ピンが穴に落ちるように後方にシフトします。
フィーダーが振動するたびに、システムは新しいビジョン画像を再取得する必要があります。
このため、戻り値を “PF_CALLBACK_RESTART” に設定します。システムは、新しいイメージを再取得し、パーツキューをリロードしてから、もう一度PF_Feederコールバック関数を呼び出します。ユーザーコードは、さらにフィーダー動作が必要かどうかを判断します。
キーポイント
プラットフォームタイプが、穴, スロット, ポケットである場合、PF_Feederコールバック関数の"state"引数に、定数PF_FEEDER_UNKNOWNが渡されます。これは、カスタムプラットフォームの場合、システムは適切なフィーダー動作を決定できないためです。
詳細については、以下を参照してください。
プログラム例 5.2
Function PF_Feeder(PartID As Integer, NumFrontParts As Integer, NumBackParts As Integer, state As Integer) As Integer
' 穴付き構造化プラットフォームの例 state = PF_FEEDER_UNKNOWN
Integer PFControlReturnVal
Integer numFound
Select True
' Pick 可能なとき
Case NumFrontParts > 0
' Pick 可能なパーツがあるため PF_Robot をコールする
PF_Feeder = PF_CALLBACK_SUCCESS
' 表向きパーツはないが、裏向きパーツがあるとき
Case NumFrontParts = 0 And NumBackParts <> 0
' フリップ, 長軸シフト, 短軸シフト
PF_Flip PartID, 500
PF_Shift PartID, PF_SHIFT_FORWARD, 1000
PF_Shift PartID, PF_SHIFT_BACKWARD, 300
PF_Feeder = PF_CALLBACK_RESTART ' 再起動後、画像を再取得
' 表向き, 裏向きいずれのパーツも見つからないとき
' パーツが塊状になっているか、トレイ上に全くないかのいずれか
' Part Blog シーケンスから画像を再取得して判断する
Case NumFrontParts = 0 And NumBackParts = 0
PF_Backlight 1, On ' バックライト On
VRun PartBlob ' 画像の取得
PF_Backlight 1, Off ' バックライト Off
VGet PartBlob.Blob01.NumberFound, numFound ' Blog が見つかったか?
If numFound > 0 Then ' パーツの塊が見つかったとき
' フリップ, 長軸シフト, 短軸シフト
PF_Flip PartID, 500
PF_Shift PartID, PF_SHIFT_FORWARD, 1000
PF_Shift PartID, PF_SHIFT_BACKWARD, 300
Else ' パーツが見つからなかったとき
' パーツ供給用 Control コールバック関数をコールする
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
EndIf
PF_Feeder = PF_CALLBACK_RESTART ' 再起動後、画像を再取得
Send
Fend
PF_Feederコールバック関数を使用した標準平面プラットフォームの例
標準の平面プラットフォームが使用されています。通常、システムは平面プラットフォームの振動を最適に処理できます。
しかし、この例では、特殊な振動処理をする必要があると判断しました。プラットフォーム種類が“平面”, ”貼りつき防止”, または”転がり防止”の場合、システムはパーツを最も適切に振動させることができます。 システムの判断は、引数 “state”を通してPF_Feederコールバック関数に提供されます。“PartFeed.inc” ファイルには、いくつかの状態が定数として定義されています。
たとえば、定数“PF_FEEDER_PICKOK”は、パーツがロボットによってピックスレース可能であることを意味します。 別の例として、システムがパーツを反転するのが最善の動作であると判断したときに、定数 “PF_FEEDER_FLIP” がPF_Feeder コールバック関数に渡されます。PF_Feederコールバック関数の引数 “state”と、フィーダー制御コマンドを使用して、システム処理に代わる独自の処理を作成できます。
次のサンプルは、引数 “state”を使用して、推奨される操作を実行する方法の基本的な概念を示しています。 この例は、すべてを包含したものではありません。
より完全な例については、以下を参照してください。
プログラム例 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 ' Pick 可能なパーツがあるので、
' PF_Robot をコールする
Case PF_FEEDER_SUPPLY
' ホッパーから供給
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
PF_CenterByShift PartID ' ホッパーからの供給後、パーツをセンタリング
PF_Feeder = PF_CALLBACK_RESTART ' 再起動後、画像を再取得
Case PF_FEEDER_FLIP
PF_Flip PartID
PF_Feeder = PF_CALLBACK_RESTART ' 再起動後、画像を再取得
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 ' 再起動後、画像を再取得
Case PF_FEEDER_HOPPER_EMPTY
' ユーザーに、ホッパーが空であることを知らせる
PFStatusReturnVal = PF_Status(PartID, PF_STATUS_NOPART)
' ホッパーからパーツ供給
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
PF_Center PartID, PF_CENTER_LONG_AXIS
' センタリング, フリップ, パーツ分離
PF_Center PartID, PF_CENTER_SHORT_AXIS
PF_Flip PartID
PF_Feeder = PF_CALLBACK_RESTART ' 再起動後、画像を再取得
Case PF_FEEDER_WRONGPART
If PF_Info(PartID, PF_INFO_ID_OBJECT_PURGE_ENABLED) Then
' パージが有効の場合、Vision フィードバックを使用してパージする
' 各パージ試行は、1500ms 継続する
' プラットフォームに残せるパーツは、0個
' 再試行は、5回行う
PFPurgeStatus = PF_Purge(1, 2, 1500, 3, 5)
If PFPurgeStatus = False Then
Print "Purge was not successful"
Quit All
EndIf
Else ' ユーザーに、誤ったパーツがフィーダー上にあるかもしれないことを知らせる
Print "Wrong part may be on the feeder"
Quit All
EndIf
Send
Fend