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