1台机器人 - 多部件

程序示例 2.1

示例类型:
通过1台机器人与多部件-机器人运作,进行视觉系统与振动的并行处理

构成

  • 机器人数量:1
  • 送料器数量:1
  • 送料器上的部件类型数量:2
  • 配置位置数量:1
  • 相机的方向:固定向下相机

描述
包括2种部件(物理方面存在差异)。机器人连续拾取&放置2个部件#1,然后拾取&放置1个部件#2。这是通过交互执行“PF_ActivePart”来实现的。在该应用中,拾取顺序非常重要(例:装入部件时)。如果配置好最后的部件,“PF_ActivePart”则会被更改,供给预期的部件,并向系统发送振动信号,最后根据需要获取图像。这是通过并行进行机器人运作(达到“place”前的移动路径的30%位置时)来实现的。

样本代码
Main.prg

Function Main
    Integer numToPick1, numToPick2, i

    Robot 1
    Motor On
    Power High
    Speed 50
    Accel 50, 50
    Jump Park

    MemOff PartsToPick1
    MemOff PartsToPick2
    numToPick1 = 2
    numToPick2 = 1

    PF_Start 1, 2

    Do
        i = 0
        Do
            Wait MemSw(PartsToPick1) = On
            P0 = PF_QueGet(1)
            PF_QueRemove (1)
            Jump P0 /R
            On Gripper
            Wait 0.25
            i = i + 1
            If i < numToPick1 And PF_QueLen(1) > 0 Then
                Jump Place
            Else
                'Last part or no more parts available to pick
                If i = numToPick1 Then
                    PF_ActivePart 2
                EndIf
                Jump Place ! D30; MemOff PartsToPick1 !
            EndIf
            Off Gripper
            Wait 0.25
        Loop Until i = numToPick1
        i = 0
        Do
            Wait MemSw(PartsToPick2) = On
            P0 = PF_QueGet(2)
            PF_QueRemove (2)
            Jump P0 /R
            On Gripper
            Wait 0.25
            i = i + 1
            If i < numToPick2 And PF_QueLen(2) > 0 Then
                Jump Place
            Else
                'Last part or no more parts available to pick
                If i = numToPick2 Then
                    PF_ActivePart 1
                EndIf
                Jump Place ! D30; MemOff PartsToPick2 !
            EndIf
            Off Gripper
            Wait 0.25
        Loop Until i = numToPick2
    Loop
Fend

PartFeeding.prg

Function PF_Robot(PartID As Integer) As Integer
    Select PartID
        Case 1
            MemOn PartsToPick1
            Wait MemSw(PartsToPick1) = Off
        Case 2
            MemOn PartsToPick2
            Wait MemSw(PartsToPick2) = Off
    Send
    PF_Robot = PF_CALLBACK_SUCCESS
Fend