<< 前へ        次へ >>

ID : 2894

センサトラッキングのプログラミング例

センサトラッキングする際のプログラミング例を以下に示します。
トラッキング範囲内に納まる長さのワークが対象になります。

用例

センサトラッキングは、以下の3つのプログラムで実現することができます。

  1. 「メインプログラム」

    円形ラッキングに関する初期化処理を行うプログラムです。

  2. 「ワーク検出プログラム」

    ワーク位置の検出とトラッキングバッファへの保存を行うプログラムです。

  3. 「トラッキング動作プログラム」

    検出したワークの位置をトラッキングバッファより読み出し、トラッキング・ピックアップ動作を行うプログラムです。

1. メインプログラム(SensorTracking.pcs (PCS:265B)

コンベア1のトラッキングバッファをクリアし、センサからの信号のトリガ検出を開始します。

TrackInitialize 1, 0

ワーク検出プログラム、トラッキング動作プログラムを並列実行させます。

Run Sensor
Run Tracking

2. ワーク検出プログラム(Sensor.pcs (PCS:2KB)

立ち上がりエッジを検出します。

Wait IO[48] = OFF
Wait IO[48]

最新のセンサの検出座標(エンコーダ値)をworkNum個分トラッキングバッファに追加します。
その際、workNum個分のユーザデータをVariant型の配列として付加することが可能です。

TrackSetSensor 1, workNum, arrayUser

3. トラッキング動作プログラム(Tracking.pcs (PCS:2KB)

TrackStartコマンドで、円形トラッキングを開始する前にホームポジションへ移動します。
円形トラッキング中に、Moveコマンドなどの通常動作コマンドを実行すると、トラッキング動作を中断してしまうので
注意してください。

Move P, P[50]

ワークが検出される度に、トラッキング・ピックアップ動作を行うためのメインループです。
ループを途中で終了できるように、内部I/OのON信号をループの継続条件に設定しています。

Do
    P[10] = TrackTargetPos(1)

    ...

    TrackApproach P, P[10], 50

    ...

LOOP UNTIL IO[128] = ON

ループ内の処理です。

まず、トラッキングバッファからワークのデータを取り出し、トラッキング対象ワークに設定します。
ワーク未検出の場合、ワークが検出され、トラッキングバッファにデータが積まれるまで、この行で待機します。

    P[10] = TrackTargetPos(1)

トラッキングモードの開始を指示します。このコマンドを実行した段階では、ロボットはまだ移動を開始しません。
TrackApproachコマンド等のトラッキング動作コマンドを実行して初めて移動を開始します。

    TrackStart 1

トラッキング対象ワークトラッキング範囲内に入るまで待ちます。

    Wait TrackInRange(1), 10000, timeoutFlg

ターンテーブルと等速になるように追従動作を行いながら、トラッキング対象ワークから50mm上空のアプローチ位置へ移動します。

    TrackApproach P, P[10], 50

ターンテーブルと等速になるように追従動作を行いながら、トラッキング対象ワークへ近づきます。

    TrackMove P, P[10]

ターンテーブルと等速になるように追従動作を行いながら、トラッキング対象ワークから50mm上空へ離れます。

    TrackDepart P, 50

トラッキングモードの終了を指示します。ターンテーブルへの追従動作を終了して減速停止します。
このコマンド実行する前にワークがトラッキング範囲下流限界を越した場合、エラーが発生します。

    TrackStop

ピックアップしたワークを排出位置へ搬送します。

    Approach P, P[52], 50

ID : 2894

<< 前へ        次へ >>