コンベヤートラッキング動作 (センサートラッキング)

次に、センサーを利用したコンベヤートラッキング動作を作成してみましょう。

センサーで検出されたオブジェクト上を流れるワーク (パーツ)を、ロボットが Pick & Place で、テーブルに移動させます。

手順概要

  1. 仮想コントローラーを作成して、ロボットを設定する
  2. プロジェクトを作成する
  3. ワーク (パーツ)に相当するオブジェクトを追加する
  4. テーブルに相当するオブジェクトを追加・設定する
  5. コンベヤーオブジェクトを追加・設定する
  6. コンベヤーオブジェクトの供給設定・確認を実施する
  7. 検出領域オブジェクトを追加・設定する

ここまでは、以下で述べた手順と同じになります。

コンベヤー単体動作

以降は、トラッキング動作のための手順です。

  1. コンベヤートラッキングの設定を追加する
  2. コンベヤーキャリブレーションを実施・設定する
  3. プログラムを作成・実行する

手順詳細

  1. 準備

    手順概要の手順5 までは、以下で述べた手順と同じとなるため、割愛します。

    コンベヤー単体動作

    異なる点について説明します。

    1. センサーに相当する検出領域オブジェクト "DetectionArea_1" を追加して、次のように設定します。

      • 位置設定 (Position X, Y, Z) : 400, -300, 125
      • 姿勢設定 (Rotation Z) : 90

    2. コンベヤートラッキングの設定をします。次のように設定します。

      1. Epson RC+ 8.0 メニュー - [セットアップ] - [システム設定] の [コントローラー] - [コンベヤーエンコーダー]において、エンコーダーが追加されていることを確認します。

      2. Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]において、コンベヤートラッキングの設定を追加します。

      3. [タイプ]には[センサー]を選択します。

      4. コンベヤーオブジェクトを、次のように設定します。

        • "Operation"プロパティーを"LinkTracking"にします
        • "Conveyor ID"プロパティーを"1"にします

    3. コンベヤーキャリブレーションを実施します。
      シミュレーター上でのコンベヤーキャリブレーションについては、以下を参照してください。

      ロボットオブジェクト - "コンベヤーキャリブレーション"

      以下の手順で簡易キャリブレーションを行います。

      1. レイアウトツリーにおいて、ロボットノードの下の "Conveyor Tracking" ノードを展開します。

      2. "Conveyor 1" を右クリックして、[シミュレーターでキャリブレーション]をクリックします。

      3. "Conveyor Origin", "Upstream Limit", "Downstream Limit" プロパティーそれぞれの、"Visible" プロパティーを "True" にします。

      4. コンベヤー原点, 上流限, 下流限の表示を確認します。

    4. 2重登録防止設定をします。
      Epson RC+ 8.0 メニュー - [ツール] - [コンベヤートラッキング]を開いて、ワークの2重登録を防止する距離を、"200mm"に設定します。

    5. トリガー設定を行います。

      • 検出領域オブジェクトにおいて、以下を設定します。

        • センサー設定 (Sensor - IO Type) : Output
        • センサー設定 (Sensor - IO Number) : 10
        • センサー設定 (Sendor – Duration) : 0.30

      • コンベヤーオブジェクトにおいて、以下を設定します。

        • トリガーIO設定 (Operation - Trigger IO) : 10
          検出領域オブジェクトのIO Numberに設定した値と同じ "10" を設定します。

  2. プログラム作成

    以下のプログラムを、Main.prg として作成します。

    Function main
        SimSet Conveyor_1.ClearSupply
    
        Motor On
        Power High
        Speed 100
        Accel 100, 100
    
        Cnv_Mode 1, 1
        Cnv_Accel 1, 2000
        Cnv_QueRemove 1, All
    
        Integer i
        String name$
    
        Xqt SensorDetection
    
        TmReset 0
        SimSet Conveyor_1.Start
    
        For i = 1 To 10
            Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
    
            Jump Cnv_QueGet(1, 0) +Z(51)
    
            SimGet robot1.NearestObjToTool(0), name$
            SimSet robot1.Pick, name$
    
            Jump Here :X(550) :Y(i * 60 - 320)
    
            SimSet robot1.Place, name$, Table
    
            Cnv_QueRemove 1, 0
        Next
    
        SimSet Conveyor_1.Stop
        Quit SensorDetection
    
        Print "Finished, ", Tmr(0), "[s]"
    Fend
    
    Function SensorDetection
        Double LPulse
        Cnv_QueRemove 1, All
        LPulse = Cnv_LPulse(1)
    
        Do
            If LPulse <> Cnv_LPulse(1) Then
                Cnv_QueAdd 1, Cnv_Point(1, -20, 0)
                LPulse = Cnv_LPulse(1)
            EndIf
        Loop
    Fend
    
    
  3. プログラム実行

    1. ツールバーの[Runウィンドウ]ボタンをクリックし、Runウィンドウを表示します。

    2. Runウィンドウにおいて、ファンクション "main" を選択して、[開始]ボタンをクリックします。

    3. コンベヤー単体の動作と異なり、コンベヤーが停止することなく、ワーク (パーツ)が、ロボットによって Pick & Place される様子を確認してください。