プログラミングの概要

Part Feedingのプログラミングの概要を説明します。詳細は、本章以降に説明します。
ほとんどのアプリケーションにおいて、フィーダーの動作は自動的にシステムで行われます。さらに、基本的なSPELプログラムは自動的に生成されます。生成されたコールバック関数と呼ばれるSPEL関数で成り立っています。
コールバック関数は、実行時にシステムが呼び出します。次の条件のときに呼び出されます。

PF_Robot関数 フィーダー上にピックアップできるパーツがあるとき
PF_Status関数 状態が変わったとき
PF_Vision関数 PF_Vision callbackでビジョン処理を行うとき
PF_Feeder関数 独自のフィーダー制御を行うとき
PF_Control関数 ホッパーやフロントライトなどを制御するとき
PF_MobileCam関数 モバイルカメラを使用していてパーツ検出のためにフィーダー上空にカメラを移動するとき
PF_CycleStop関数 Part Feedingの動作を止めるとき

特定の要件を処理するために、コールバック関数の変更が必要になります。
ほとんどのアプリケーションでは、PF_Robot と PF_Status コールバック関数を使う必要があります。
各コールバック関数の概要を以下に示します。

PF_Robot コールバック関数
フィーダー動作とビジョン処理が完了し、パーツをピックアップ可能と判断されると自動的にPF_Robotコールバック関数が実行されます。パーツのピックアンドプレス動作を実現するコードを記述します。単純なアプリケーションでは、ロボットのピックアンドプレスの動作とグリッパー(パーツを把持する機構)の動作を実現する数行のコードを記述します。PF_Robotコールバック関数が終了するとPF_Statusコールバック関数が実行されます。

PF_Statusコールバック関数
PF_Statusコールバック関数は、各コールバック関数が完了すると自動的に実行されます。 PF_Statusは、各コールバックの戻り値に基づき、続行する方法をシステムに指示します。または、PF_Statusは、エラー状態が発生したことをオペレーターに通知します。エラーはロボットの過負荷トルクエラーのようなシステムレベルのエラーや、ホッパーからの給材が少なすぎる、または多すぎるといったPart Feedingのエラーなどです。PF_Robotコールバック関数では、発生したエラーにどのように対応するか記述します。単純なアプリケーションではPF_Statusコールバック関数のコードを変更する必要はありません。

より複雑なアプリケーションでは、ビジョン処理をお客様が記述する必要があるかもしれません。この場合、PV_Visionコールバック関数を使う必要があります。ここでPF_Visionコールバック関数の概要を示します。

PF_Vision コールバック関数
システムが用意したビジョン処理ではなく、お客様がパーツフィーダーのビジョン処理を行う場合、PF_Visionコールバック関数に必要な処理を記述します。カメラから画像を撮り込んだり、パーツを検出するシーケンスを動かしたり、結果を取得したり、結果をパーツ座標キューに追加する必要があります。簡単なアプリケーションでは、システムがビジョン処理を行うため、PF_Visionコールバック関数を記述する必要がありません。
詳細は、以下を参照してください。
PF_Vision

ごくまれに、内蔵のバックライトではなく、お客様が用意した照明を使用する必要があります。PF_Controlコールバック関数は、お客様が用意した照明を制御するために用います。お客様が用意したホッパーの制御も、PF_Controlコールバック関数で行います。また弊社のオプションホッパーの制御もPF_Controlコールバック関数で行います。ここでPF_Controlコールバック関数の概要を示します。

PF_Control コールバック関数
システムがホッパーからの給材が必要であると判断したとき、システムがライトのON/OFFが必要と判断したとき、自動的にPF_Controlコールバック関数が実行されます。エプソンのオプションホッパーを使っているときは、PF_Controlコールバック関数でコメントアウトされているPF_OutputONOFFコマンドを非コメント化する必要があります。

PF_MobileCam コールバック関数
フィーダー上空に設置された下向カメラではなく、ロボットに設置されたモバイルカメラのある場合、自動的にPF_MobileCamコールバック関数が実行されます。PF_MobileCamコールバック関数に、ロボットがフィーダー上空にカメラを移動するコードを記述します。そして、パーツが検出されPart Feedingキューにパーツのデータが追加された後、ロボットをフィーダー上空から待避する動作も記述します。下向き固定カメラを使用する場合は、PF_MobileCamコールバック関数を記述する必要はありません。

PF_CycleStopコールバック関数
PF_Stopが実行されると、PF_CycleStopコールバック関数は自動的に実行されます。このPF_CycleStopコールバック関数は、ロボットを安全な位置に待避させたり、出力をONまたはOFFしたりするような終了処理を記述するのに用います。簡単なアプリケーションでは、PF_CycleStopコールバック関数を記述する必要はありません。

PF_Feeder コールバック関数
お客様の装置やパーツが、自動フィーダー制御ではうまく処理できない場合に、フィーダー動作を、PF_Feederコールバック関数内に、PF_Flipコマンドや、PF_Shiftコマンドなどを使用して、SPELコードで記述することができます。一般的には、PF_Feederコールバック関数を記述する必要はありません。

すべてのコールバック関数では、戻り値を設定する必要があります。関数から値を返すには、関数の名前に値を割り当てます(たとえば、PF_Robot = PF_CALLBACK_SUCCESS、ここでPF_CALLBACK_SUCCESSは、値0が定義された定数)。正常終了の場合は、PF_CALLBACK SUCCESSを戻り値とします。PF_Statusは、コールバック関数のいずれかが完了した後、またはエラーが発生した後に続行する方法をシステムに指示します。システムは、実行したいこと(続行、終了、再起動など)を認識する必要があります。たとえば、戻り値を定数PF_EXITに設定して、終了することができます。簡単なアプリケーションでは、自動的に生成されるコールバック関数の戻り値をそのまま使うことができます。
詳細は、以下を参照してください。
Part Feeding コールバック関数
次のページは、ピック&プレースを行うプログラムの全体図です。