PF_Robot
记述机器人从送料器中获取部件,然后放到指定位置的运作。
请务必记述该函数的内容。
格式
Function PF_Robot(部件ID As Integer) As Integer
' 机器人的运作
Fend
参数
- 部件ID
输入部件ID(整数值1~32)。
在多部件运作时有效部件进入。
返回值
要在PF_Robot函数结束后控制Part Feeding进程时,请指定下述值。(由PartFeeding.inc定义各常数。)
PF_CALLBACK_SUCCESS
通常指定该值。部件坐标队列中未残留数据时(多部件运作或没有有效部件的数据时),会继续进行Part Feeding处理。
队列中残留数据时(多部件运作或有有效部件的数据时),会重启PF_Robot回调函数,而非更改部件坐标队列的内容。PF_CALLBACK_RESTART
不论坐标队列中是否残留有数据,都继续执行Part Feeding进程,重新生成坐标队列。这适用于每次拾取都进行拍摄,以便高精度地拾取部件的情况。PF_CALLBACK_RESTART_ACTIVEPART
不论坐标队列中是否残留有数据,都继续执行Part Feeding进程,并且仅生成有效部件的坐标队列。不更改有效部件以外的坐标队列。这适用于希望省略有效部件以外的视觉处理并进行高速化的情况。用户定义错误编号 (8000 - 8999)
要启动PF_Status回调函数进行错误处理时设定。已设定的值会被作为PF_Status回调函数的自变量交接。
描述
本函数用于记述以下处理。
- 从坐标队列中获取部件坐标(使用PF_QueGet函数)
- 将机器人移至送料器上的部件坐标位置
- 操作末端夹具等抓取部件
- 将机器人移至部件配置坐标
- 操作末端夹具等释放部件
- 删除1个坐标队列(使用PF_QueRemove命令)
一般来说,会通过循环处理执行1~6,对坐标队列内的所有数据进行处理。坐标队列中包括通过此前视觉运作检测的部件坐标列表。坐标为本地坐标。多部件运作时,按部件ID生成坐标队列。
启动本函数时选择的机器人是由部件的Robot#指定的机器人。要多机器人使用时,根据需要使用Robot语句切换机器人。
有关详细信息,请参阅以下手册。
“Epson RC+ 8.0 SPEL+语言参考 - Robot”
注意
- 建议通过参数获取部件ID。
- 在多机器人环境下要更改选择的机器人编号时,请注意不要更改为错误的机器人编号。
程序示例
下述程序是使用单纯的真空末端夹具处理所有部件的示例。
拾取部件时,通过真空传感器监视吸附状态。
不能吸附时,进行最多3次重试。即使这样仍不吸附时,会作为返回值返回用户错误代码8001。
' ** IO Label (Output) **
' O_Adsorb 吸附
' O_Desorb 脱离
'
' ** IO Label (Input) **
' I_Adsorbed 吸附传感器
'
' ** Point **
' PlacePos 部件的放置位置
'
' ** User Error **
' 8001 发生吸附超时
'
Function PF_Robot(partID As Integer) As Integer
Byte retry
‘ 处理所有坐标队列或没有停止请求期间进行循环
Do While PF_QueLen(partID) > 0 And PF_IsStopRequested(partID) = False
'将机器人移至拾取位置
Jump PF_QueGet(partID)
‘ 真空ON & 吸附确认(3次重试)
On O_Adsorb
retry = 3
Do While retry > 0
Wait Sw(I_Adsorbed) = On, 0.5
If TW = True Then
‘ 如果超时,则将吸附设为OFF,然后再次设为ON
Off O_Adsorb
Wait 0.1
On O_Adsorb
EndIf
Loop
If TW = True Then
‘ 即使重试也不能吸附,因错误而结束
' 由Status回调函数进行错误处理
PF_Robot = 8001
Exit Function
EndIf
'将机器人移至放置位置
Jump PlacePos
‘ 真空OFF & 真空破坏
Off O_Adsorb
On O_Desorb
Wait 0.1
Off O_Desorb
' 从坐标队列中删除1个数据
PF_QueRemove partID
Loop
PF_Robot = PF_CALLBACK_SUCCESS
Fend
← 通用事项 PF_Control →