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