PF_Feeder
客户要使用送料器控制命令(PF_CenterByShift、PF_Center、PF_Flip、PF_Shift的各命令)记述送料器控制运作时使用。
格式
Function PF_Feeder(部件ID As Integer, 表面部件数 As Integer, 背面部件数, 状态 As Integer)As Integer
'(部件状态判定)
'(送料器运作)
Fend
参数
- 部件ID
输入部件ID(整数值1~32)。
在多部件运作时有效部件进入。 - 表面部件数
输入通过视觉系统检测并进入部件坐标队列的表面部件数。 - 背面部件数
输入通过视觉系统检测的后向部件数。 - 状态
表示通过系统检测的状态或由系统确定的推荐运作。
输入下表所述的1个值。状态/推荐运作 常数(由PartFeeding.inc定义) 备注 可取放 PF_FEEDER_PICKOK 可取放部件。 可添加供给部件 PF_FEEDER_SUPPLY 部件供给方法为[拾取&放置期间供给部件]时,可通过料斗添加供给部件。 有关详细信息,请参阅以下内容。
需要翻转运作 PF_FEEDER_FLIP 推荐翻转运作(分散部件或更改姿势)。 移动至拾取区域 PF_FEEDER_SHIFT 推荐移动运作(将部件移动至拾取区域)。 定芯与翻转 PF_FEEDER_CENTER_FLIP 推荐定芯与翻转运作。 料斗变空 PF_FEEDER_HOPPER_EMPTY 料斗内没有部件。通过操作员调用等向料斗供给部件。 后移至拾取区域 PF_FEEDER_SHIFT_BACKWARDS 推荐后移运作(将滞留在平台边角的部件返回至拾取区域)。 通过料斗进给并进行定芯与分离 PF_FEEDER_SUPPLY_CENTER_FLIP 需要通过料斗供给部件,推荐进行部件定芯与分离运作。 部件过多 PF_FEEDER_TOO_MANY 平台上的部件数量过多。通过操作员调用等除去平台上的部件。 混入其他类型部件 PF_FEEDER_WRONGPART 可能是混入了错误类型的部件。通过操作员调用等进行恢复。 不能判定 PF_FEEDER_UNKNOWN 系统无法对设置长槽或孔的平台判断最佳振动。
请参阅以下内容。
返回值
根据PF_Feeder结束后要让系统执行的进程,指定以下值。
| 常数(由PartFeeding.inc定义) | Part Feeding进程的运作 |
|---|---|
| PF_CALLBACK_SUCCESS | 判断为可拾取部件且无必要进行更多送料器运作时指定。系统调用PF_Robot回调函数。注意:不重新生成部件坐标队列。如果在临时进行送料器运作之后恢复该值,送料器上的部件坐标与部件坐标队列的数据则会产生偏差。 |
| PF_CALLBACK_RESTART | 在进行送料器运作之后指定。系统重新生成所有的部件坐标队列,并再次调用PF_Feeder回调函数。 |
| PF_CALLBACK_RESTART_ACTIVEPART | 在进行送料器运作之后指定。系统重新生成仅限于有效部件的部件坐标队列,并再次调用PF_Feeder回调函数。 |
描述
用户可利用该函数处理独自的送料器运作。通常,系统会判断送料器振动并执行处理。如果选择[上料] - [部件] - [振动]中的“通过PF_Feeder回调函数控制振动”,系统则会按指定的时序执行PF_Feeder回调函数。可使用PF_Feeder回调函数解决难以适用Part Feeding进程的应用。
例:Part Feeding进程无法判断适合于自定义平台(客户实施孔、长槽等加工的特殊平台)的处理。取而代之,客户可在PF_Feeder回调函数中记述独自的送料器处理。
可利用自变量“表面部件数”与“背面部件数”,判断可否切换为拾取运作或确定适当的振动运作。比如,表面部件数>0时可拾取部件,可判断为不需要更大程度的送料器振动。
自变量“状态”表示推荐的运作或装置状态。这有助于确定送料器的运作类型或条件。
返回值需要返回上表所述的某个值。返回值表示要让系统执行的进程。
程序示例1:
下例所述为利用自变量“状态”按条件,执行送料器振动运作的方法。
Function PF_Feeder(PartID As Integer, NumFrontParts As Integer, NumBackParts As Integer, state As Integer) As Integer
Select state
Case PF_FEEDER_PICKOK
' Call PF_Robot because there are parts ready to pick
PF_Feeder = PF_CALLBACK_SUCCESS
Case PF_FEEDER_SUPPLY
' Need to supply more parts
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
' Shift forward and then Flip
PF_Shift PartID, PF_SHIFT_FORWARD, 500
PF_Flip PartID
' Restart and re-acquire images
PF_Feeder = PF_CALLBACK_RESTART
Case PF_FEEDER_FLIP
' Flip the parts
PF_Flip PartID
' Restart and re-acquire images
PF_Feeder = PF_CALLBACK_RESTART
Case PF_FEEDER_CENTER_FLIP
' Center, Flip and Separate the parts
PF_Center PartID, PF_CENTER_LONG_AXIS, 900
PF_Center PartID, PF_CENTER_SHORT_AXIS
PF_Flip PartID
' Restart and re-acquire images
PF_Feeder = PF_CALLBACK_RESTART
Case PF_FEEDER_TOO_MANY
' Notify operator that there are too many parts on the feeder
PFStatusReturnVal = PF_Status(PartID, PF_STATUS_TOOMANYPART)
' Restart and re-acquire images
PF_Feeder = PF_CALLBACK_RESTART
Send
Fend
程序示例2:
下例所述为利用自变量“表面部件数”与“背面部件数”,执行送料器振动运作的方法。
Function PF_Feeder(PartID As Integer, NumFrontParts As Integer, NumBackParts As Integer, state As Integer) As Integer
Integer PFControlReturnVal
Select True
Case NumFrontParts = 0 And NumBackParts <> 0
PF_CenterByShift PartID
PF_Flip PartID
' Restart and re-acquire images
PF_Feeder = PF_CALLBACK_RESTART
Case NumFrontParts = 0 And NumBackParts = 0
PFControlReturnVal = PF_Control(PartID, PF_CONTROL_SUPPLY_FIRST)
' Center, Flip and Separate
PF_Center 1, PF_CENTER_LONG_AXIS, 900
PF_Center 1, PF_CENTER_SHORT_AXIS, 700
PF_Flip 1, 600
PF_Feeder = PF_CALLBACK_RESTART 're-acquire images
Default
' Call PF_Robot because there are parts ready to pick
PF_Feeder = PF_CALLBACK_SUCCESS
Send
Fend