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