精度優先モード 追従遅れ取得

コンベヤートラッキングの精度優先モードでは、ロボットの追従遅れを取得し、補正することで精度良くワークに追従させることができます。

追従遅れを取得するために、以下に示す追従遅れ取得動作を事前に実施することを推奨します。取得動作による補正値を設定しない場合、精度やタクトタイムを悪化させる場合があります。

追従遅れ取得動作

追従遅れ取得動作は、下図のようにロボットが動作開始位置から下流限まで動作し、コンベヤー搬送方向における補正量[mm]を取得します。

この動作は、以下に示すサンプルプログラムを実行することで実施できます。

実施前に以下の設定を行ってください。

  • コンベヤーキャリブレーションの実施
  • Accel, Speed, Toolなどを実稼働と同じに設定する
  • コンベヤートラッキング動作を開始する位置をP0としてティーチングする
  • 動作に必要なポイント2点をティーチングする
    • 1点目: ロボット動作開始位置
    • 2点目: コンベヤー上のトラッキングする位置
  • 実稼働と同じ速度でコンベヤーを動作させる

キーポイント


  • 取得動作は、ティーチングしたトラッキングする位置におけるコンベヤー幅方向座標と高さ方向座標に基づいて動作します。実稼働時と近い設定にしてください。
  • 補正値は、コンベヤー速度, ロボットの加速度, 速度, 姿勢などにより変化します。これらの設定を変更する場合は、再度追従遅れ取得動作をすることを推奨します。
  • このプログラムの注意点
    • 仮想キューに対して動作するため、実際のワークを流す必要はありません。
    • ソフトウェアトリガーを使用していますので、ハードウェアトリガー入力が無いようにしてください。
Function Cnv_Adjust_measure

  'ロボット動作開始位置に移動
  Motor On
  Go P0

  Power High
  Speed 100
  Accel 100, 100
  Cnv_Accel 1, 2000

  'コンベヤー稼働チェック
  If Cnv_Speed(1) < 0.1 Then
    Print "コンベヤーが稼働していません"
    Exit Function
  EndIf

  '仮想ワークをキューに登録する
  Cnv_QueRemove 1, All                   'キューのクリア
  Cnv_Trigger 1                        'コンベヤーパルスをラッチ
  Cnv_QueAdd 1, XY(0, CY(P1@Cnv(1)), CZ(P1@Cnv(1)), CU(P1@Cnv(1)), 0, 0) /CNV(1)
   'P1を基に仮想ワークをキューに登録

  Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
  'キューが追従開始領域内に入るまで待機
  Cnv_Adjust 1, On                       '補正取得動作のフラグをOn

  '動作実行
  Go Cnv_QueGet(1,0)                     'スカラロボットの場合
  'Go Cnv_Queget(1,0):U(90):V(0):W(180)  '6 軸ロボットの場合

  Do
  Wait 0.02
  Loop Until (CX(RealPos@CNV(1)) >= Cnv_Downstream(1))
  '下流限に到達するまで待つ

  Go here                                'ロボット停止
  Cnv_QueRemove 1, All                   'キューの初期化
  Cnv_Adjust 1, Off                      '補正取得動作のフラグをOff
  motor off

  '取得した補正値の結果出力
  If Cnv_AdjustGet(1, 0) = 1 then
   '取得済み、結果表示
   Else
    Print "正しく補正値が取得できませんでした"
    Print "動作結果=", Cnv_AdjustGet(1, 0)
    Print "補正量 =", Cnv_AdjustGet(1, 1)

  EndIf
Fend

キーポイント


  • 補正値は、コントローラーの電源を切るとリセットされます。取得した補正値を、使用するプログラム中にCnv_AdjustSetで設定してください。取得した補正値を記録したい場合は、以下のプログラムを追加することで、Project フォルダ内にファイル保存されます。

    Integer fileNum; String filename$
    fileNum = FreeFile
    filename$ = "ファイル名"
    AOpen filename$ As #fileNum
    Print #fileNum,Cnv_AdjustGet(1,1)
    Close #fileNum
    
  • Cnv_AdjustGet(1,0)の動作結果が "1" (補正値取得済み)にならない場合は、ロボットが追従開始領域内でワークに追いつけなかった、補正値取得動作が100秒を超過した場合が考えられます。AccelやSpeedの設定値, 上下流限の設定, 動作開始位置, コンベヤー速度を見直してください。