機器人1台 - 多種零件

程式範例 2.1

範例類型:
機器人1台與多種零件 - 機器人動作的視覺與振動平行處理

配置

  • 機器人數量:1
  • 送料器數量:1
  • 送料器上的零件種類數:2
  • 放置位置數量:1
  • 攝影機的朝向:朝下固定的攝影機

描述
有2種零件(實體不同)。機器人連續取放2個零件#1,然後取放1個零件#2。通過交替執行「PF_ActivePart」來實現這樣的動作。在此應用中,拾取順序很重要(例如:零件組裝的情況)。當最後一個零件放置後,「PF_ActivePart」會被更改,以供應所需的零件,並向系統發送振動信號,必要時取得影像。這在機器人動作(在移動到「放置」位置的路徑達到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