PF_Status
コールバック関数の戻り値、およびシステムのステータス(パーツが供給されないなど)に応じた処理 (主にエラー処理)を記述します。
書式
Function PF_Status(パーツID As Integer, Status As Integer) As Integer
' (エラー処理)
Fend
パラメーター
- パーツID
パーツID(整数値1~32)が入ります。
マルチパーツ動作時は、アクティブパーツが入ります。 - Status
ステータスが入ります。
コールバック関数の戻り値またはシステムが設定した値です (参照: 解説)。
戻り値
戻り値を指定しないと、PF_EXITを指定したことになり、Part Feedingプロセスが終了してしまうため、必ず戻り値を設定してください。
PF_CONTINUE
Part Feedingプロセスを継続します。通常はこの値を指定してください。PF_EXIT
Part Feedingプロセスを終了します。この値を指定すると、Part Feedingプロセスは直ちに終了します。この値を指定する場合、必要に応じて、装置を初期状態に戻す処理 (ロボットの原点復帰、モーターのOffなど)を記述します。PF_RESTART
Part Feedingプロセスをリセットしビジョンから再開します。PF_RESTART_ACTIVEPART
Part Feedingプロセスをリセットし、ビジョンから再開します。アクティブパーツのキューのみを再生成します。
解説
この関数は、他のコールバック関数 (PF_CycleStop関数、およびPF_Status関数を除く)に続いて実行されます。
引数Statusには、直前に実行したコールバック関数の戻り値、またはPart Feedingプロセス内部で発生したエラーがセットされます。それらの値に応じた処理を記述します。
PF_CALLBACK_SUCCESS
コールバック関数が正常に終了しました。通常は、何も処理しません。PF_CALLBACK_RESTART
PF_Robot コールバック関数が正常に終了し、戻り値は PF_CALLBACK_RESTART でした。通常は、何も処理しません。PF_CALLBACK_RESTART_ACTIVEPART
PF_Robotコールバック関数が正常の終了し、戻り値がPF_CALLBACK_RESTART_ACTIVEPARTでした。通常は何も処理しません。PF_STATUS_NOPART
ホッパーからパーツが供給されない状態です。ホッパーにパーツを供給する操作を記述します。PF_STATUS_TOOMANYPART
ホッパーからパーツが過剰に供給され、パーツのピックができない状態です。オペレーターコールなどにより、ホッパー上のパーツを取りのぞく操作を記述します。この状態が頻繁に発生する場合、ホッパーの設定を見直してください。PF_STATUS_BAD_ID
PF_Startコマンド実行時に指定されたパーツIDが不正です。登録済のパーツIDを正しく指定しているか確認してください。マルチパーツ動作時に、複数のフィーダーで開始しようとしました。各パーツの設定を見直してください。Part Feedingプロセスは直ちに終了します。PF_STATUS_BAD_PARAMETER
PF_Startコマンド実行時に指定されたパーツのパラメーターが不正です。Part Feedingプロセスは直ちに終了します。PF_STATUS_CAL_NOT_COMPLETE
PF_Startコマンド実行時に指定されたパーツのキャリブレーションが完了していません。Part Feedingプロセスは直ちに終了します。
フィーダーキャリブレーションの実行方法は以下を参照してください。
キャリブレーションPF_STATUS_WRONGPART
フィーダー上のパーツを検出できませんでした。パーツビジョンシーケンスがパーツを正しく検出できることを確認してください。または、別種類のパーツや、破損したパーツが入っていないか確認してください。
このステータス値は、ビジョンによるパーツの検出が複数回試行され、パーツブローブビジョンシーケンスがピック領域内に何かがあることを検出しているものの、パーツ検出ビジョンシーケンスが表パーツまたは裏パーツとして識別できない場合に発生します。PF_STATUS_PARTBLOB_ERROR
パーツブロブ検出のためのビジョンシーケンスまたはオブジェクトが無効です。Part Feedingプロセスは直ちに終了します。パーツに使用されているパーツブロブシーケンスとオブジェクトを確認してください。PF_STATUS_PARTSEQ_ERROR
パーツ検出のためのビジョンシーケンスまたはオブジェクトが無効です。Part Feedingプロセスは直ちに終了します。パーツに使用されているパーツシーケンスとオブジェクトを確認してください。PF_STATUS_ERROR
PF_Startコマンド実行中にエラー (システムエラー)が発生しました。Part Feedingプロセスは直ちに終了します。「ビジョン」で指定したビジョンシーケンスが正しく動作するか確認してください。各コールバック関数の動作が正しいか、コールバック関数を単独で実行してデバッグしてください。また、フィーダーを2台以上のロボットと共有しようとすると、エラー7730 “フィーダー1 台あたりのロボット数が最大値を超えています。”が発生します。
Status コールバック関数の戻り値で、動作プロセスの処理を指定できます。
戻り値を指定しないと、PF_EXIT を指定したことになり、Part Feeding プロセスが終了してしまうため、必ず戻り値を設定してください。PF_STATUS_FEEDERINUSE_ERROR
同じのフィーダーに対してPart Feedingプロセスが複数回起動されました。Part Feedingプロセスは直ちに終了します。(すでに起動しているPart Feedingプロセスは継続します。) プログラムを見直してください。PF_STATUS_PARTNOTENABLED
パーツが無効になっています。
Epson RC+ 8.0メニュー - [ツール] - [パーツフィーディング] - [パーツ] - [パーツ**] - [全般]で、[有効]チェックボックスがチェックされていることを確認してください。PF_STATUS_PURGENOTENABLED
パージが無効になっていますが、PF_Purge関数が実行されました。
Epson RC+ 8.0メニュー - [ツール] - [パーツフィーディング] - [パーツ] - [パーツ**] - [全般]で、[有効]チェックボックスがチェックされていることを確認してください。
注意
PF_Status関数内では、新しいエラーが発生しないようにプログラムを記述してください。PF_Status関数が再帰的に実行され、エラー処理が終了しなくなる可能性があります。
フィーダー制御コマンド(PF_Center、PF_CenterByShift、PF_Flip、PF_Shift)をPF_Status関数内に記述することは推奨されません。
PF_Statusは、直前に実行されたコールバック関数の完了後に、システムが続行する方法(つまり、PF_Robot, PF_Vision, PF_Control, PF_MobileCam, PF_Feederの後に続行する方法)を指示する役割を持ちます。これは、PF_Statusの戻り値を、PF_CONTINUE, PF_RESTART, PF_RESTART_ACTIVEPART, またはPF_EXITのいずれかの戻り値に設定することによって実現されます。詳細については、次のプログラム例を参照してください。
プログラム例
次のプログラムは、エラー処理を記述します。
ユーザーエラーは、Robotコールバック関数のプログラム例で示した吸着タイムアウトです。
このエラーが発生したら、ロボットのモーターをOffします。
' ** User Error **
' 8001 吸着タイムアウト発生
Function PF_Status(PartID As Integer, Status As Integer) As Integer
Select Status
Case PF_CALLBACK_SUCCESS
' 成功 (通常は何もしない)
Case PF_CALLBACK_RESTART
' ビジョンから再開
PF_Status = PF_RESTART
Exit Function
Case PF_CALLBACK_RESTART_ACTIVEPART
' ビジョンから再開 -
' アクティブパーツの座標キュー生成と画像取得のみ
PF_Status = PF_RESTART_ACTIVEPART
Exit Function
Case PF_STATUS_NOPART
' ホッパー上にパーツがない
MsgBox "Hopper empty."
Case PF_STATUS_TOOMANYPART
' フィーダー上のパーツが多すぎる
MsgBox "Too many parts on Feeder."
Case PF_STATUS_BAD_ID
' 指定されたパーツIDが存在しない
MsgBox "Bad PartID."
Case PF_STATUS_BAD_PARAMETER
' パーツのパラメーターが不正
MsgBox "Bad parameter."
Case PF_STATUS_CAL_NOT_COMPLETE
' キャリブレーションが完了していない
MsgBox "Calibration incomplete."
Case PF_STATUS_WRONGPART
' フィーダープラットフォームのパーツが間違っている可能性
MsgBox "Wrong Part."
Case PF_STATUS_ERROR
' エラー
MsgBox "Error!! (code: " + Str$(Err) + " ) " + ErrMsg$(Err)
Case PF_STATUS_PARTBLOB_ERROR
' パーツブローブビジョンシーケンスのエラー
MsgBox "Part Blob vision error."
Case PF_STATUS_PARTSEQ_ERROR
' パーツ検出ビジョンシーケンスのエラー
MsgBox "Part Sequence vision error."
Case PF_STATUS_FEEDERINUSE_ERROR
' フィーダーが使用中
MsgBox "Feeder is already in use."
Case PF_STATUS_PARTNOTENABLED
' パーツが無効
MsgBox "Part is disabled."
Case PF_STATUS_PURGENOTENABLED
' パージが無効
MsgBox "Purge is disabled."
Case 8001
' 例: 吸着タイムアウト
MsgBox " Vacuum Error!!"
Motor Off
PF_Status = PF_EXIT
Exit Function
Send
PF_Status = PF_CONTINUE
Fend