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
    无法检测到送料器上的部件。请确认可正确检测部件视觉序列。另外,请确认是否进入其他类型的部件或损坏的部件。
    多次尝试通过视觉系统检测部件,虽然部件Blob视觉序列检测到拾取区域内有几个部件,但部件检测视觉序列无法识别表面部件或背面部件时,会产生该状态值。

  • PF_STATUS_PARTBLOB_ERROR
    用于部件Blob检测的视觉序列或对象无效。Part Feeding进程会立即结束。请确认用于部件的部件Blob序列与对象。

  • 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_Status函数内记述送料器控制命令 (PF_Center、PF_CenterByShift、PF_Flip、PF_Shift)。

  • 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
            ' 部件Blob视觉序列错误
            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